Arguments de ligne de commande pour «Connexion Bureau à distance pour Mac»?


19

Je n'ai pas pu trouver de documentation indiquant que cela est possible, mais existe-t-il un moyen de transmettre le nom d'hôte auquel vous souhaitez vous connecter en tant qu'argument de ligne de commande à la connexion Bureau à distance de Microsoft pour Mac?

Quelques informations générales pour les personnes intéressées:

Je suis administrateur système et je suis en train de passer à un MacBook Air comme ordinateur de travail principal à partir d'un ordinateur portable Windows 7. J'utilise fréquemment Remote Desktop Client pour me connecter aux serveurs et sous Windows, j'utilise Launchy comme lanceur de clavier. J'ai assigné "rdp" comme mot-clé donc quand j'appelle Launchy, tapez "rdp {tab} servername" il passe le texte après la touche tab comme nom d'hôte à mstsc.exe (ie, mstsc.exe / v: servername) . Il en résulte que le client de bureau distant ouvre une session sur le nom d'hôte spécifié.


2
Malheureusement, il n'y a pas d'accès en ligne de commande ou d'accès AppleScript au client Bureau à distance. J'ai cependant demandé au développeur CoRD s'il envisageait de l'ajouter à CoRD. Et il y a ma prise pour un meilleur client que le client RDP de MS: cord.sourceforge.net . :)
Ian C.

@Ian C., j'avais utilisé CoRD dans le passé, sur mon MacBook personnel ... on dirait que ça fait quelques années. Je n'étais pas vraiment satisfait de cela par rapport à la stabilité et à l'aspect plus "poli" du client de Microsoft. En fait, je viens de le télécharger à nouveau, car j'ai remarqué dans l'une de leurs captures d'écran, qu'il était question de gérer les liens rdp: //. Cela fait exactement ce que je recherche, alors merci de me diriger vers CoRD! J'ai pu mettre en place une extension "shell script" dans Alfred qui exécute "open rdp: // {query}". À votre santé!
billc

Oh wow. Je n'ai même pas remarqué qu'il traitait les liens rdp: //. C'est génial. Je ferai de mon commentaire une réponse. :)
Ian C.

Réponses:


11

Il n'y a pas d'accès en ligne de commande pour le client Microsoft Remote Desktop. Mais le libre et le plus excellent client de bureau à distance CORD ne gère les rdp://liens qui vous permettra de l' appeler à partir d' un lanceur de votre choix ou même via openla ligne de commande.

La documentation CoRD sur github explique comment utiliser des paramètres encodés URL pour ouvrir des sessions RDP entièrement configurées.

rdp: // syntaxe d'URL

CoRD gère les URL rdp: //, que vous pouvez utiliser à de nombreux endroits dans OS X. Malheureusement, il n'y a aucun moyen d'étendre la boîte de dialogue "Se connecter au serveur" du Finder, qui prend en charge le lancement des URL VNC, nous ne pouvons donc pas lancer CoRD à partir de là . Si Apple change cela (ou si quelqu'un est au courant d'un moyen de l'étendre), nous aimerions en entendre parler.

Saved Servers

Si vous souhaitez utiliser des rdp://URL avec des serveurs enregistrés existants, vous pouvez (à partir de 0.5.3)! Utilisez simplement l'étiquette à la place d'un nom d'hôte:

open rdp://label

Nouveaux serveurs

