題:
“用於Mac的遠程桌面連接”的命令行參數?
billc
2012-06-28 02:28:24 UTC
view on stackexchange narkive permalink

我沒有找到任何文檔來表明這是可能的,但是有什麼方法可以將您想連接的主機名作為命令行參數傳遞給Microsoft的Mac遠程桌面連接嗎?

一些感興趣的人的一些背景信息:

我是系統管理員,目前正在從Windows 7遷移到MacBook Air作為我的主要工作計算機筆記本電腦。我經常使用遠程桌面客戶端連接服務器,在Windows中,我使用Launchy作為鍵盤啟動器。我已將“ rdp”指定為關鍵字,因此當我調用Launchy時,鍵入“ rdp {tab}服務器名”會將Tab鍵後的文本作為主機名傳遞給mstsc.exe(即mstsc.exe / v:servername) 。這導致遠程桌面客戶端打開與指定主機名的會話。

遺憾的是,沒有對遠程桌面客戶端的命令行訪問或AppleScript訪問。我問過CoRD開發人員,他是否會考慮將其添加到CoRD中。我的插件是一個比MS RDP客戶端更好的客戶端:http://cord.sourceforge.net/。 :)
@Ian C.,我過去在我的個人MacBook上使用過CoRD……感覺好像已經有幾年了。與Microsoft客戶端的穩定性和更“光滑”的外觀相比,它並不真正滿意。我實際上只是再次下載了它,因為我在他們的一個屏幕截圖中註意到,提到了處理rdp://鏈接。確實,這確實是我想要的,所以感謝您將我引向CoRD!我能夠在Alfred中設置一個執行“ open rdp:// {query}”的“ shell腳本”擴展。乾杯!
哇哦我什至沒有註意到它處理了rdp://鏈接。棒極了。我將其評論作為答案。 :)
七 答案:
Ian C.
2012-06-28 03:37:25 UTC
view on stackexchange narkive permalink

沒有對Microsoft遠程桌面客戶端的命令行訪問。但是免費和最出色的 CoRD遠程桌面客戶端確實可以處理 rdp:// 鏈接,這些鏈接使您可以從所選的啟動器甚至通過 open調用它。

github上的 CoRD文檔列出瞭如何使用URL編碼的參數打開完整配置的RDP會話。

rdp:// URL語法

CoRD處理rdp:// URL,您可以在OS X的許多地方使用它。不幸的是,無法擴展Finder的“連接到服務器”對話框,它支持啟動VNC URL,所以我們不能從那裡啟動CoRD。如果Apple更改了此設置(或任何人知道擴展它的方法),我們將很樂意聽到。

保存的服務器

如果要對現有的已保存服務器使用 rdp:// 網址,則可以(自0.5.3起)!只需使用標籤代替主機名:

打開rdp:// label

新服務器

從外殼程序(使用終端):

打開rdp://主機名

附加參數可用於啟動完全配置的會話通過URL:

打開rdp:// [用戶名[:密碼] @]主機名[:端口] [/域] [?參數]

可以通過查詢字符串(自0.5.2起)為會話設置以下參數:

  • screenDepth ### [8 | 16 | 24 | 32]
  • screenWidth <width以像素為單位>
  • screenHeight <height以像素為單位>
  • consoleSession# ## [true | false | yes | no]
  • 全屏### [true | false | yes | no]
  • windowDrags ### [true | false | yes | no]
  • drawDesktop ### [true | false | yes | no]
  • windowAnimation ### [true | false | yes | no]
  • 主題### [true | false | yes | no]
  • fontSmoothing ### [true | false |是|否]
  • forwardDisks ### [true | false | yes | no]
  • forwardPrinters ### [true | false | yes | no]
  • forwardAudio ### [0 | 1 | 2]
    • 0-將音頻轉發到本地計算機(當前未使用,因為CoRD不提供音頻)
    • 1-將音頻保留在遠程計算機
    • 2-禁用兩台計算機上的音頻

示例

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

注意:

在命令行中使用與號(&)時,必須使用反斜杠對其進行轉義()。可以使用冒號(:)代替“&”號,而無需轉義。

其中帶有@,:,&等特殊字符的密碼必鬚根據 URL編碼格式

命令行使用

CoRD支持以下命令行選項:-host -port -u- d -p -a [8 | 16 | 24 | 32]設置屏幕深度-寬度設置屏幕分辨率寬度-height設置屏幕分辨率高度

示例

/Applications/CoRD.app/Contents/MacOS/CoRD -host example.com-端口3389 -u用戶名

