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

18

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

Alcune informazioni di base per gli interessati:

Sono un amministratore di sistema e sto passando a un MacBook Air come mio computer di lavoro principale da un laptop Windows 7. Uso frequentemente il client Desktop remoto per connettersi ai server e, in Windows, utilizzo Launchy come programma di avvio della 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 (cioè, mstsc.exe / v: servername) . Ciò determina il client desktop remoto che apre una sessione con il nome host specificato.

    
posta billc 27.06.2012 - 23:28
fonte

7 risposte

9

Non è disponibile l'accesso alla riga di comando per il client Microsoft Remote Desktop. Ma il client desktop remoto CoRD gratuito e più eccellente gestisce i link rdp:// che ti consentono di chiamarlo da un programma di avvio di tua scelta o anche tramite open sulla riga di comando.

La documentazione di CoRD su github illustra come utilizzare i parametri codificati URL per aprirli completamente -Le sessioni RDP configurate.

rdp: // sintassi URL

CoRD gestisce gli URL rdp: //, che puoi usare da molti posti all'interno di OS X. Sfortunatamente, non c'è modo di estendere la finestra di dialogo "Connetti al server" del Finder, che supporta l'avvio degli URL VNC, quindi non possiamo lanciare CoRD da lì. Se Apple lo cambia (o se qualcuno è a conoscenza di un modo per estenderlo) ci piacerebbe sentirlo.

Saved Servers

If you want to use rdp:// urls with existing saved servers, you can (as of 0.5.3)! Just use the label in place of a hostname:

open rdp://label

New Servers

From a shell (using Terminal):

open rdp://hostname

Additional parameters can be used to start a fully-configured session via the URL:

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

The following parameters can be set for the session via a query string (as of 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

Example

open rdp://jsmith:[email protected]/BigCoDomain?screendepth###24\&consoleSession###true\&themes###false\&screenWidth###1280\&screenHeight###800

Note:

When using ampersands (&) from the command line, they have to be escaped with a backslash (). Colons (:) can be used in place of ampersands for the same effect, without needing to be escaped.

Passwords with any special characters in them, @, :, &, etc need to be encoded according to the URL Encoding Format

Command Line Use

CoRD supports the following command line options: -host -port -u -d -p -a [8|16|24|32] set screen depth -width set screen resolution width -height set screen resolution height

Example

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

Caveats

Launching CoRD from the command line this way causes a fresh instance of CoRD to be opened. One symptom of this is multiple Dock icons. This overrides or decreases the effectiveness of many of CoRD strong points, including unified sessions, etc. For that reason, we recommend using the open command, and rdp:// URLs to launch sessions.

    
risposta data 28.06.2012 - 00:37
fonte
7

Non amo la 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 al client Microsoft Remote Desktop. Posso passare un nome host e posso lanciare un interruttore per connettermi alla console degli host Server 2003.

So che questo potrebbe essere portato oltre. Ad esempio:

  • Il mio script di bash non funzionerà con gli 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 un certo numero di varianti di uno switch per il collegamento alla console perché sono vecchio e non riesco mai a ricordare quale mi piace. Scommetto che bash scripting ha una soluzione più elegante di quella che uso.

Ecco come l'ho fatto:

  1. Crea un profilo di 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 vero nome del server.
  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 di bash: chmod + x rdp.sh
  5. Il tuo zio di Bob

Contenuto 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>
    
risposta data 23.03.2013 - 16:17
fonte
4

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

Microsoft Remote Desktop uses the URI scheme rdp://query_string to store pre-configured attribute settings that are used when launching the client. The query strings represent a single or set of RDP attributes provided in the URL. The RDP attributes are separated by the ampersand symbol (&).

For example, when connecting to a PC, the string is:

rdp://full%20address=s:mypc:3389&audiomode=i:2&disable%20themes=i:1

Tutti gli attributi sono documentati sul supporto per lo schema URI client desktop remoto pagina TechNet

    
risposta data 07.08.2015 - 10:51
fonte
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.

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

open rdp://servername

in Terminale o iTerm2, aprirà una sessione per l'host servername all'interno di CoRD.

Uso Alfred (http://www.alfredapp.com/) come alternativa al mio "Launchy" su Mac, dopo averlo scoperto da utente di lunga data di Quicksilver. Ho acquistato Powerpack per Alfred, che consente di utilizzare un certo numero di estensioni, una delle quali dà la possibilità di avviare script di shell. Così ho creato un'estensione script di shell, assegnata la parola chiave rdp, l'ho impostata su "parameter required" e ho impostato lo script su:

open rdp://{query}

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

    
risposta data 28.06.2012 - 00:38
fonte
0

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

open -na /Applications/Microsoft\ Remote\ Desktop.app/Contents/MacOS/Microsoft\ Remote\ Desktop ${rdpTempRDP}
    
risposta data 21.04.2017 - 21:23
fonte
0

Quindi questo è principalmente per dare più risposte ed evitare gli hack degli script:

(TL; DR: potrebbe non essere stato vero prima, ma il RDP di Microsoft ora gestisce i file .rdp automaticamente 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.list per la visualizzazione umana)

(Ulteriori riferimenti: link )

Per renderlo commandlineable:

  1. Seleziona il profilo nella GUI
  2. File - > Esporta crea il file .rdp , notando che mancherà di informazioni sulla password
  3. (Studia il .rdp per vedere come i parametri corrispondono alla rdp: // sintassi manuale
  4. Semplicemente open nomefile .rdp dalla riga di comando
risposta data 09.05.2018 - 16:40
fonte
-1

Penso che sarebbe altrettanto facile creare un modello per ogni server a cui ci si vuole connettere, così come uno con un campo server vuoto per quelle connessioni "una volta nella vita". Li inserisco in una cartella e li nome o li numerico 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 semplicemente fare clic sulla connessione. Oppure posso Command + Space e digitare il nome del file e premere invio per eseguirlo. O PUOI TIPO TIPO TIPO TIPO e installare tutti i tipi di app di gestione.

    
risposta data 03.06.2014 - 15:47
fonte

Leggi altre domande sui tag