อาร์กิวเมนต์บรรทัดคำสั่งสำหรับ“ การเชื่อมต่อเดสก์ท็อประยะไกลสำหรับ Mac”?


19

ฉันไม่สามารถค้นหาเอกสารใด ๆ ที่ระบุว่าเป็นไปได้ แต่มีวิธีใดบ้างที่จะส่งชื่อโฮสต์ที่คุณต้องการเชื่อมต่อด้วยเป็นอาร์กิวเมนต์บรรทัดคำสั่งไปยังการเชื่อมต่อเดสก์ท็อประยะไกลสำหรับ Microsoft ของ Microsoft?

ข้อมูลพื้นฐานบางอย่างสำหรับผู้ที่สนใจ:

ฉันเป็นผู้ดูแลระบบและฉันอยู่ในขั้นตอนการย้ายไปยัง MacBook Air เป็นคอมพิวเตอร์ที่ทำงานหลักของฉันจากแล็ปท็อป Windows 7 ฉันมักใช้ไคลเอนต์เดสก์ท็อประยะไกลเพื่อเชื่อมต่อกับเซิร์ฟเวอร์และใน Windows ฉันใช้ Launchy เป็นตัวเปิดใช้แป้นพิมพ์ของฉัน ฉันได้กำหนด "rdp" เป็นคำหลักดังนั้นเมื่อฉันเรียกใช้ Launchy ให้พิมพ์ "rdp {tab} servername" มันจะส่งผ่านข้อความหลังจากคีย์แท็บเป็นชื่อโฮสต์ไปยัง mstsc.exe (เช่น mstsc.exe / v: servername) . ซึ่งส่งผลให้ไคลเอ็นต์เดสก์ท็อประยะไกลเปิดเซสชันไปยังชื่อโฮสต์ที่ระบุ


2
น่าเศร้าที่ไม่มีการเข้าถึงบรรทัดคำสั่งหรือการเข้าถึง AppleScript ไปยังไคลเอนต์เดสก์ท็อประยะไกล ฉันถามผู้พัฒนา CoRD ว่าเขาจะพิจารณาเพิ่มไปที่ CoRD หรือไม่ และมีปลั๊กของฉันสำหรับลูกค้าดีกว่า RDP ลูกค้า MS: cord.sourceforge.net :)
Ian C.

@Ian C. , ฉันเคยใช้ CoRD ในอดีตบน MacBook ส่วนตัวของฉัน ... รู้สึกเหมือนไม่กี่ปีที่ผ่านมา ไม่พอใจจริง ๆ เมื่อเทียบกับความเสถียรและรูปลักษณ์ที่ "ขัด" ของลูกค้าของ Microsoft ฉันเพิ่งดาวน์โหลดอีกครั้งเพราะฉันสังเกตเห็นภาพหน้าจอหน้าจอหนึ่งของพวกเขามีการกล่าวถึงการจัดการลิงก์ rdp: // นี้ไม่ว่าสิ่งที่ฉันกำลังมองหาเพื่อขอบคุณสำหรับการชี้ให้ฉันกลับไปยังสาย! ฉันสามารถตั้งค่าส่วนขยาย "shell script" ใน Alfred ที่เรียกใช้งาน "open rdp: // {query}" ไชโย!
billc

โอ้ว้าว. ฉันไม่ได้สังเกตว่ามันจัดการลิงก์ rdp: // ที่น่ากลัว. ฉันจะแสดงความคิดเห็นคำตอบของฉัน :)
Ian C.

คำตอบ:


11

ไม่มีการเข้าถึงบรรทัดคำสั่งสำหรับ Microsoft Remote Desktop Client แต่ไคลเอนต์เดสก์ท็อประยะไกล CoRDฟรีและยอดเยี่ยมที่สุดจะจัดการrdp://ลิงก์ซึ่งจะช่วยให้คุณโทรหาได้จากตัวเรียกใช้ที่คุณเลือกหรือแม้กระทั่งผ่านทางopenบรรทัดคำสั่ง