注意事項

以這種方式從命令行啟動CoRD會導致打開一個新的CoRD實例。一個症狀是多個Dock圖標。這會覆蓋或降低許多CoRD優勢(包括統一會話等)的有效性。因此,我們建議使用open命令和rdp:// URL來啟動會話。

enter image description here

太好笑了!當您也回答我自己的問題時。再次感謝你的幫助!
根據[CoRD GitHub頁面](https://github.com/dorianj/CoRD),此項目將於2015年8月16日停止維護。
可憐。 這很好。
這個答案已經過時:Mac的Microsoft Remote Desktop的較新版本支持“ rdp://”鏈接(儘管使用了不同的方案)。參見傑克·道格拉斯的回答。
Levi
2013-03-23 20:17:01 UTC
view on stackexchange narkive permalink

我不喜歡CoRD。它有效,但似乎定期剝落。我為Microsoft RDP製作了自己的CLI腳本。我創建了sed + open bash腳本,以便可以將2個參數傳遞給Microsoft遠程桌面客戶端。我可以傳遞一個主機名,也可以拋出一個開關以連接到Server 2003主機的控制台。

我知道可以做得更好。例如:

  • 我的bash腳本不能在路徑或文件名中使用空格:)
  • 我想像中的任何XML數據。可以使用sed修改RDP文件。
  • 我包括了許多用於連接到控制台的開關的變體,因為我年紀大了,不記得自己喜歡哪一個。我敢打賭,bash腳本比我使用的解決方案更優雅。

這是我的操作方式:

  1. 使用所有首選設置創建Microsoft RDP模板配置文件。將其命名為“ template.rdp”。使它連接到假服務器。我使用了服務器名稱“ zzxyzyz”。在“ sed”命令中將其用作搜索和替換為真實服務器名稱的字符串。
  2. 創建一個bash腳本以將template.rdp複製到temp.rdp,然後對temp進行sed。 .rdp,具有調用腳本時傳遞的所需主機名。我將bash腳本命名為“ rdp.sh”。
  3. 修改您的“〜/ .bash_profile”,使其包含“ rdp.sh”的別名。
  4. 使bash腳本可執行:chmod + x rdp.sh
  5. 鮑勃的叔叔
  6. ol>

    我的bash腳本的內容

     #! /bin/bashrdpTemplateFile='/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 /遠程桌面連接“ rdpHost = $ {1},如果[” $ {2}“ =” / console“];然後rdpHost =“ $ {rdpHost} / console”; echo“ rdpHost是:” $ {rdpHost} fiif [“ $ {2}” =“-控制台”];然後rdpHost =“ $ {rdpHost} / console”;迴聲“ rdpHost是:” $ {rdpHost} fi
    如果[“ $ {2}” =“ -admin”];然後rdpHost =“ $ {rdpHost} / console”; echo“ rdpHost是:” $ {rdpHost} ficp -f $ {rdpTemplateFile} $ {rdpTempRDP} sed -i”“ s | zzxyzyz | $ {rdpHost} | g” $ {rdpTempRDP} open -na“ $ {rdpRunCommand} “ --args $ {rdpTempRDP}  

    將別名添加到.bash_profile
    (這假定我的rdp.sh腳本文件位於主目錄中,〜 /)

     別名rdp =〜/ rdp.sh  

    使腳本可執行:

      sudo chmod + x rdp.sh  

    運行腳本:
    這裡是一個包含控制台開關的示例。我在腳本中留下了一條調試行,其中顯示了將要存儲到t.rdp文件中的內容。

      LeviMAC>rdp MyServer -consolerdpHost是:MyServer / console [〜/] LeviMAC>  
