Argumenty wiersza polecenia dla „Remote Desktop Connection for Mac”?

19

Nie udało mi się znaleźć żadnej dokumentacji wskazującej, że jest to możliwe, ale czy istnieje jakiś sposób na przekazanie nazwy hosta, z którą chcesz się połączyć, jako argumentu wiersza polecenia w programie Microsoft Remote Desktop Connection dla komputerów Mac?

Kilka podstawowych informacji dla zainteresowanych:

Jestem administratorem systemu i właśnie przechodzę na MacBooka Air jako mój główny komputer roboczy z laptopa z systemem Windows 7. Często używam klienta usług pulpitu zdalnego do łączenia się z serwerami, aw systemie Windows używam Launchy jako programu uruchamiającego klawiaturę. Przypisałem „rdp” jako słowo kluczowe, więc kiedy wywołuję Launchy, wpisz „rdp {tab} nazwa serwera” przekazuje tekst po klawiszu Tab jako nazwę hosta do mstsc.exe (tj. Mstsc.exe / v: nazwa serwera) . Powoduje to, że klient pulpitu zdalnego otwiera sesję pod określoną nazwą hosta.

szt
źródło
2
Niestety nie, nie ma dostępu do wiersza poleceń ani dostępu AppleScript do klienta usług pulpitu zdalnego. Zapytałem jednak programistę CoRD, czy rozważyłby dodanie go do CoRD. I jest moja wtyczka do lepszego klienta niż klient RDP MS: cord.sourceforge.net . :)
Ian C.
@Ian C., w przeszłości korzystałem z CoRD na moim osobistym MacBooku ... mam wrażenie, że minęło kilka lat. Nie był do końca zadowolony z stabilności i bardziej „dopracowanego” wyglądu klienta Microsoftu. Właśnie pobrałem go ponownie, ponieważ zauważyłem na jednym z ich zrzutów ekranu, że wspomniano o obsłudze linków rdp: //. Robi dokładnie to , czego szukam, więc dziękuję za skierowanie mnie z powrotem w kierunku CoRD! Udało mi się skonfigurować rozszerzenie „script script” w Alfred, które wykonuje „open rdp: // {query}”. Twoje zdrowie!
billc
Och wow. Nawet nie zauważyłem, że obsługuje rdp: // links. To cudownie. Uczynię mój komentarz odpowiedzią. :)
Ian C.

Odpowiedzi:

11

Klient Microsoft Remote Desktop nie ma dostępu do wiersza poleceń. Ale darmowy i najdoskonalszy klient pulpitu zdalnego CoRD obsługuje rdp://łącza, które pozwoliłyby Ci zadzwonić z wybranego programu uruchamiającego lub nawet za openpomocą wiersza poleceń.

Dokumentacja CoRD na github określa, jak używać parametrów zakodowanych w adresie URL do otwierania w pełni skonfigurowanych sesji RDP.

rdp: // składnia adresu URL

CoRD obsługuje adresy URL rdp: //, których można używać z wielu miejsc w systemie OS X. Niestety nie ma możliwości rozszerzenia okna dialogowego Finder „Połącz z serwerem”, które obsługuje uruchamianie adresów URL VNC, więc nie możemy stąd uruchomić CoRD . Jeśli Apple to zmieni (lub jeśli ktoś wie, jak to przedłużyć), chcielibyśmy o tym usłyszeć.

Saved Servers

Jeśli chcesz używać rdp://adresów URL z istniejącymi zapisanymi serwerami, możesz (od wersji 0.5.3)! Wystarczy użyć etykiety zamiast nazwy hosta:

open rdp://label

Nowe serwery

Z powłoki (za pomocą terminalu):

open rdp://hostname

Można użyć dodatkowych parametrów, aby rozpocząć w pełni skonfigurowaną sesję za pomocą adresu URL:

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

