Argomenti della riga di comando per "Connessione desktop remoto per Mac"?


19

Non sono stato in grado di trovare alcuna documentazione che indichi che ciò è possibile, ma esiste un modo per passare il nome host a cui si desidera connettersi come argomento da riga di comando a Connessione desktop remoto di Microsoft per Mac?

Alcune informazioni di base per gli interessati:

Sono un amministratore di sistema e sto per passare a un MacBook Air come computer di lavoro principale da un laptop Windows 7. Uso frequentemente Remote Desktop Client per connettermi ai server e in Windows utilizzo Launchy come launcher da tastiera. Ho assegnato "rdp" come parola chiave, quindi quando invoco Launchy, digita "rdp {tab} servername" passa il testo dopo il tasto tab come nome host a mstsc.exe (ovvero mstsc.exe / v: servername) . Ciò comporta l'apertura da parte del client del desktop remoto di una sessione al nome host specificato.


2
Purtroppo, non esiste alcun accesso da riga di comando o accesso AppleScript a Remote Desktop Client. Ho chiesto allo sviluppatore del CoRD se avrebbe preso in considerazione l'idea di aggiungerlo al CoRD. E c'è la mia spina per un client migliore del client RDP di MS: cord.sourceforge.net . :)
Ian C.

@Ian C., avevo usato CoRD in passato, sul mio MacBook personale ... sembra che siano passati alcuni anni. Non ero davvero soddisfatto rispetto alla stabilità e all'aspetto più "raffinato" del client di Microsoft. In realtà l'ho appena scaricato di nuovo, perché ho notato in uno dei loro screenshot, si parlava della gestione dei collegamenti rdp: //. Questo fa esattamente quello che sto cercando, quindi grazie per avermi segnalato di nuovo verso CoRD! Sono stato in grado di impostare un'estensione "shell script" in Alfred che esegue "open rdp: // {query}". Saluti!
billc,

Oh wow Non ho nemmeno notato che gestiva i collegamenti rdp: //. È fantastico Farò una risposta al mio commento. :)
Ian C.

Risposte:


11

Non esiste accesso alla riga di comando per il client desktop remoto Microsoft. Ma il client desktop remoto CoRD gratuito e eccellente gestisce i rdp://collegamenti che ti permetterebbero di chiamarlo da un lanciatore di tua scelta o anche opendalla riga di comando.

La documentazione CoRD su github illustra come è possibile utilizzare i parametri con codifica URL per aprire sessioni RDP completamente configurate.

rdp: // Sintassi dell'URL

CoRD gestisce URL rdp: //, che è possibile utilizzare da molti punti all'interno di OS X. Sfortunatamente, non è possibile estendere la finestra di dialogo "Connetti al server" del Finder, che supporta l'avvio di URL VNC, quindi non è possibile avviare CoRD da lì . Se Apple cambia questo (o se qualcuno è a conoscenza di un modo per estenderlo) ci piacerebbe saperlo.

Saved Servers

Se si desidera utilizzare gli rdp://URL con server salvati esistenti, è possibile (a partire dalla 0.5.3)! Basta usare l'etichetta al posto di un nome host:

open rdp://label

Nuovi server

Da una shell (usando il Terminale):

open rdp://hostname

È possibile utilizzare parametri aggiuntivi per avviare una sessione completamente configurata tramite l'URL:

open rdp://[username[:password]@]hostname[:port][/domain][?parameters]

