21 votes

Arguments de ligne de commande pour "Connexion Bureau à distance pour Mac" ?

Je n'ai pas trouvé 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 comme argument de ligne de commande à la connexion Bureau à distance pour Mac de Microsoft ?

Quelques informations de base pour ceux qui sont intéressés :

Je suis administrateur système et je suis en train de passer d'un ordinateur portable sous Windows 7 à un Macbook Air comme principal ordinateur de travail. J'utilise fréquemment Remote Desktop Client pour me connecter aux serveurs, et sous Windows, j'utilise Launchy comme lanceur de clavier. J'ai attribué "rdp" comme mot-clé, de sorte que lorsque j'invoque Launchy et que je tape "rdp {tab} nom de serveur", il transmet le texte après la touche de tabulation comme nom d'hôte à mstsc.exe (c'est-à-dire mstsc.exe /v:nom de serveur). Le client de bureau à distance ouvre alors une session sur le nom d'hôte spécifié.

2 votes

Malheureusement, il n'y a pas d'accès en ligne de commande ou en AppleScript pour Remote Desktop Client. J'ai demandé au développeur de CoRD s'il pouvait envisager de l'ajouter à CoRD. Et c'est ainsi que je propose un meilleur client que le client RDP de MS : cordon.sourceforge.net . :)

0 votes

@Ian C., j'avais utilisé CoRD dans le passé, sur mon MacBook personnel... j'ai l'impression que cela fait quelques années. Je n'en étais pas vraiment satisfait 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é que dans l'une de leurs captures d'écran, il était question de gérer les liens rdp://. Cela fait exactement ce que je cherche, alors merci de me renvoyer vers le CoRD ! J'ai pu mettre en place une extension "shell script" dans Alfred qui exécute "open rdp://{query}". Merci !

0 votes

Oh wow. Je n'avais même pas remarqué qu'il gérait les liens rdp://. C'est génial. Je vais faire de mon commentaire une réponse :)

12voto

shsteimer Points 8749

Il n'y a pas d'accès en ligne de commande pour le client Microsoft Remote Desktop. Mais le gratuit et excellent Client de bureau à distance CoRD s'occupe de rdp:// qui vous permettra de l'appeler à partir d'un lanceur de votre choix ou même par l'intermédiaire de open sur la ligne de commande.

Le site Documentation du CoRD sur github explique comment utiliser des paramètres codés par URL pour ouvrir des sessions RDP entièrement configurées.

rdp:// Syntaxe de l'URL

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

Saved Servers

Si vous voulez utiliser rdp:// avec des serveurs sauvegardés existants, vous le pouvez (à partir de la version 0.5.3) ! Utilisez simplement l'étiquette à la place du nom d'hôte :

open rdp://label

Nouveaux serveurs

Depuis un shell (en utilisant le 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 la version 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

Note :

Lorsque vous utilisez des esperluettes (&) à partir de la ligne de commande, elles doivent être échappées par 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, tels que @, :, &, etc. doivent être encodés conformément à la norme ISO 9001:2000. Format d'encodage des URL

Utilisation de la ligne de commande

Le CoRD prend en charge les options de ligne de commande suivantes : -host -port -u -d -p -a [8|16|24|32] définir la profondeur de l'écran -width définir la résolution de l'écran width -height définir la résolution de l'écran height

Exemple

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

Mises en garde

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 cette situation est la présence de plusieurs icônes dans le Dock. Cela annule ou réduit l'efficacité de nombreux points forts de CoRD, notamment les sessions unifiées, etc. Pour cette raison, nous recommandons d'utiliser la commande open et les URL rdp:// pour lancer les sessions.

enter image description here

1 votes

Trop drôle ! Je répondais à ma propre question comme vous y avez répondu aussi. Merci encore pour votre aide !

0 votes

Selon Page GitHub du CdRD ce projet n'est plus maintenu depuis le 16 août 2015.

0 votes

Dommage. C'était bien.

9voto

Levi Points 81

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

Je sais que cela pourrait être poussé plus loin. Par exemple :

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

Voici comment j'ai procédé :

  1. Créez un profil 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'. Il est utilisé dans la commande 'sed' comme chaîne de caractères à rechercher et à remplacer par un vrai nom de serveur.
  2. Créer un script bash pour copier le template.rdp vers un temp.rdp, puis sed le temp.rdp avec le nom d'hôte désiré qui est passé lors de l'invocation du script. J'ai nommé mon script bash 'rdp.sh'.
  3. Modifiez votre '~/.bash_profile' pour inclure un alias vers 'rdp.sh'.
  4. Rendez le script bash exécutable : chmod +x rdp.sh
  5. Bob est votre oncle

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

alias rdp=~/rdp.sh

Rend le script exécutable :

sudo chmod +x rdp.sh

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

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

1 votes

J'ai réussi à faire fonctionner ce concept, mais seulement après quelques modifications. La commande que j'ai utilisée pour lancer RDP était open -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp

8voto

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

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

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

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

Tous les attributs sont documentés sur la page Prise en charge du schéma URI du client du bureau à distance Page TechNet.

0 votes

J'aimerais beaucoup voir des exemples d'URL. Mon port local 3389 est redirigé vers une machine Windows et je me connecte en tant qu'utilisateur "et" en utilisant l'application officielle Microsoft Remote Desktop. Mais je n'arrive pas à construire une URL qui ne donne pas d'erreur.

0 votes

Essayez d'utiliser 127.0.0.2 au lieu de localhost ?

0 votes

Merci. J'ai pu entrer avec rdp://full%20address=s:localhost:3389&audiomode=i:2&disable%‌​20themes=i:1 Je n'ai pas réalisé que cela signifiait littéralement "full%20address". J'ai compris que cela signifiait "remplacer par l'adresse complète", car le modèle d'URI courant est le suivant scheme://host/optional_path?query=value&etc=value Donc, mon cerveau de fin de soirée rejetait l'idée de ne pas avoir de host ou un ? en elle.

2voto

billc Points 446

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

CoRD, en revanche, peut réellement faire ce que je souhaite en gérant les liens rdp://. Après avoir installé CoRD, si vous tapez

open rdp://servername

dans Terminal ou iTerm2, il ouvrira une session vers l'hôte nom du serveur au sein du CoRD.

J'utilise Alfred (http://www.alfredapp.com/) comme mon alternative "Launchy" sur Mac, je viens de le découvrir 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 shell scripts. J'ai donc créé une extension shell scripts, j'ai attribué le mot-clé rdp, je l'ai défini comme "paramètre requis", et j'ai défini le scripts à :

open rdp://{query}

Cela me permet d'invoquer alfred, et de taper rdp {tab} nom du serveur {return} pour ouvrir une session de connexion au bureau à distance sur le serveur distant.

1voto

BaseZen Points 211

Il s'agit donc surtout d'étoffer les autres réponses et d'éviter les bidouillages de scripts :

(TL;DR : ce n'était peut-être pas le cas avant, mais RDP de Microsoft gère maintenant les fichiers .rdp automatiquement avec open )

J'ai déjà beaucoup de profils enregistré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.list pour les humains)

(Plus d'informations : https://macmule.com/2013/10/22/how-to-create-a-microsoft-remote-desktop-8-connection/ )

Pour qu'elle puisse être commandée :

  1. Sélectionnez le profil dans l'interface graphique
  2. Fichier -> Exportation crée le .rdp en notant qu'il n'y aura pas d'informations sur le mot de passe.
  3. (Étudiez le .rdp pour voir comment les paramètres correspondent à la syntaxe manuelle rdp://)
  4. Tout simplement open nom de fichier .rdp à partir de la ligne de commande

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X