Befehlszeilenargumente für "Remotedesktopverbindung für Mac"?

19

Ich konnte keine Dokumentation finden, die darauf hinweist, dass dies möglich ist. Gibt es jedoch eine Möglichkeit, den Hostnamen, mit dem Sie eine Verbindung herstellen möchten, als Befehlszeilenargument an Microsoft Remote Desktop Connection für Mac zu übergeben?

Einige Hintergrundinformationen für Interessierte:

Ich bin ein Systemadministrator und bin dabei, von einem Windows 7-Laptop auf ein MacBook Air als meinen primären Arbeitscomputer umzusteigen. Ich verwende häufig den Remotedesktopclient, um eine Verbindung zu Servern herzustellen, und unter Windows verwende ich Launchy als meinen Tastaturstarter. Ich habe "rdp" als Schlüsselwort zugewiesen. Wenn ich "Launchy" aufrufe, gebe ich "rdp {tab} servername" ein und übergebe den Text nach der Tabulatortaste als Hostnamen an mstsc.exe (dh mstsc.exe / v: servername). . Dies führt dazu, dass der Remotedesktopclient eine Sitzung mit dem angegebenen Hostnamen öffnet.

billc
quelle
2
Leider gibt es keinen Befehlszeilenzugriff oder AppleScript-Zugriff auf den Remotedesktop-Client. Ich habe den CoRD-Entwickler gefragt, ob er in Betracht ziehen würde, es dem CoRD hinzuzufügen. Und es gibt meinen Plug für einen besseren Client als den RDP-Client von MS: cord.sourceforge.net . :)
Ian C.
@ Ian C., ich hatte CoRD in der Vergangenheit auf meinem persönlichen MacBook verwendet ... es fühlt sich an, als ob es ein paar Jahre her wäre. War damit nicht wirklich zufrieden, verglichen mit der Stabilität und dem "polierten" Aussehen von Microsofts Client. Ich habe es gerade noch einmal heruntergeladen, weil ich in einem der Screenshots festgestellt habe, dass die Handhabung von rdp: // -Links erwähnt wurde. Dies macht genau das , wonach ich suche. Vielen Dank, dass Sie mich zurück in Richtung CoRD gelenkt haben! Ich konnte in Alfred eine "Shell-Skript" -Erweiterung einrichten, die "open rdp: // {query}" ausführt. Prost!
Billc
Oh wow. Ich habe nicht einmal bemerkt, dass es mit rdp: // links zu tun hat. Das ist großartig. Ich werde meinen Kommentar zu einer Antwort machen. :)
Ian C.

Antworten:

11

Es gibt keinen Befehlszeilenzugriff für den Microsoft Remote Desktop Client. Der kostenlose und ausgezeichnete CoRD-Remotedesktop-Client verarbeitet jedoch rdp://Links, mit denen Sie ihn von einem Launcher Ihrer Wahl oder sogar über opendie Befehlszeile aufrufen können .

In der CoRD-Dokumentation zu github wird erläutert , wie Sie URL-codierte Parameter verwenden können, um vollständig konfigurierte RDP-Sitzungen zu öffnen.

rdp: // URL-Syntax

CoRD verarbeitet rdp: // -URLs, die Sie in OS X an vielen Stellen verwenden können. Leider gibt es keine Möglichkeit, das Dialogfeld "Mit Server verbinden" von Finder zu erweitern, das das Starten von VNC-URLs unterstützt. Daher können wir CoRD nicht von dort aus starten . Wenn Apple dies ändert (oder jemand weiß, wie man es erweitern kann), würden wir gerne davon hören.

Saved Servers

Wenn Sie rdp://URLs mit vorhandenen gespeicherten Servern verwenden möchten, können Sie (ab 0.5.3)! Verwenden Sie einfach das Etikett anstelle eines Hostnamens:

open rdp://label

Neue Server

Aus einer Shell (mit Terminal):

open rdp://hostname

Zusätzliche Parameter können verwendet werden, um eine vollständig konfigurierte Sitzung über die URL zu starten:

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

Folgende Parameter können für die Sitzung über einen Abfrage-String (ab 0.5.2) eingestellt werden:

  • 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

Beispiel

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

Hinweis:

Wenn Sie ein kaufmännisches Und (&) in der Befehlszeile verwenden, müssen Sie diese mit einem Backslash () maskieren. Doppelpunkte (:) können für den gleichen Effekt anstelle von kaufmännischem Und verwendet werden, ohne dass ein Escapezeichen erforderlich ist.

Passwörter mit Sonderzeichen, @,:, & usw. müssen gemäß dem URL-Codierungsformat codiert werden

Befehlszeilenverwendung

CoRD unterstützt die folgenden Befehlszeilenoptionen: -host -port -u -d -p -a [8 | 16 | 24 | 32] Bildschirmtiefe festlegen -breite Bildschirmauflösung festlegen Breite -höhe Bildschirmauflösung festlegen Höhe