เอกสารสายบน GitHubออกวางวิธีการที่คุณสามารถใช้ URL เข้ารหัสพารามิเตอร์เพื่อเปิดการประชุม RDP เต็มรูปแบบที่กำหนด

rdp: // ไวยากรณ์ URL

CoRD จัดการ rdp: // URL ซึ่งคุณสามารถใช้จากหลาย ๆ ที่ใน OS X แต่น่าเสียดายที่ไม่มีวิธีใดที่จะขยายกล่องโต้ตอบ "เชื่อมต่อกับเซิร์ฟเวอร์" ของ Finder's ซึ่งรองรับการเปิดใช้งาน URL VNC ดังนั้นเราจึงไม่สามารถเปิด CoRD ได้จากที่นั่น . ถ้า Apple เปลี่ยนแปลงสิ่งนี้ (หรือถ้าใครรู้วิธีขยาย) เราชอบที่จะได้ยินเกี่ยวกับมัน

Saved Servers

หากคุณต้องการใช้rdp://URL กับเซิร์ฟเวอร์ที่บันทึกไว้เดิมคุณสามารถทำได้ (ตั้งแต่ 0.5.3)! เพียงใช้ป้ายกำกับแทนชื่อโฮสต์:

open rdp://label

เซิร์ฟเวอร์ใหม่

จากเชลล์ (ใช้ Terminal):

open rdp://hostname

สามารถใช้พารามิเตอร์เพิ่มเติมเพื่อเริ่มเซสชันที่กำหนดค่าอย่างสมบูรณ์ผ่าน URL:

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

พารามิเตอร์ต่อไปนี้สามารถตั้งค่าสำหรับเซสชันผ่านสตริงเคียวรี (ตั้งแต่ 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

ตัวอย่าง

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

บันทึก:

เมื่อใช้เครื่องหมายแอมเปอร์แซนด์ (&) จากบรรทัดคำสั่งพวกเขาจะต้องหลบหนีด้วยแบ็กสแลช () Colons (:) สามารถใช้แทนแอมเปอร์แซนด์เพื่อเอฟเฟกต์เดียวกันโดยไม่จำเป็นต้องหลบหนี

รหัสผ่านที่มีอักขระพิเศษใด ๆ ในนั้นจะต้องมีการเข้ารหัส @,:, & และอื่น ๆ ตามรูปแบบการเข้ารหัส URL

การใช้บรรทัดคำสั่ง

CoRD รองรับตัวเลือกบรรทัดคำสั่งต่อไปนี้: -host -port -u -d -p -a [8 | 16 | 24 | 32] ตั้งค่าความลึกของหน้าจอ - ตั้งค่าความกว้างของหน้าจอความกว้างของหน้าจอ - ตั้งความสูงของความละเอียดของหน้าจอ

ตัวอย่าง

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

คำเตือน

การเรียกใช้ CoRD จากบรรทัดคำสั่งด้วยวิธีนี้ทำให้อินสแตนซ์ใหม่ของ CoRD ถูกเปิดขึ้น อาการนี้เป็นไอคอน Dock หลายอัน การแทนที่หรือลดประสิทธิภาพของจุดแข็งของ CoRD หลายแห่งรวมถึงเซสชันที่รวมเป็นหนึ่งเป็นต้นด้วยเหตุนี้เราขอแนะนำให้ใช้คำสั่งเปิดและ rdp: // URL เพื่อเปิดเซสชัน

ป้อนคำอธิบายรูปภาพที่นี่


1
สนุกมาก! ฉันกำลังตอบคำถามของตัวเองเมื่อคุณตอบเช่นกัน ขอบคุณอีกครั้งสำหรับความช่วยเหลือของคุณ!
billc

ตามหน้า CoRD GitHubโครงการนี้จะไม่ได้รับการบำรุงรักษาอีกต่อไปในวันที่ 16 สิงหาคม 2558
kenorb

สงสาร มันดีนะ.
เอียนซี

คำตอบนี้ล้าสมัยแล้ว: rdp://ลิงก์Microsoft Remote Desktop for Mac รุ่นที่ใหม่กว่า(แม้ว่าจะใช้โครงร่างอื่น) ดูคำตอบของแจ็คดักลาส
chrstphrchvz

7

ฉันไม่รัก CORD มันใช้งานได้ แต่ดูเหมือนจะหลุดลอกออกเป็นระยะ ฉันสร้างสคริปต์ CLI ของฉันเองสำหรับ Microsoft RDP ฉันสร้าง sed + open bash script เพื่อให้สามารถส่งผ่าน 2 อาร์กิวเมนต์ไปยัง Microsoft Remote Desktop Client ฉันสามารถส่งชื่อโฮสต์และฉันสามารถสลับสวิตช์เพื่อเชื่อมต่อกับคอนโซลของโฮสต์เซิร์ฟเวอร์ 2003

ฉันรู้ว่าสิ่งนี้จะต้องดำเนินต่อไป ตัวอย่างเช่น:

  • สคริปต์ทุบตีของฉันจะไม่ทำงานกับช่องว่างในพา ธ หรือชื่อไฟล์ :)
  • ฉันนึกภาพข้อมูล XML ใด ๆ ในไฟล์. RDP ที่สามารถแก้ไขได้ด้วยความคิด
  • ฉันรวมสวิตช์หลายรูปแบบไว้สำหรับเชื่อมต่อกับคอนโซลเพราะฉันแก่แล้วและจำไม่ได้ว่าฉันชอบอันไหน ฉันพนันได้เลยว่าการทุบตีสคริปต์นั้นมีทางออกที่สวยงามกว่าที่ฉันใช้

