Argumen baris perintah untuk "Remote Desktop Connection for Mac"?

19

Saya belum dapat menemukan dokumentasi yang mengindikasikan ini mungkin, tetapi apakah ada cara untuk meneruskan nama host yang ingin Anda sambungkan sebagai argumen baris perintah ke Remote Desktop Connection untuk Mac dari Microsoft?

Beberapa info latar belakang untuk mereka yang tertarik:

Saya seorang administrator sistem, dan saya sedang dalam proses pindah ke MacBook Air sebagai komputer kerja utama saya dari laptop Windows 7. Saya sering menggunakan Remote Desktop Client untuk terhubung ke server, dan di Windows, saya menggunakan Launchy sebagai peluncur keyboard saya. Saya telah menetapkan "rdp" sebagai kata kunci, jadi ketika saya mengaktifkan Launchy, ketik "rdp {tab} servername" ia meneruskan teks setelah tombol tab sebagai nama host ke mstsc.exe (yaitu, mstsc.exe / v: servername) . Ini menghasilkan klien desktop jarak jauh membuka sesi dengan nama host yang ditentukan.

billc
sumber
2
Sayangnya, tidak ada tidak ada akses baris perintah atau akses AppleScript ke Remote Desktop Client. Saya sudah bertanya kepada pengembang CoRD apakah dia akan mempertimbangkan untuk menambahkannya ke CoRD. Dan ada plug saya untuk klien yang lebih baik daripada klien RDP MS: cord.sourceforge.net . :)
Ian C.
@Ian C., saya pernah menggunakan CoRD di masa lalu, di MacBook pribadi saya ... rasanya sudah beberapa tahun. Tidak benar-benar puas dengan itu dibandingkan dengan stabilitas dan lebih terlihat "dipoles" dari klien Microsoft. Sebenarnya saya baru saja mengunduhnya lagi, karena saya perhatikan di salah satu tangkapan layar mereka, ada yang menyebutkan penanganan rdp: // tautan. Ini melakukan persis apa yang saya cari, jadi terima kasih telah menunjukkan saya kembali ke CoRD! Saya dapat mengatur ekstensi "shell script" di Alfred yang mengeksekusi "open rdp: // {query}". Bersulang!
billc
Oh wow. Saya bahkan tidak menyadari itu menangani rdp: // tautan. Itu luar biasa. Saya akan membuat komentar saya sebagai jawaban. :)
Ian C.

Jawaban:

11

Tidak ada akses baris perintah untuk Microsoft Remote Desktop Client. Tetapi klien desktop jarak jauh CoRD gratis dan paling baik tidak menangani rdp://tautan yang akan memungkinkan Anda memanggilnya dari peluncur pilihan Anda atau bahkan melalui openpada baris perintah.

The dokumentasi kabel di github menjabarkan bagaimana Anda dapat menggunakan URL dikodekan parameter untuk sesi RDP penuh dikonfigurasi terbuka.

rdp: // sintaks URL

CoRD menangani rdp: // URL, yang dapat Anda gunakan dari banyak tempat di dalam OS X. Sayangnya, tidak ada cara untuk memperluas dialog "Connect to Server" Finder, yang mendukung peluncuran URL VNC, jadi kami tidak dapat meluncurkan CoRD dari sana . Jika Apple mengubah ini (atau jika ada yang tahu cara untuk memperpanjangnya) kami akan senang mendengarnya.

Saved Servers

Jika Anda ingin menggunakan rdp://url dengan server tersimpan yang ada, Anda dapat (per 0.5.3)! Cukup gunakan label sebagai ganti nama host:

open rdp://label

Server Baru

Dari shell (menggunakan Terminal):

open rdp://hostname

Parameter tambahan dapat digunakan untuk memulai sesi yang sepenuhnya dikonfigurasi melalui URL:

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