Beispiel

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

Vorbehalte

Wenn Sie CoRD auf diese Weise über die Befehlszeile starten, wird eine neue Instanz von CoRD geöffnet. Ein Symptom hierfür sind mehrere Dock-Symbole. Dies setzt die Wirksamkeit vieler CoRD-Stärken außer Kraft oder verringert sie, einschließlich einheitlicher Sitzungen usw. Aus diesem Grund empfehlen wir, den Befehl open und die URL rdp: // zum Starten von Sitzungen zu verwenden.

Bildbeschreibung hier eingeben

Ian C.
quelle
1
Zu lustig! Ich habe meine eigene Frage beantwortet, als Sie sie auch beantworteten. Danke nochmal für deine Hilfe!
Billc
Laut der Seite von CoRD GitHub wird dieses Projekt seit dem 16. August 2015 nicht mehr gepflegt.
kenorb 06.04.18
Das Mitleid. Es war gut.
Ian C.
Diese Antwort ist veraltet: Neuere Versionen von Microsoft Remote Desktop für Mac unterstützen rdp://Links (obwohl sie ein anderes Schema verwenden). Siehe Jack Douglas 'Antwort.
chrstphrchvz
7

Ich liebe CoRD nicht. Es funktioniert, aber es scheint sich in regelmäßigen Abständen abzuzeichnen. Ich habe mein eigenes CLI-Skript für Microsoft RDP erstellt. Ich habe ein sed + open-Bash-Skript erstellt, um die Übergabe von zwei Argumenten an Microsoft Remote Desktop Client zu ermöglichen. Ich kann einen Hostnamen übergeben und einen Schalter betätigen, um eine Verbindung zur Konsole von Server 2003-Hosts herzustellen.

Ich weiß, dass dies weitergeführt werden könnte. Beispielsweise:

  • Mein Bash-Skript funktioniert nicht mit Leerzeichen in den Pfaden oder Dateinamen :)
  • Ich stelle mir vor, dass alle XML-Daten in der .RDP-Datei mit sed geändert werden könnten.
  • Ich habe eine Reihe von Variationen eines Schalters für die Verbindung mit der Konsole hinzugefügt, da ich alt bin und mich nie erinnern kann, welchen ich mag. Ich wette, dass Bash-Scripting eine elegantere Lösung bietet als ich.

So habe ich es gemacht:

  1. Erstellen Sie ein Microsoft RDP-Vorlagenprofil mit all Ihren bevorzugten Einstellungen. Nennen Sie es "template.rdp". Stellen Sie eine Verbindung zu einem gefälschten Server her. Ich habe den Servernamen 'zzxyzyz' verwendet. Dies wird im Befehl 'sed' als Zeichenfolge zum Suchen und Ersetzen durch einen echten Servernamen verwendet.
  2. Erstellen Sie ein Bash-Skript, um die Datei template.rdp in eine temporäre Datei zu kopieren, und setzen Sie dann die temporäre Datei mit dem gewünschten Hostnamen ab, der beim Aufrufen des Skripts übergeben wird. Ich habe mein Bash-Skript "rdp.sh" genannt.
  3. Ändern Sie Ihr '~ / .bash_profile' so, dass es einen Alias ​​für 'rdp.sh' enthält
  4. Machen Sie das Bash-Skript ausführbar: chmod + x rdp.sh
  5. Bob ist dein Onkel

Inhalt meines Bash-Skripts :

    #! /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 ​​zu .bash_profile hinzugefügt
(Dies setzt voraus, dass sich meine Skriptdatei rdp.sh in meinem Ausgangsverzeichnis befindet, ~ /)

alias rdp=~/rdp.sh

Machen Sie das Skript ausführbar:

sudo chmod +x rdp.sh

Führen Sie das Skript aus:
Hier ist ein Beispiel, das den Console Switch enthält. Ich habe eine Debug-Zeile im Skript hinterlassen, die zeigt, was in die t.rdp-Datei geschrieben wird.

LeviMAC>rdp MyServer -console
rdpHost is:  MyServer /console
[~/]
LeviMAC>
Levi
quelle
Ich konnte dieses Konzept umsetzen, allerdings erst nach einigen Änderungen. Der Befehl, mit dem ich RDP gestartet habe, lauteteopen -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp
Terrabits 21.06.17
6

Ich weiß nicht, wann sich dies geändert hat, aber der Microsoft Remote Desktop Client verarbeitet jetzt rdp: // links:

Microsoft Remote Desktop verwendet das URI-Schema rdp: // query_string, um vorkonfigurierte Attributeinstellungen zu speichern, die beim Starten des Clients verwendet werden. Die Abfragezeichenfolgen stellen eine einzelne oder eine Reihe von RDP-Attributen dar, die in der URL bereitgestellt werden. Die RDP-Attribute werden durch das kaufmännische Und-Zeichen (&) getrennt.