นี่คือวิธีที่ฉันทำ:

  1. สร้างโปรไฟล์เทมเพลต Microsoft RDP พร้อมการตั้งค่าที่คุณต้องการทั้งหมด ตั้งชื่อมันว่า 'template.rdp' ทำให้มันเชื่อมต่อกับเซิร์ฟเวอร์ปลอม ฉันใช้ชื่อเซิร์ฟเวอร์ 'zzxyzyz' สิ่งนี้ถูกนำมาใช้ในคำสั่ง 'sed' เป็นสตริงเพื่อค้นหาและแทนที่ด้วยชื่อเซิร์ฟเวอร์จริง
  2. สร้างสคริปต์ทุบตีเพื่อคัดลอก template.rdp ไปที่ temp.rdp จากนั้นติด temp.rdp ด้วยชื่อโฮสต์ที่ต้องการซึ่งจะถูกส่งผ่านเมื่อเรียกใช้สคริปต์ ฉันตั้งชื่อสคริปต์ทุบตีของฉัน 'rdp.sh'
  3. แก้ไข '~ / .bash_profile' ของคุณเพื่อรวมนามแฝงเป็น 'rdp.sh'
  4. ทำให้ bash script สามารถเรียกใช้งานได้: chmod + x rdp.sh
  5. ลุงของบ๊อบ

เนื้อหาของสคริปต์ทุบตีของฉัน :

    #! /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}

เพิ่มนามแฝงใน. bash_profile
(ซึ่งถือว่าไฟล์สคริปต์ rdp.sh ของฉันอยู่ในโฮมไดเรกทอรีของฉัน ~ /)

alias rdp=~/rdp.sh

ทำให้สคริปต์เรียกใช้งานได้:

sudo chmod +x rdp.sh

เรียกใช้สคริปต์:
นี่คือตัวอย่างที่มีสวิตช์คอนโซล ฉันทิ้งบรรทัดการแก้ไขข้อบกพร่องในสคริปต์ที่แสดงสิ่งที่กำลังจะติดอยู่ในไฟล์ t.rdp

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