I seguenti parametri possono essere impostati per la sessione tramite una stringa di query (a partire da 0.5.2):

  • screenDepth ### [8|16|24|32]
  • screenWidth <width in pixels>
  • screenHeight <height in pixels>
  • consoleSession ### [true|false|yes|no]
  • fullscreen ### [true|false|yes|no]
  • windowDrags ### [true|false|yes|no]
  • drawDesktop ### [true|false|yes|no]
  • windowAnimation ### [true|false|yes|no]
  • themes ### [true|false|yes|no]
  • fontSmoothing ### [true|false|yes|no]
  • forwardDisks ### [true|false|yes|no]
  • forwardPrinters ### [true|false|yes|no]
  • forwardAudio ### [0|1|2]
    • 0 - Forward Audio to the Local Machine (Currently not used since CoRD doesn't present audio)
    • 1 - Leave Audio at the Remote Machine
    • 2 - Disable Audio at both Machines

Esempio

open rdp://jsmith:securePassword@hostname.bigco.com/BigCoDomain?screendepth###24\&consoleSession###true\&themes###false\&screenWidth###1280\&screenHeight###800

Nota:

Quando si usano e commerciali (&) dalla riga di comando, devono essere salvati con una barra rovesciata (). I due punti (:) possono essere usati al posto delle e commerciali per lo stesso effetto, senza bisogno di essere salvati.

Le password con caratteri speciali, @,:, &, ecc. Devono essere codificate in base al formato di codifica URL

Utilizzo della riga di comando

CoRD supporta le seguenti opzioni della riga di comando: -host -port -u -d -p -a [8 | 16 | 24 | 32] imposta profondità schermo -width imposta larghezza risoluzione schermo -height imposta altezza risoluzione schermo

Esempio

/Applications/CoRD.app/Contents/MacOS/CoRD -host example.com -port 3389 -u username

Avvertenze

L'avvio di CoRD dalla riga di comando in questo modo provoca l'apertura di una nuova istanza di CoRD. Un sintomo di ciò sono più icone Dock. Ciò sovrascrive o riduce l'efficacia di molti punti di forza del CoRD, comprese le sessioni unificate, ecc. Per questo motivo, si consiglia di utilizzare il comando open e URL rdp: // per avviare le sessioni.

inserisci qui la descrizione dell'immagine


1
Troppo divertente! Stavo rispondendo alla mia domanda mentre tu rispondevi anche tu. Grazie ancora per il vostro aiuto!
billc,

Secondo la pagina CoRD GitHub , questo progetto non sarà più mantenuto dal 16 agosto 2015.
Kenorb,

Pietà. È stato bello.
Ian C.

Questa risposta è obsoleta: le versioni più recenti dei rdp://collegamenti di supporto di Microsoft Remote Desktop per Mac (sebbene utilizzino uno schema diverso). Vedi la risposta di Jack Douglas.
chrstphrchvz,

7

Non amo CoRD. Funziona, ma sembra sfaldarsi periodicamente. Ho creato il mio script CLI per Microsoft RDP. Ho creato uno script sed + open bash per rendere possibile il passaggio di 2 argomenti a Microsoft Remote Desktop Client. Posso passare un nome host e posso passare uno switch per connettermi alla console degli host Server 2003.

So che questo potrebbe essere portato oltre. Per esempio:

  • Il mio script bash non funzionerà con spazi nei percorsi o nei nomi dei file :)
  • Immagino che uno qualsiasi dei dati XML nel file .RDP possa essere modificato con sed.
  • Ho incluso una serie di varianti di uno switch per il collegamento alla console perché sono vecchio e non ricordo mai quale mi piace. Scommetto che lo script bash ha una soluzione più elegante di quanto io usi.

Ecco come l'ho fatto:

  1. Crea un profilo modello Microsoft RDP con tutte le tue impostazioni preferite. Chiamalo "template.rdp". Fallo connettere a un server falso. Ho usato un nome server 'zzxyzyz'. Questo viene usato nel comando 'sed' come stringa da cercare e sostituire con un nome server reale.
  2. Creare uno script bash per copiare template.rdp in un temp.rdp, quindi sed il temp.rdp con il nome host desiderato che viene passato quando si richiama lo script. Ho chiamato il mio script bash 'rdp.sh'.
  3. Modifica il tuo '~ / .bash_profile' per includere un alias in 'rdp.sh'
  4. Rendi eseguibile lo script bash: chmod + x rdp.sh
  5. Lo zio di Bob

Contenuti del mio script bash :

    #! /bin/bash
rdpTemplateFile='/Users/levi/Dropbox/RDC_Connections/RDS/template.rdp'
rdpTempRDP='/Users/levi/Dropbox/RDC_Connections/RDS/t.rdp'
rdpRunCommand="/Applications/Remote Desktop Connection.app/Contents/MacOS/Remote Desktop Connection"
rdpHost=${1}

if [ "${2}" = "/console" ] ; then
    rdpHost="${rdpHost} /console";
    echo "rdpHost is: " ${rdpHost}
fi

if [ "${2}" = "-console" ] ; then
    rdpHost="${rdpHost} /console";
    echo "rdpHost is: " ${rdpHost}
fi

if [ "${2}" = "-admin" ] ; then
    rdpHost="${rdpHost} /console";
    echo "rdpHost is: " ${rdpHost}
fi

cp -f ${rdpTemplateFile} ${rdpTempRDP}

sed -i '' "s|zzxyzyz|${rdpHost}|g" ${rdpTempRDP}

open -na "${rdpRunCommand}" --args ${rdpTempRDP}

Alias ​​aggiunto a .bash_profile
(Ciò presuppone che il mio file di script rdp.sh sia nella mia directory home, ~ /)

alias rdp=~/rdp.sh

Rendi eseguibile lo script:

sudo chmod +x rdp.sh

Esegui lo script:
ecco un esempio che include lo switch di console. Ho lasciato una riga di debug nello script che mostra cosa verrà inserito nel file t.rdp.

LeviMAC>rdp MyServer -console
rdpHost is:  MyServer /console
[~/]
LeviMAC>

Sono stato in grado di far funzionare questo concetto, ma solo dopo alcune modifiche. Il comando che ho usato per avviare RDP è statoopen -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp
Terrabits il

6