Depuis un shell (à l'aide de Terminal):

open rdp://hostname

Des paramètres supplémentaires peuvent être utilisés pour démarrer une session entièrement configurée via l'URL:

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

Les paramètres suivants peuvent être définis pour la session via une chaîne de requête (à partir de 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

Exemple

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

Remarque:

Lorsque vous utilisez des esperluettes (&) à partir de la ligne de commande, vous devez les échapper avec une barre oblique inverse (). Les deux points (:) peuvent être utilisés à la place des esperluettes pour le même effet, sans avoir besoin d'être échappés.

Les mots de passe contenant des caractères spéciaux, @,:, &, etc. doivent être codés conformément au format de codage URL

Utilisation de la ligne de commande

CoRD prend en charge les options de ligne de commande suivantes: -host -port -u -d -p -a [8 | 16 | 24 | 32] set screen depth -width set screen resolution width -height set screen resolution height

Exemple

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

Avertissements

Le lancement de CoRD à partir de la ligne de commande de cette manière entraîne l'ouverture d'une nouvelle instance de CoRD. Un symptôme de cela est plusieurs icônes Dock. Cela annule ou diminue l'efficacité de nombreux points forts de CoRD, y compris les sessions unifiées, etc. Pour cette raison, nous vous recommandons d'utiliser la commande open et les URL rdp: // pour lancer les sessions.

entrez la description de l'image ici


1
Trop drôle! Je répondais à ma propre question pendant que vous y répondiez également. Merci encore pour votre aide!
billc

Selon la page CoRD GitHub , ce projet n'est plus maintenu au 16 août 2015.
kenorb

Pitié. C'était bon.
Ian C.

Cette réponse est obsolète: les versions plus récentes de Microsoft Remote Desktop pour Mac prennent en charge les rdp://liens (mais en utilisant un schéma différent). Voir la réponse de Jack Douglas.
chrstphrchvz

7

Je n'aime pas CoRD. Cela fonctionne, mais il semble s'écailler périodiquement. J'ai créé mon propre script CLI pour Microsoft RDP. J'ai créé un script sed + open bash pour permettre de passer 2 arguments à Microsoft Remote Desktop Client. Je peux passer un nom d'hôte et je peux lancer un commutateur pour me connecter à la console des hôtes Server 2003.

Je sais que cela pourrait aller plus loin. Par exemple:

  • Mon script bash ne fonctionnera pas avec des espaces dans les chemins ou les noms de fichiers :)
  • J'imagine que l'une des données XML du fichier .RDP pourrait être modifiée avec sed.
  • J'ai inclus un certain nombre de variantes d'un interrupteur pour la connexion à la console, car je suis vieux et je ne me souviens jamais lequel j'aime. Je parie que le script bash a une solution plus élégante que celle que j'utilise.

Voici comment je l'ai fait:

  1. Créez un profil de modèle Microsoft RDP avec tous vos paramètres préférés. Nommez-le «template.rdp». Faites-le se connecter à un faux serveur. J'ai utilisé un nom de serveur «zzxyzyz». Ceci est utilisé dans la commande «sed» comme chaîne à rechercher et à remplacer par un vrai nom de serveur.
  2. Créez un script bash pour copier le template.rdp dans un temp.rdp, puis sed le temp.rdp avec le nom d'hôte souhaité qui est transmis lors de l'appel du script. J'ai nommé mon script bash «rdp.sh».
  3. Modifiez votre '~ / .bash_profile' pour inclure un alias à 'rdp.sh'
  4. Rendre le script bash exécutable: chmod + x rdp.sh
  5. L'oncle de Bob

Contenu de mon 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 ​​ajouté à .bash_profile
(Cela suppose que mon fichier de script rdp.sh se trouve dans mon répertoire personnel, ~ /)

alias rdp=~/rdp.sh

Rendez le script exécutable:

sudo chmod +x rdp.sh

Exécutez le script:
voici un exemple qui inclut le commutateur de console. J'ai laissé une ligne de débogage dans le script qui montre ce qui va être intégré dans le fichier t.rdp.

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

J'ai pu faire fonctionner ce concept, mais seulement après quelques modifications. La commande que j'ai utilisée pour démarrer RDP étaitopen -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp
Terrabits

6

Je ne sais pas quand cela a changé, mais le client Microsoft Remote Desktop gère les liens rdp: // maintenant:

Microsoft Remote Desktop utilise le schéma URI rdp: // query_string pour stocker les paramètres d'attribut préconfigurés qui sont utilisés lors du lancement du client. Les chaînes de requête représentent un seul ou un ensemble d'attributs RDP fournis dans l'URL. Les attributs RDP sont séparés par le symbole esperluette (&).

Par exemple, lors de la connexion à un PC, la chaîne est:

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

Tous les attributs sont documentés sur la page TechNet de prise en charge du schéma d'URI du client Bureau à distance .


J'AIMERAIS voir quelques exemples d'URL. J'ai mon port local 3389 transmis à une machine Windows et je me connecte en tant qu'utilisateur "et" en utilisant l'application officielle Microsoft Remote Desktop. Mais, je ne peux pas construire une URL qui ne donne pas d'erreur.
Bruno Bronosky

Essayez d'utiliser 127.0.0.2 au lieu de localhost?

1
Vous avez des idées sur la façon de stocker / passer des mots de passe?
Bruno Bronosky

1
Enregistrer le mot de passe dans l'application Microsoft Remote Desktop (pour Mac) est ce que je fais actuellement. Cependant, mon objectif est de lancer une connexion à un nouvel IP: Port via la ligne de commande après avoir ouvert ce port via le tunnel ssh. J'essaie juste d'améliorer mon script qui se termine actuellement par "Maintenant, changez l'hôte de la connexion enregistrée en 10.10.1.23:5589 et connectez-vous"
Bruno Bronosky

1
S'il vous plaît laissez-moi savoir si vous trouvez un moyen :)

1

Eh bien, après avoir consulté mon Microsoft TAM, j'ai constaté qu'il n'y avait aucun moyen de passer un nom d'hôte au client Microsoft via la ligne de commande.

CoRD, d'autre part, peut réellement faire ce que j'aimerais en gérant les liens rdp: //. Après avoir installé CoRD, si vous tapez

open rdp://servername

dans le Terminal ou iTerm2, il ouvrira une session à l'hôte servername au sein cordelette.

J'utilise Alfred (http://www.alfredapp.com/) comme alternative "Launchy" sur Mac, après l'avoir découvert après avoir été un utilisateur de longue date de Quicksilver. J'ai acheté le Powerpack pour Alfred, qui vous permet d'utiliser un certain nombre d'extensions, dont l'une lui donne la possibilité de lancer des scripts shell. J'ai donc créé une extension de script shell, affecté le mot-clé rdp, défini le "paramètre requis" et défini le script sur:

open rdp://{query}

Cela me permet d'appeler alfred et de taper rdp {tab} servername {return} pour ouvrir une session de connexion Bureau à distance au serveur distant.


0

Le script ci-dessus ne fonctionne pas avec le dernier "Microsoft Remote Desktop". Référencer l'application avec une variable était problématique, j'ai donc codé en dur le chemin (qui est différent de l'exemple d'origine). J'ai également dû supprimer le paramètre «--args» et cela a commencé à fonctionner.

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

0

Il s'agit donc principalement d'étoffer d'autres réponses et d'éviter les hacks de script:

(TL; DR: peut-être pas vrai auparavant, mais le RDP de Microsoft gère désormais automatiquement les fichiers .rdp avec open)

J'ai beaucoup de profils déjà stockés dans l'interface graphique RDP. (BTW, le plist est ~/Library/Containers/com.microsoft.rdc.mac/Data/Library/Preferences/com.microsoft.rdc.mac.plist, comme toujours plutil -convert xml1 xyz.listpour le visionnement humain)

(Référence supplémentaire: https://macmule.com/2013/10/22/how-to-create-a-microsoft-remote-desktop-8-connection/ )

Pour le rendre commandable:

  1. Sélectionnez le profil dans l'interface graphique
  2. Fichier -> Exporter crée le .rdpfichier, notant qu'il manquera les informations de mot de passe
  3. (Étudiez le .rdp pour voir comment les paramètres correspondent à la syntaxe manuelle rdp: //)
  4. Nom de openfichier simplement .rdpdepuis la ligne de commande

-1

Je pense qu'il serait tout aussi facile de créer un modèle pour chaque serveur auquel vous souhaitez vous connecter, ainsi qu'un modèle avec un champ de serveur vide pour ces connexions "une fois dans la vie". Je les place simplement dans un dossier et je les nomme ou les numérote pour obtenir la bonne commande. Faites glisser le dossier vers le dock et j'ai un endroit sur lequel je peux cliquer pour obtenir une liste rapide des modèles rdp que je peux ensuite simplement cliquer pour me connecter. Ou je peux commander + espace et taper le nom du fichier et appuyez sur Entrée pour l'exécuter. OU VOUS POUVEZ TAPIS TYPEY TYPEY TYPEY et installez toutes sortes d'applications de gestion.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.