ฉันสามารถทำให้แนวคิดนี้ทำงานได้ แต่หลังจากการเปลี่ยนแปลงบางอย่างเท่านั้น คำสั่งที่ฉันใช้ในการเริ่ม RDP คือopen -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp
Terrabits

6

ฉันไม่ทราบว่าเมื่อมีการเปลี่ยนแปลง แต่ Microsoft Remote Desktop Client จัดการ rdp: // ลิงก์ทันที:

Microsoft Remote Desktop ใช้รูปแบบ URI rdp: // query_string เพื่อจัดเก็บการตั้งค่าคุณลักษณะที่กำหนดไว้ล่วงหน้าซึ่งจะใช้เมื่อเรียกใช้ไคลเอนต์ สตริงเคียวรีเป็นตัวแทนของแอตทริบิวต์ RDP เดี่ยวหรือชุดที่ระบุใน URL แอตทริบิวต์ RDP ถูกคั่นด้วยสัญลักษณ์เครื่องหมาย & (&)

ตัวอย่างเช่นเมื่อเชื่อมต่อกับพีซีสตริงคือ:

RDP: // เต็ม% 20address = s: MyPC: 3389 & audiomode = i: 2 และปิดการใช้งาน% 20themes = i: 1

คุณลักษณะทั้งหมดจะได้รับการบันทึกไว้ในหน้าURI Scheme Support TechNet ของRemote Desktop


ฉันชอบที่จะเห็น URL ตัวอย่างบางส่วน ฉันมีพอร์ตในเครื่อง 3389 ส่งต่อไปยังเครื่อง Windows และฉันเชื่อมต่อในฐานะผู้ใช้ "และ" โดยใช้แอพ Microsoft Remote Desktop อย่างเป็นทางการ แต่ฉันไม่สามารถสร้าง URL ที่ไม่มีข้อผิดพลาดได้
Bruno Bronosky

ลองใช้ 127.0.0.2 แทน localhost ใช่ไหม

1
มีแนวคิดใด ๆ เกี่ยวกับวิธีจัดเก็บ / ส่งรหัสผ่านหรือไม่
Bruno Bronosky

1
การบันทึกรหัสผ่านในแอพ Microsoft Remote Desktop (สำหรับ Mac) คือสิ่งที่ฉันทำอยู่ในขณะนี้ อย่างไรก็ตามเป้าหมายของฉันคือการเปิดการเชื่อมต่อกับ IP ใหม่: พอร์ตผ่านบรรทัดคำสั่งหลังจากเปิดพอร์ตนั้นผ่านช่องสัญญาณ ssh ฉันแค่พยายามปรับปรุงสคริปต์ของฉันซึ่งลงท้ายด้วย "ตอนนี้เปลี่ยนโฮสต์ของการเชื่อมต่อที่บันทึกไว้เป็น 10.10.1.23:5589 และเชื่อมต่อ"
Bruno Bronosky

1
โปรดแจ้งให้เราทราบหากคุณพบวิธี :)

1

หลังจากที่ปรึกษา Microsoft TAM ของฉันฉันพบว่าไม่มีทางที่จะส่งชื่อโฮสต์ไปยังไคลเอนต์ Microsoft ผ่านทางบรรทัดคำสั่ง

ในทางกลับกัน CoRD สามารถทำสิ่งที่ฉันต้องการได้โดยการจัดการลิงก์ rdp: // หลังจากติดตั้ง CoRD หากคุณพิมพ์

open rdp://servername

ใน Terminal หรือ iTerm2 มันจะเปิดเซสชันไปยังชื่อโฮสต์เซิร์ฟเวอร์ภายใน CoRD