Parameter berikut dapat disetel untuk sesi melalui string kueri (per 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

Contoh

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

catatan:

Saat menggunakan ampersand (&) dari baris perintah, mereka harus lolos dengan garis miring terbalik (). Colons (:) dapat digunakan sebagai ganti ampersand untuk efek yang sama, tanpa perlu melarikan diri.

Kata sandi dengan karakter khusus apa pun di dalamnya, @,:, &, dll. Perlu disandikan sesuai dengan Format Pengodean URL

Penggunaan Baris Perintah

CoRD mendukung opsi baris perintah berikut: -host -port -u -d -p -a [8 | 16 | 24 | 32] mengatur kedalaman layar-lebar bandwidth mengatur resolusi layar -tinggi mengatur tinggi resolusi layar

Contoh

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

Peringatan

Meluncurkan CoRD dari baris perintah dengan cara ini menyebabkan instance baru CoRD dibuka. Salah satu gejala dari ini adalah beberapa ikon Dock. Ini menimpa atau mengurangi keefektifan banyak poin kuat CoRD, termasuk sesi terpadu, dll. Untuk alasan itu, kami sarankan menggunakan perintah terbuka, dan rdp: // URL untuk memulai sesi.

masukkan deskripsi gambar di sini

Ian C.
sumber
1
Terlalu lucu! Saya menjawab pertanyaan saya sendiri saat Anda menjawabnya juga. Sekali lagi terima kasih atas bantuan Anda!
billc
Menurut halaman CoRD GitHub , proyek ini tidak lagi dipertahankan hingga 16 Agustus 2015.
kenorb
Kasihan. Itu bagus.
Ian C.
Jawaban ini kedaluwarsa: versi terbaru dari rdp://tautan jauh Microsoft Remote Desktop for Mac (meskipun menggunakan skema yang berbeda). Lihat jawaban Jack Douglas.
chrstphrchvz
7

Saya tidak suka CoRD. Ini bekerja, tetapi tampaknya terkelupas secara berkala. Saya membuat skrip CLI saya sendiri untuk Microsoft RDP. Saya membuat skrip sed + open bash untuk memungkinkannya meneruskan 2 argumen ke Microsoft Remote Desktop Client. Saya bisa memberikan nama host, dan saya bisa melempar sakelar untuk terhubung ke konsol host Server 2003.

Saya tahu ini bisa diambil lebih jauh. Sebagai contoh:

  • Skrip bash saya tidak akan berfungsi dengan spasi di jalur atau nama file :)
  • Saya membayangkan salah satu data XML dalam file .RDP dapat dimodifikasi dengan sed.
  • Saya menyertakan sejumlah variasi sakelar untuk menghubungkan ke konsol karena saya sudah tua dan tidak pernah dapat mengingat yang mana yang saya suka. Saya yakin bash scripting memiliki solusi yang lebih elegan daripada yang saya gunakan.

Inilah cara saya melakukannya:

  1. Buat profil template Microsoft RDP dengan semua pengaturan pilihan Anda. Beri nama 'template.rdp'. Buat terhubung ke server palsu. Saya menggunakan nama server 'zzxyzyz'. Ini digunakan dalam perintah 'sed' sebagai string untuk mencari dan mengganti dengan nama server asli.
  2. Buat skrip bash untuk menyalin templat.rdp ke temp.rdp, lalu sed temp.rdp dengan nama host yang diinginkan yang akan diteruskan ketika menjalankan skrip. Saya menamai skrip bash saya 'rdp.sh'.
  3. Ubah '~ / .bash_profile' Anda untuk memasukkan alias ke 'rdp.sh'
  4. Jadikan skrip bash dapat dieksekusi: chmod + x rdp.sh
  5. Paman Yer, Bob

Isi skrip bash saya :

    #! /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 ​​ditambahkan ke .bash_profile
(Ini mengasumsikan file skrip rdp.sh saya ada di direktori home saya, ~ /)

alias rdp=~/rdp.sh

Jadikan skrip dapat dieksekusi:

sudo chmod +x rdp.sh

Jalankan skrip:
Berikut adalah contoh yang menyertakan sakelar konsol. Saya meninggalkan baris debug dalam skrip yang menunjukkan apa yang akan dimasukkan ke dalam file t.rdp.

LeviMAC>rdp MyServer -console
rdpHost is:  MyServer /console
[~/]
LeviMAC>
Retribusi
sumber
Saya bisa membuat konsep ini berfungsi, tetapi hanya setelah beberapa modifikasi. Perintah yang saya gunakan untuk memulai RDP adalahopen -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp
Terrabits
6

Saya tidak tahu kapan ini berubah, tetapi Microsoft Remote Desktop Client menangani rdp: // tautan sekarang:

Microsoft Remote Desktop menggunakan skema URI rdp: // query_string untuk menyimpan pengaturan atribut pra-konfigurasi yang digunakan saat meluncurkan klien. String kueri mewakili satu atau set atribut RDP yang disediakan dalam URL. Atribut RDP dipisahkan oleh simbol ampersand (&).

Misalnya, saat menghubungkan ke PC, stringnya adalah:

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