Następujące parametry można ustawić dla sesji za pomocą ciągu zapytania (od wersji 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

Przykład

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

Uwaga:

Gdy używasz ampersandów (&) z wiersza poleceń, należy je zamykać za pomocą odwrotnego ukośnika (). Dwukropki (:) mogą być używane zamiast ampersand dla tego samego efektu, bez konieczności ucieczki.

Hasła zawierające dowolne znaki specjalne, @,: i itd. Muszą być kodowane zgodnie z formatem kodowania adresów URL

Korzystanie z wiersza poleceń

CoRD obsługuje następujące opcje wiersza poleceń: -host -port -u -d -p -a [8 | 16 | 24 | 32] ustaw głębokość ekranu - szerokość ustaw rozdzielczość ekranu szerokość - wysokość ustaw rozdzielczość ekranu

Przykład

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

Ostrzeżenia

Uruchomienie CoRD z wiersza poleceń w ten sposób powoduje otwarcie nowej instancji CoRD. Jednym z symptomów tego jest wiele ikon Docku. Zastępuje to lub zmniejsza skuteczność wielu mocnych stron CoRD, w tym sesji zunifikowanych itp. Z tego powodu zalecamy uruchamianie sesji za pomocą polecenia open i adresów URL rdp: //.

wprowadź opis zdjęcia tutaj

Ian C.
źródło
1
Zbyt śmieszne! Odpowiedziałem na moje pytanie, na które również odpowiedziałeś. Jeszcze raz dziękuję za pomoc!
billc
Według strony GitHub CoRD ten projekt nie jest już obsługiwany od 16 sierpnia 2015 r.
kenorb
Szkoda. To było dobre.
Ian C.
Ta odpowiedź jest nieaktualna: nowsze wersje Microsoft Remote Desktop dla komputerów Mac obsługują rdp://łącza (choć używają innego schematu). Zobacz odpowiedź Jacka Douglasa.
chrstphrchvz
7

Nie kocham CoRD. Działa, ale wydaje się okresowo płatkować. Zrobiłem własny skrypt CLI dla Microsoft RDP. Stworzyłem skrypt sed + open bash, aby umożliwić przekazanie 2 argumentów do klienta Microsoft Remote Desktop. Mogę podać nazwę hosta i mogę rzucić przełącznik, aby połączyć się z konsolą hostów Server 2003.

Wiem, że można to zrobić dalej. Na przykład:

  • Mój skrypt bash nie będzie działał ze spacjami w ścieżkach lub nazwach plików :)
  • Wyobrażam sobie, że jakiekolwiek dane XML w pliku .RDP mogłyby zostać zmodyfikowane przy pomocy sed.
  • Dołączyłem kilka wariantów przełącznika do łączenia z konsolą, ponieważ jestem stary i nigdy nie pamiętam, który mi się podoba. Założę się, że skrypty bash mają bardziej eleganckie rozwiązanie niż używam.

Oto jak to zrobiłem:

  1. Utwórz profil szablonu Microsoft RDP ze wszystkimi preferowanymi ustawieniami. Nazwij go „template.rdp”. Połącz się z fałszywym serwerem. Użyłem nazwy serwera „zzxyzyz”. Jest to używane w poleceniu „sed” jako ciąg do wyszukiwania i zastępowania prawdziwą nazwą serwera.
  2. Utwórz skrypt bash, aby skopiować plik template.rdp do temp.rdp, a następnie sed temp.rdp z żądaną nazwą hosta, która zostanie przekazana podczas wywoływania skryptu. Nazwałem skrypt bash „rdp.sh”.
  3. Zmodyfikuj plik „~ / .bash_profile”, aby uwzględnić alias w pliku „rdp.sh”
  4. Ustaw skrypt bash jako wykonywalny: chmod + x rdp.sh
  5. Wujek Boba

Zawartość mojego skryptu 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 ​​dodany do .bash_profile
(Zakłada się, że mój plik skryptu rdp.sh znajduje się w moim katalogu domowym, ~ /)

alias rdp=~/rdp.sh

Ustaw skrypt jako wykonywalny:

sudo chmod +x rdp.sh

Uruchom skrypt:
Oto przykład, który zawiera przełącznik konsoli. Zostawiłem w skrypcie linię debugującą, która pokazuje, co zostanie umieszczone w pliku t.rdp.

LeviMAC>rdp MyServer -console
rdpHost is:  MyServer /console
[~/]
LeviMAC>
Levi
źródło
Udało mi się uruchomić tę koncepcję, ale dopiero po pewnych modyfikacjach. Komenda Kiedyś było rozpocząć RDPopen -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp
Terrabits
6

Nie wiem, kiedy to się zmieniło, ale klient Microsoft Remote Desktop obsługuje teraz łącza rdp: //:

Pulpit zdalny Microsoft używa schematu URI rdp: // ciąg_danych do przechowywania wstępnie skonfigurowanych ustawień atrybutów używanych podczas uruchamiania klienta. Ciągi zapytania reprezentują pojedynczy lub zestaw atrybutów RDP podany w adresie URL. Atrybuty RDP są oddzielone znakiem ampersand (&).

Na przykład po podłączeniu do komputera ciąg jest następujący:

rdp: // pełny% 20adres = s: mypc: 3389 i audiomode = i: 2 i wyłącz% 20themes = i: 1

Wszystkie atrybuty są udokumentowane na stronie TechNet obsługi schematu URI klienta usług pulpitu zdalnego .