Non so quando è cambiato, ma il client desktop remoto Microsoft gestisce i collegamenti rdp: // ora:

Microsoft Remote Desktop utilizza lo schema URI rdp: // query_string per archiviare le impostazioni degli attributi preconfigurate utilizzate all'avvio del client. Le stringhe di query rappresentano una singola o una serie di attributi RDP forniti nell'URL. Gli attributi RDP sono separati dal simbolo e commerciale (&).

Ad esempio, quando ci si collega a un PC, la stringa è:

RDP: // pieno% 20address = s: MyPC: 3389 & audiomode = i: 2 e disabilita% 20themes = i: 1

Tutti gli attributi sono documentati nella pagina TechNet del supporto dello schema URI del client desktop remoto .


Mi piacerebbe vedere alcuni URL di esempio. Ho la mia porta locale 3389 inoltrata a un computer Windows e mi collego come utente "et" utilizzando l'app ufficiale di Microsoft Remote Desktop. Ma non riesco a costruire un URL che non dia un errore.
Bruno Bronosky,

Prova a utilizzare 127.0.0.2 invece di localhost?

1
Hai idee su come archiviare / passare le password?
Bruno Bronosky,

1
Il salvataggio della password nell'app Microsoft Remote Desktop (per Mac) è quello che faccio attualmente. Tuttavia, il mio obiettivo è quello di avviare una connessione a un nuovo IP: Porta tramite la riga di comando dopo aver aperto quella porta tramite tunnel SSH. Sto solo cercando di migliorare il mio script che attualmente termina con "Ora cambia l'host della connessione salvata in 10.10.1.23:5589 e connettiti"
Bruno Bronosky,

1
Per favore fatemi sapere se trovate un modo :)

1

Bene, dopo aver consultato il mio Microsoft TAM, ho scoperto che non c'è modo di passare un nome host al client Microsoft tramite la riga di comando.

Il CoRD, d'altra parte, può effettivamente fare ciò che mi piacerebbe gestendo i collegamenti rdp: //. Dopo aver installato CoRD, se si digita

open rdp://servername

in Terminal o iTerm2, aprirà una sessione al nomeserver host all'interno di CoRD.

Uso Alfred (http://www.alfredapp.com/) come alternativa a "Launchy" su Mac, dopo averlo scoperto dopo essere stato un utente di lunga data di Quicksilver. Ho acquistato il Powerpack per Alfred, che consente di utilizzare una serie di estensioni, una delle quali consente di avviare script di shell. Quindi ho creato un'estensione dello script shell, assegnato la parola chiave rdp, impostata su "parametro richiesto" e impostato lo script su:

open rdp://{query}

Questo mi permette di invocare alfred e digitare rdp {tab} servername {return} per aprire una sessione di Connessione desktop remoto al server remoto.


0

Lo script sopra non funziona con l'ultimo "Microsoft Remote Desktop". Fare riferimento all'applicazione con una variabile era problematico, quindi ho programmato a fondo il percorso (che è diverso dall'esempio originale). Avevo anche bisogno di rimuovere il parametro '--args' e ha iniziato a funzionare.

open -na /Applications/Microsoft\ Remote\ Desktop.app/Contents/MacOS/Microsoft\ Remote\ Desktop ${rdpTempRDP}

0

Quindi, questo è principalmente per arricchire altre risposte ed evitare gli hack di script:

(TL; DR: potrebbe non essere stato vero prima, ma RDP di Microsoft ora gestisce automaticamente i file .rdp con open)

Ho molti profili già memorizzati nella GUI RDP. (A proposito, il plist è ~/Library/Containers/com.microsoft.rdc.mac/Data/Library/Preferences/com.microsoft.rdc.mac.plist, come sempre plutil -convert xml1 xyz.listper l'osservazione umana)

(Ulteriore riferimento: https://macmule.com/2013/10/22/how-to-create-a-microsoft-remote-desktop-8-connection/ )

Per renderlo comandabile:

  1. Seleziona il profilo nella GUI
  2. File -> Esporta crea il .rdpfile, osservando che non avrà informazioni sulla password
  3. (Studia il .rdp per vedere come i parametri corrispondono alla sintassi manuale rdp: //)
  4. Semplicemente opennome file.rdp dalla riga di comando

-1

Penso che sarebbe altrettanto facile creare un modello per ciascun server a cui si desidera connettersi, nonché uno con un campo server vuoto per quelle connessioni "una volta nella vita". Li inserisco semplicemente in una cartella e li nome o numero per ottenere l'ordine giusto. Trascina la cartella sul dock e ho un punto in cui posso fare clic per ottenere un rapido elenco dei modelli rdp che posso quindi fare un solo clic per connettermi. Oppure posso Comando + Spazio e digitare il nome del file e premere Invio per eseguirlo. O PUOI TIPO TIPO TIPO TIPO TIPO e installare tutti i tipi di app di gestione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.