我能夠使這個概念生效,但是只有經過一些修改。我用來啟動RDP的命令是`open -na“ / Applications / Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop” path / to / profile.rdp。
user27924
2015-08-07 13:51:16 UTC
view on stackexchange narkive permalink

我不知道何時更改,但是Microsoft遠程桌面客戶端現在可以處理rdp://鏈接:

Microsoft遠程桌面使用URI方案rdp:// query_string來存儲啟動客戶端時使用的預配置屬性設置。查詢字符串表示URL中提供的單個或一組RDP屬性。 RDP屬性用與號(&)分隔。

例如,當連接到PC時,字符串為:

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

所有屬性都記錄在遠程桌面客戶端URI方案支持 TechNet頁面上。

我希望提供一些示例URL。我將本地端口3389轉發到Windows計算機,並使用“ Microsoft”用戶使用官方的Microsoft遠程桌面應用程序進行連接。但是,我無法構造不會出錯的URL。
嘗試使用127.0.0.2代替localhost?
謝謝。我能夠使用rdp:// full%20address = s:localhost:3389&audiomode = i:2&disable%20themes = i:1`進入我的那部分是因為我沒有意識到這實際上意味著“ full%20address”。我認為這是“用完整地址替換”的意思,因為常見的URI模式是`scheme:// host / optional_path?query = value&etc = value`所以,我的深夜大腦拒絕了沒有主機的想法。或其中的“?”。
對如何存儲/傳遞密碼有什麼想法?
URL中不允許使用密碼。您可以將它們保存在像Microsoft RDP這樣的應用程序中,但是我想這對您沒有好處。
我目前正在將密碼保存在Microsoft遠程桌面(適用於Mac)應用程序中。但是,我的目標是在通過ssh隧道打開該端口後,通過命令行啟動與新IP:Port的連接。我只是想改善我的腳本,該腳本當前以“現在將已保存的連接的主機更改為10.10.1.23:5589並進行連接”結尾
如果您找到方法,請告訴我:)
我正在啟動雲實例,因此IP每次都會更改,但是用戶名/密碼保持不變。有沒有辦法將密碼存儲在RDP應用程序中並以此方式指定新IP?
billc
2012-06-28 03:38:25 UTC
view on stackexchange narkive permalink

嗯,在諮詢了我的Microsoft TAM之後,我發現沒有辦法通過命令行將主機名傳遞給Microsoft客戶端。

CoRD實際上可以做到通過處理rdp://鏈接,我想要什麼。安裝CoRD之後,如果在Terminal或iTerm2中鍵入

  open rdp:// servername  

,它將打開與主機的會話。服務器名稱

在Mac上長期使用它之後,才發現Alfred(http://www.alfredapp.com/)作為Mac上的“ Launchy”替代品。我購買了Powerpack for Alfred,它使您可以使用許多擴展,其中之一使它能夠啟動Shell腳本。因此,我創建了一個Shell腳本擴展,為其指定了關鍵字rdp,將其設置為“ required parameter”,並將腳本設置為:

  open rdp:// {query}  

這允許我調用alfred,然後鍵入 rdp {tab}服務器名{return} 以打開到遠程服務器的遠程桌面連接會話。

William Wallace
2017-04-22 00:23:45 UTC
view on stackexchange narkive permalink

上面的腳本不適用於最新的“ Microsoft遠程桌面”。用變量引用應用程序是有問題的,因此我對路徑進行了硬編碼(這與原始示例不同)。我還需要刪除'--args'參數,它開始起作用。

  open -na / Applications / Microsoft \ Remote \ Desktop.app/Contents/MacOS/Microsoft \ Remote \ Desktop $ {rdpTempRDP}
 
BaseZen
2018-05-09 19:40:20 UTC
view on stackexchange narkive permalink

因此,這主要是為了充實其他答案並避免編寫腳本漏洞:

(TL; DR:以前可能不是真的,但是Microsoft的RDP現在可以通過 open 自動處理.rdp文件)

我已經在RDP GUI中存儲了很多配置文件。(順便說一句,plist是〜/ Library / Containers / com.microsoft.rdc.mac / Data / Library / Preferences / com.microsoft.rdc.mac.plist ,一如往常 plutil-轉換xml1 xyz.list 供人類查看)

(其他參考: https://macmule.com/2013/10/22/how-to-create-a-microsoft-remote-desktop-8-connection/

使其可命令行化:

  1. 在GUI中選擇配置文件
  2. 文件->導出會創建 .rdp 文件,注意該文件將缺少密碼信息
  3. (研究.rdp文件以了解參數如何與rdp://手動語法相對應)
  4. 從命令行
  5. 簡單地 open 文件名 .rdp
  6. ol>
Randy Travis
2014-06-03 18:47:43 UTC
view on stackexchange narkive permalink

我想為要連接的每台服務器創建一個模板,以及為那些“一生一次”的連接創建一個帶有空服務器字段的模板將非常容易。我只是將它們彈出到一個文件夾中並命名或編號以正確獲得訂單。將文件夾拖到擴展塢上,我有一個地方可以單擊以獲取rdp模板的快速列表,然後單擊即可進行連接。或者可以使用Command + Space並鍵入文件名,然後按輸入以運行它。或者您可以TYPEY TYPEY TYPEY TYPE並安裝各種管理應用程序。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...