Semua atribut didokumentasikan pada halaman Remote Desktop Client URI Scheme Support TechNet.


sumber
Saya ingin MENCARI beberapa contoh URL. Saya memiliki port lokal saya 3389 diteruskan ke mesin Windows dan saya terhubung sebagai pengguna "et" menggunakan aplikasi Microsoft Remote Desktop resmi. Tapi, saya tidak bisa membuat URL yang tidak memberikan kesalahan.
Bruno Bronosky
Coba gunakan 127.0.0.2 daripada localhost?
1
Punya ide tentang cara menyimpan / mengirim kata sandi?
Bruno Bronosky
1
Menyimpan kata sandi di aplikasi Microsoft Remote Desktop (untuk Mac) adalah yang saat ini saya lakukan. Namun, tujuan saya adalah untuk meluncurkan koneksi ke IP baru: Port melalui baris perintah setelah membuka port itu melalui ssh tunnel. Saya hanya mencoba untuk memperbaiki skrip saya yang saat ini berakhir dengan "Sekarang ubah host dari koneksi yang disimpan ke 10.10.1.23:5589 dan hubungkan"
Bruno Bronosky
1
Tolong beri tahu saya jika Anda menemukan jalan :)
1

Nah, setelah berkonsultasi dengan Microsoft TAM saya, saya menemukan bahwa tidak ada cara untuk mengirimkan nama host ke klien Microsoft melalui baris perintah.

CoRD, di sisi lain, sebenarnya dapat melakukan apa yang saya inginkan dengan menangani tautan rdp: //. Setelah menginstal CoRD, jika Anda mengetik

open rdp://servername

di Terminal atau iTerm2, akan membuka sesi ke host servername dalam kabel.

Saya menggunakan Alfred (http://www.alfredapp.com/) sebagai alternatif "Launchy" saya di Mac, baru saja menemukannya setelah menjadi pengguna lama Quicksilver. Saya membeli Powerpack untuk Alfred, yang memungkinkan Anda menggunakan sejumlah ekstensi, salah satunya memberikannya kemampuan untuk meluncurkan skrip shell. Jadi saya membuat ekstensi skrip shell, menetapkan rdp kata kunci, mengaturnya menjadi "parameter yang diperlukan", dan mengatur skrip ke:

open rdp://{query}

Ini memungkinkan saya untuk memanggil alfred, dan ketik rdp {tab} servername {return} untuk membuka sesi Remote Desktop Connection ke server jauh.

billc
sumber
0

Skrip di atas tidak berfungsi dengan "Microsoft Remote Desktop" terbaru. Merujuk aplikasi dengan variabel bermasalah jadi saya membuat kode path yang sulit (yang berbeda dari contoh aslinya). Saya juga perlu menghapus parameter '--args' dan mulai berfungsi.

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

Jadi ini sebagian besar untuk menyempurnakan jawaban lain dan menghindari peretasan scripting:

(TL; DR: mungkin belum benar sebelumnya, tetapi RDP Microsoft sekarang menangani file .rdp secara otomatis dengan open)

Saya memiliki banyak profil yang sudah tersimpan di RUI GUI. (BTW, daftar itu ~/Library/Containers/com.microsoft.rdc.mac/Data/Library/Preferences/com.microsoft.rdc.mac.plist, seperti biasa plutil -convert xml1 xyz.listuntuk dilihat manusia)

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

Untuk membuatnya menjadi commandlineable:

  1. Pilih profil di GUI
  2. File -> Ekspor membuat .rdpfile, mencatat bahwa itu akan kekurangan info kata sandi
  3. (Pelajari .rdp untuk melihat bagaimana parameternya sesuai dengan rdp manual: // sintaks)
  4. Cukup opennama file.rdp dari baris perintah
BaseZen
sumber
-1

Saya pikir akan lebih mudah membuat templat untuk setiap server yang ingin Anda sambungkan, dan juga satu dengan bidang server kosong untuk koneksi "sekali seumur hidup". Saya hanya memasukkannya ke dalam folder dan nama atau nomor mereka untuk mendapatkan pesanan yang benar. Seret folder ke dok dan saya punya tempat yang bisa saya klik untuk mendapatkan daftar cepat dari template rdp yang kemudian saya bisa klik sekali saja untuk terhubung. Atau saya bisa Command + Space dan ketik nama file dan tekan enter untuk menjalankannya. ATAU ANDA BISA JENIS JENIS JENIS JENIS dan menginstal semua jenis aplikasi manajemen.

Randy Travis
sumber