Wenn Sie beispielsweise eine Verbindung zu einem PC herstellen, lautet die Zeichenfolge:

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

Alle Attribute werden auf der TechNet-Seite zur Unterstützung des Remotedesktop- Client-URI-Schemas dokumentiert .


quelle
Ich würde gerne ein paar Beispiel-URLs sehen. Ich habe meinen lokalen Port 3389 an einen Windows-Computer weitergeleitet und verbinde mich als Benutzer "et" mit der offiziellen Microsoft Remote Desktop-App. Ich kann jedoch keine URL erstellen, die keinen Fehler ausgibt.
Bruno Bronosky
Versuchen Sie es mit 127.0.0.2 anstelle von localhost?
1
Haben Sie Ideen zum Speichern / Weitergeben von Passwörtern?
Bruno Bronosky
1
Das Speichern des Kennworts in der Microsoft Remote Desktop-App (für Mac) ist das, was ich derzeit mache. Mein Ziel ist es jedoch, eine Verbindung zu einem neuen IP: Port über die Befehlszeile herzustellen, nachdem dieser Port über den SSH-Tunnel geöffnet wurde. Ich versuche nur, mein Skript zu verbessern, das derzeit mit "Jetzt den Host der gespeicherten Verbindung auf 10.10.1.23:5589 ändern und verbinden"
endet
1
Bitte lass es mich wissen, wenn du einen Weg
1

Nun, nach Rücksprache mit meinem Microsoft-TAM habe ich festgestellt, dass es keine Möglichkeit gibt, dem Microsoft-Client einen Hostnamen über die Befehlszeile zu übergeben.

Auf der anderen Seite kann CoRD mit rdp: // links das tun, was ich möchte. Wenn Sie nach der Installation von CoRD Folgendes eingeben

open rdp://servername

In Terminal oder iTerm2 wird eine Sitzung mit dem Host- Servernamen in CoRD geöffnet.

Ich verwende Alfred (http://www.alfredapp.com/) als meine "Launchy" -Alternative auf dem Mac, nachdem ich es gerade als langjähriger Benutzer von Quicksilver entdeckt habe. Ich habe das Powerpack für Alfred gekauft, mit dem Sie eine Reihe von Erweiterungen verwenden können, von denen eine die Möglichkeit bietet, Shell-Skripte zu starten. Also habe ich eine Shell-Skript-Erweiterung erstellt, das Schlüsselwort rdp zugewiesen, es auf "Erforderlicher Parameter" gesetzt und das Skript auf:

open rdp://{query}

Dadurch kann ich Alfred aufrufen und rdp {tab} servername {return} eingeben, um eine Remotedesktopverbindungssitzung mit dem Remoteserver zu öffnen.

billc
quelle
0

Das obige Skript funktioniert nicht mit dem neuesten "Microsoft Remote Desktop". Das Referenzieren der Anwendung mit einer Variablen war problematisch, daher habe ich den Pfad hart codiert (was sich vom ursprünglichen Beispiel unterscheidet). Ich musste auch den Parameter "--args" entfernen und es fing an zu arbeiten.

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

Das ist also hauptsächlich, um andere Antworten zu konkretisieren und Scripting-Hacks zu vermeiden:

(TL; DR: war vielleicht vorher nicht wahr, aber Microsofts RDP behandelt jetzt .rdp-Dateien automatisch mit open)

Ich habe bereits viele Profile in der RDP-Benutzeroberfläche gespeichert. (Übrigens ist die Pliste ~/Library/Containers/com.microsoft.rdc.mac/Data/Library/Preferences/com.microsoft.rdc.mac.plist, wie immer plutil -convert xml1 xyz.listfür die menschliche Betrachtung)

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

So machen Sie es befehlsfähig:

  1. Wählen Sie das Profil in der GUI aus
  2. Datei -> Exportieren erstellt die .rdpDatei mit dem Hinweis, dass die Kennwortinformationen fehlen
  3. (Sehen Sie sich die .rdp-Datei an, um zu sehen, wie die Parameter der manuellen rdp: // -Syntax entsprechen.)
  4. Einfach openDateiname.rdp von der Kommandozeile
BaseZen
quelle
-1

Ich denke, es wäre genauso einfach, eine Vorlage für jeden Server zu erstellen, zu dem Sie eine Verbindung herstellen möchten, sowie eine Vorlage mit einem leeren Serverfeld für diese "einmaligen" Verbindungen. Ich lege sie einfach in einen Ordner und benenne oder nummeriere sie, um die richtige Reihenfolge zu erreichen. Ziehen Sie den Ordner in das Dock und ich habe einen Punkt, auf den ich klicken kann, um eine schnelle Liste der RDP-Vorlagen zu erhalten, die ich dann mit einem Klick verbinden kann. Oder ich kann Command + Space und den Namen der Datei eingeben und die Eingabetaste drücken, um sie auszuführen. ODER SIE KÖNNEN TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP TYP

Randy Travis
quelle