źródło
Chciałbym zobaczyć kilka przykładowych adresów URL. Mój port lokalny 3389 został przekazany do komputera z systemem Windows i łączę się jako użytkownik „et” przy użyciu oficjalnej aplikacji Microsoft Remote Desktop. Ale nie mogę utworzyć adresu URL, który nie spowoduje błędu.
Bruno Bronosky,
Spróbuj użyć 127.0.0.2 zamiast localhost?
1
Masz jakieś pomysły dotyczące przechowywania / przekazywania haseł?
Bruno Bronosky,
1
Zapisywanie hasła w aplikacji Microsoft Remote Desktop (dla komputerów Mac) jest obecnie tym, co robię. Jednak moim celem jest uruchomienie połączenia z nowym adresem IP: Port za pomocą wiersza polecenia po otwarciu tego portu przez tunel ssh. Próbuję tylko ulepszyć skrypt, który obecnie kończy się na „Teraz zmień hosta zapisanego połączenia na 10.10.1.23:5589 i połącz”
Bruno Bronosky,
1
Daj mi znać, jeśli znajdziesz sposób :)
1

Po konsultacji z Microsoft TAM odkryłem, że nie ma sposobu na przekazanie nazwy hosta do klienta Microsoft za pośrednictwem wiersza poleceń.

CoRD, z drugiej strony, może faktycznie robić to, co chciałbym, obsługując linki rdp: //. Po zainstalowaniu CoRD, jeśli wpiszesz

open rdp://servername

w terminalu lub iTerm2, otworzy sesję do gospodarza nazwa_serwera w kręgowego.

Używam Alfreda (http://www.alfredapp.com/) jako mojej „Launchy” alternatywy na Macu, właśnie ją odkryłem po długim okresie użytkowania Quicksilver. Kupiłem Powerpack dla Alfreda, który pozwala korzystać z wielu rozszerzeń, z których jedno daje możliwość uruchamiania skryptów powłoki. Więc utworzyłem rozszerzenie skryptu powłoki, przypisałem słowo kluczowe rdp, ustawiłem na „wymagany parametr” i ustawiłem skrypt na:

open rdp://{query}

To pozwala mi wywoływać alfred i wpisać rdp {tab} nazwa serwera {return}, aby otworzyć sesję Podłączania pulpitu zdalnego do zdalnego serwera.

szt
źródło
0

Powyższy skrypt nie działa z najnowszym „Pulpitem zdalnym Microsoft”. Odwoływanie się do aplikacji za pomocą zmiennej było problematyczne, więc na stałe zakodowałem ścieżkę (która różni się od oryginalnego przykładu). Musiałem także usunąć parametr „--args” i zaczął działać.

open -na /Applications/Microsoft\ Remote\ Desktop.app/Contents/MacOS/Microsoft\ Remote\ Desktop ${rdpTempRDP}
William wallace
źródło
0

Ma to głównie na celu uzupełnienie innych odpowiedzi i uniknięcie włamań skryptowych:

(TL; DR: może wcześniej nie było prawdą, ale protokół RDP firmy Microsoft obsługuje teraz automatycznie pliki rdp open)

Mam już wiele profili zapisanych w GUI RDP. (BTW, plist jest ~/Library/Containers/com.microsoft.rdc.mac/Data/Library/Preferences/com.microsoft.rdc.mac.plist, jak zawsze, plutil -convert xml1 xyz.listdo oglądania przez ludzi)

(Więcej informacji: https://macmule.com/2013/10/22/how-to-create-a-microsoft-remote-desktop-8-connection/ )

Aby było to możliwe do polecenia:

  1. Wybierz profil w GUI
  2. Plik -> Eksportuj tworzy .rdpplik, zauważając, że nie będzie zawierał informacji o haśle
  3. (Przestudiuj .rdp, aby zobaczyć, jak parametry odpowiadają ręcznej składni rdp: //)
  4. Po prostu opennazwa pliku.rdp z wiersza poleceń
BaseZen
źródło
-1

Myślę, że równie łatwo byłoby stworzyć szablon dla każdego serwera, z którym chcesz się połączyć, a także taki z pustym polem serwera dla tych połączeń „raz w życiu”. Po prostu umieszczam je w folderze i albo je nazywam, albo numeruję, aby porządek był prawidłowy. Przeciągnij folder do doku i mam miejsce, w którym mogę kliknąć, aby uzyskać szybką listę szablonów rdp, które mogę następnie kliknąć jednym przyciskiem, aby się połączyć. Lub mogę Command + Spacja i wpisz nazwę pliku i naciśnij klawisz Enter, aby go uruchomić. LUB MOŻESZ TYPEY TYPEY TYPEY TYPE i zainstalować wszystkie rodzaje aplikacji do zarządzania.

Randy Travis
źródło