ฉันใช้ Alfred (http://www.alfredapp.com/) เป็นทางเลือก "Launchy" ของฉันบน Mac เพิ่งค้นพบมันหลังจากเป็นผู้ใช้ Quicksilver มาเป็นเวลานาน ฉันซื้อ Powerpack สำหรับ Alfred ซึ่งอนุญาตให้คุณใช้ส่วนขยายจำนวนหนึ่งซึ่งหนึ่งในนั้นให้ความสามารถในการเปิดใช้เชลล์สคริปต์ ดังนั้นฉันจึงสร้างส่วนขยายเชลล์สคริปต์กำหนดคำหลัก rdp ตั้งเป็น "พารามิเตอร์ที่จำเป็น" และตั้งค่าสคริปต์เป็น:

open rdp://{query}

สิ่งนี้อนุญาตให้ฉันเรียกใช้ alfred และพิมพ์rdp {tab} ชื่อเซิร์ฟเวอร์ {return}เพื่อเปิดเซสชันการเชื่อมต่อเดสก์ท็อประยะไกลไปยังเซิร์ฟเวอร์ระยะไกล


0

สคริปต์ข้างต้นไม่สามารถใช้งานได้กับ "Microsoft Remote Desktop" ล่าสุด การอ้างอิงแอปพลิเคชันที่มีตัวแปรเป็นปัญหาดังนั้นฉันจึงกำหนดรหัสเส้นทางอย่างหนัก (ซึ่งแตกต่างจากตัวอย่างดั้งเดิม) ฉันต้องลบพารามิเตอร์ '--args' และเริ่มทำงาน

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

0

ดังนั้นนี่เป็นส่วนใหญ่ในการรวบรวมคำตอบอื่น ๆ และหลีกเลี่ยงการแฮ็คสคริปต์:

(TL; DR: อาจไม่เคยเป็นจริงมาก่อน แต่ตอนนี้ RDP ของ Microsoft จะจัดการไฟล์. rdp อัตโนมัติด้วยopen)

ฉันมีโปรไฟล์จำนวนมากที่ถูกเก็บไว้ใน RDP GUI แล้ว (BTW ตัวย่อคือ~/Library/Containers/com.microsoft.rdc.mac/Data/Library/Preferences/com.microsoft.rdc.mac.plistเสมอplutil -convert xml1 xyz.listสำหรับการดูของมนุษย์)

(การอ้างอิงเพิ่มเติม: https://macmule.com/2013/10/22/how-to-create-a-microsoft-remote-desktop-8-connection/ )

เพื่อให้ commandlineable:

  1. เลือกโปรไฟล์ใน GUI
  2. ไฟล์ -> ส่งออกสร้าง.rdpไฟล์โดยสังเกตว่าจะไม่มีข้อมูลรหัสผ่าน
  3. (ศึกษา. rdp เพื่อดูว่าพารามิเตอร์สอดคล้องกับ manual rdp: // ไวยากรณ์อย่างไร)
  4. เพียงopenชื่อไฟล์.rdpจากบรรทัดคำสั่ง

-1

ฉันคิดว่าการสร้างเทมเพลตสำหรับแต่ละเซิร์ฟเวอร์ที่คุณต้องการเชื่อมต่อนั้นทำได้ง่ายเช่นเดียวกับที่มีฟิลด์เซิร์ฟเวอร์ว่างสำหรับการเชื่อมต่อที่ "ครั้งเดียวในชีวิต" ฉันเพียงแค่เปิดพวกเขาในโฟลเดอร์และชื่อหรือหมายเลขพวกเขาเพื่อให้ได้รับสิทธิ ลากโฟลเดอร์ไปที่ Dock และฉันมีจุดที่ฉันสามารถคลิกเพื่อรับรายการแม่แบบ rdp อย่างรวดเร็วซึ่งฉันสามารถเพียงคลิกเดียวเพื่อเชื่อมต่อ หรือฉันสามารถ Command + Space แล้วพิมพ์ชื่อไฟล์และกด enter เพื่อเรียกใช้ หรือคุณสามารถพิมพ์ TYPEY TYPEY TYPEY TYPE และติดตั้งแอพจัดการทุกประเภท

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.