Đối số dòng lệnh cho kết nối máy tính để bàn từ xa cho Mac


19

Tôi chưa thể tìm thấy bất kỳ tài liệu nào cho thấy điều này là có thể, nhưng có cách nào để vượt qua tên máy chủ mà bạn muốn kết nối dưới dạng đối số dòng lệnh với Kết nối máy tính từ xa của Microsoft cho Mac không?

Một số thông tin cơ bản cho những người quan tâm:

Tôi là quản trị viên hệ thống và tôi đang trong quá trình chuyển sang MacBook Air với tư cách là máy tính làm việc chính của tôi từ máy tính xách tay Windows 7. Tôi thường xuyên sử dụng Remote Desktop Client để kết nối với máy chủ và trong Windows, tôi sử dụng Launchy làm trình khởi chạy bàn phím. Tôi đã gán "rdp" làm từ khóa vì vậy khi tôi gọi Launchy, hãy nhập "rdp {tab} tên máy chủ", nó sẽ chuyển văn bản sau khóa tab làm tên máy chủ cho mstsc.exe (ví dụ: mstsc.exe / v: servername) . Điều này dẫn đến máy khách máy tính từ xa mở phiên làm việc với tên máy chủ được chỉ định.


2
Đáng buồn thay, không có quyền truy cập dòng lệnh hoặc quyền truy cập AppleScript vào Remote Desktop Client. Tôi đã hỏi nhà phát triển CoRD nếu anh ta xem xét thêm nó vào CoRD. Và có khả năng của tôi cho một máy khách tốt hơn máy khách RDP của MS: cord.sourceforge.net . :)
Ian C.

@Ian C., trước đây tôi đã sử dụng CoRD, trên MacBook cá nhân của tôi ... cảm giác như đã được vài năm. Không thực sự hài lòng với nó so với sự ổn định và vẻ ngoài "bóng bẩy" hơn của khách hàng của Microsoft. Tôi thực sự chỉ cần tải xuống một lần nữa, bởi vì tôi nhận thấy trong một trong các ảnh chụp màn hình của họ, có một đề cập đến việc xử lý các liên kết rdp: //. Điều này thực hiện chính xác những gì tôi đang tìm kiếm, vì vậy cảm ơn bạn đã hướng tôi trở lại CoRD! Tôi đã có thể thiết lập tiện ích mở rộng "shell script" trong Alfred để thực thi "open rdp: // {query}". Chúc mừng!
billc

Tuyệt vời. Tôi thậm chí không nhận thấy nó đã xử lý các liên kết ndp: //. Thật tuyệt vời. Tôi sẽ làm cho nhận xét của tôi một câu trả lời. :)
Ian C.

Câu trả lời:


11

Không có quyền truy cập dòng lệnh cho Microsoft Remote Desktop Client. Nhưng ứng dụng khách máy tính từ xa CoRD miễn phí và tuyệt vời nhất sẽ xử lý rdp://các liên kết cho phép bạn gọi nó từ trình khởi chạy mà bạn chọn hoặc thậm chí thông qua opendòng lệnh.

Các tài liệu dây trên github đưa ra làm thế nào bạn có thể sử dụng URL được mã hóa các thông số để phiên RDP đầy đủ cấu hình mở.

cú pháp: // URL

CoRD xử lý các URL ndp: // mà bạn có thể sử dụng từ nhiều nơi trong OS X. Thật không may, không có cách nào để mở rộng hộp thoại "Kết nối với máy chủ" của Finder, hỗ trợ khởi chạy URL VNC, vì vậy chúng tôi không thể khởi chạy CoRD từ đó . Nếu Apple thay đổi điều này (hoặc nếu có ai biết cách mở rộng nó), chúng tôi rất muốn nghe về nó.

Saved Servers

Nếu bạn muốn sử dụng rdp://các url với các máy chủ đã lưu hiện có, bạn có thể (kể từ 0.5.3)! Chỉ cần sử dụng nhãn thay cho tên máy chủ:

open rdp://label

Máy chủ mới

Từ một vỏ (sử dụng Terminal):

open rdp://hostname

Các tham số bổ sung có thể được sử dụng để bắt đầu phiên được định cấu hình đầy đủ thông qua URL:

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

Các tham số sau có thể được đặt cho phiên thông qua chuỗi truy vấn (kể từ 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

Thí dụ

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

Ghi chú:

Khi sử dụng ký hiệu (&) từ dòng lệnh, chúng phải được thoát bằng dấu gạch chéo ngược (). Dấu hai chấm (:) có thể được sử dụng thay cho ký hiệu cho cùng một hiệu ứng, mà không cần phải thoát.

Mật khẩu có bất kỳ ký tự đặc biệt nào trong đó, @,:, &, v.v ... cần được mã hóa theo Định dạng mã hóa URL

Sử dụng dòng lệnh

CoRD hỗ trợ các tùy chọn dòng lệnh sau: -host -port -u -d -p -a [8 | 16 | 24 | 32] đặt độ sâu màn hình độ rộng độ phân giải độ rộng màn hình độ phân giải chiều cao màn hình

Thí dụ

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

Hãy cẩn thận

Khởi chạy CoRD từ dòng lệnh theo cách này sẽ khiến một phiên bản mới của CoRD được mở. Một triệu chứng của điều này là nhiều biểu tượng Dock. Điều này ghi đè hoặc làm giảm hiệu quả của nhiều điểm mạnh CoRD, bao gồm các phiên thống nhất, v.v. Vì lý do đó, chúng tôi khuyên bạn nên sử dụng lệnh mở và URL ndp: // để khởi chạy phiên.

nhập mô tả hình ảnh ở đây


1
Quá buồn cười! Tôi đã trả lời câu hỏi của riêng tôi khi bạn trả lời nó là tốt. Cảm ơn một lần nữa vì sự giúp đỡ của bạn!
billc

Theo trang CoRD GitHub , dự án này không còn được duy trì kể từ ngày 16 tháng 8 năm 2015.
kenorb

Điều đáng tiếc. Thật tốt
Ian C.

Câu trả lời này đã lỗi thời: các phiên bản mới hơn của Microsoft Remote Desktop cho rdp://các liên kết hỗ trợ Mac (mặc dù sử dụng một sơ đồ khác). Xem câu trả lời của Jack Douglas.
chrstphrchvz

7

Tôi không yêu CoRD. Nó hoạt động, nhưng nó dường như bong ra theo định kỳ. Tôi đã tạo tập lệnh CLI của riêng mình cho Microsoft RDP. Tôi đã tạo một tập lệnh bash sed + open để có thể truyền 2 đối số cho Microsoft Remote Desktop Client. Tôi có thể chuyển tên máy chủ và tôi có thể ném một công tắc để kết nối với bảng điều khiển của máy chủ Server 2003.

Tôi biết điều này có thể được thực hiện thêm. Ví dụ:

  • Tập lệnh bash của tôi sẽ không hoạt động với khoảng trắng trong đường dẫn hoặc tên tệp :)
  • Tôi tưởng tượng bất kỳ dữ liệu XML nào trong tệp .RDP có thể được sửa đổi bằng sed.
  • Tôi đã bao gồm một số biến thể của một công tắc để kết nối với bảng điều khiển vì tôi đã già và không bao giờ có thể nhớ cái nào tôi thích. Tôi cá rằng bash scripting có một giải pháp tao nhã hơn tôi sử dụng.

Đây là cách tôi đã làm nó:

  1. Tạo hồ sơ mẫu Microsoft RDP với tất cả các cài đặt ưu tiên của bạn. Đặt tên là 'template.rdp'. Làm cho nó kết nối với một máy chủ giả mạo. Tôi đã sử dụng tên máy chủ 'zzxyzyz'. Điều này được sử dụng trong lệnh 'sed' dưới dạng chuỗi để tìm kiếm và thay thế bằng tên máy chủ thực.
  2. Tạo một tập lệnh bash để sao chép template.rdp sang temp.rdp, sau đó sed temp.rdp với tên máy chủ mong muốn được truyền vào khi gọi tập lệnh. Tôi đặt tên cho tập lệnh bash của mình là 'rdp.sh'.
  3. Sửa đổi '~ / .bash_profile' của bạn để bao gồm bí danh cho 'rdp.sh'
  4. Làm cho tập lệnh bash có thể thực thi được: chmod + xrdp.sh
  5. Chú của Bob

Nội dung của tập lệnh bash của tôi :

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

Bí danh được thêm vào .bash_profile
(Giả sử tệp tập lệnh ndp.sh của tôi nằm trong thư mục chính của tôi, ~ /)

alias rdp=~/rdp.sh

Làm cho tập lệnh thực thi:

sudo chmod +x rdp.sh

Chạy tập lệnh:
Đây là một ví dụ bao gồm công tắc điều khiển. Tôi đã để lại một dòng gỡ lỗi trong tập lệnh cho thấy những gì sẽ được gửi vào tệp t.rdp.

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

Tôi đã có thể làm cho khái niệm này hoạt động, nhưng chỉ sau một số sửa đổi. Lệnh tôi đã sử dụng để bắt đầu RDP làopen -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp
Terrabits

6

Tôi không biết khi nào điều này thay đổi, nhưng Microsoft Remote Desktop Client hiện xử lý các liên kết rdp: //:

Microsoft Remote Desktop sử dụng lược đồ URI rdp: // query_ chuỗi để lưu trữ các cài đặt thuộc tính được cấu hình sẵn được sử dụng khi khởi chạy máy khách. Các chuỗi truy vấn đại diện cho một hoặc một tập các thuộc tính RDP được cung cấp trong URL. Các thuộc tính RDP được phân tách bằng ký hiệu dấu và (&).

Ví dụ: khi kết nối với PC, chuỗi là:

rdp: // full% 20address = s: mypc: 3389 & audiomode = i: 2 và vô hiệu hóa% 20theme = i: 1

Tất cả các thuộc tính được ghi lại trên trang TechNet của chương trình máy khách hỗ trợ máy tính từ xa .


Tôi rất thích lấy một số URL mẫu. Tôi có cổng cục bộ 3389 được chuyển tiếp đến máy Windows và tôi kết nối với tư cách là người dùng "et" bằng ứng dụng Microsoft Remote Desktop chính thức. Nhưng, tôi không thể tạo một URL không báo lỗi.
Bruno Bronosky

Hãy thử sử dụng 127.0.0.2 thay vì localhost?

1
Có bất kỳ ý tưởng về cách lưu trữ / truyền mật khẩu?
Bruno Bronosky

1
Lưu mật khẩu trong ứng dụng Microsoft Remote Desktop (cho Mac) là những gì tôi hiện đang làm. Tuy nhiên, mục tiêu của tôi là khởi chạy một kết nối đến một IP mới: Cổng thông qua dòng lệnh sau khi mở cổng đó qua đường hầm ssh. Tôi chỉ cố gắng để cải thiện kịch bản của tôi mà hiện nay kết thúc với "Bây giờ thay đổi các máy chủ của kết nối lưu vào 10.10.1.23:5589 và kết nối"
Bruno Bronosky

1
Vui lòng cho tôi biết nếu bạn tìm được cách :)

1

Chà, sau khi tham khảo Microsoft TAM của tôi, tôi đã thấy rằng không có cách nào để chuyển tên máy chủ cho máy khách Microsoft thông qua dòng lệnh.

Mặt khác, CoRD thực sự có thể làm những gì tôi muốn bằng cách xử lý các liên kết rdp: //. Sau khi cài đặt CoRD, nếu bạn gõ

open rdp://servername

trong Terminal hoặc iTerm2, nó sẽ mở một phiên họp để các máy chủ servername trong vòng dây.

Tôi sử dụng Alfred (http://www.alfredapp.com/) làm sản phẩm thay thế "Launchy" của mình trên Mac, vừa phát hiện ra nó sau khi là người dùng Quicksilver lâu năm. Tôi đã mua Powerpack cho Alfred, cho phép bạn sử dụng một số tiện ích mở rộng, một trong số đó cung cấp cho nó khả năng khởi chạy các tập lệnh shell. Vì vậy, tôi đã tạo một phần mở rộng tập lệnh shell, gán từ khóa ndp, đặt nó thành "tham số bắt buộc" và đặt tập lệnh thành:

open rdp://{query}

Điều này cho phép tôi gọi alfred và nhập rdp {tab} tên máy chủ {return} để mở phiên kết nối máy tính từ xa đến máy chủ từ xa.


0

Kịch bản trên không hoạt động với "Microsoft Remote Desktop" mới nhất. Tham chiếu ứng dụng với một biến là có vấn đề nên tôi khó mã hóa đường dẫn (khác với ví dụ ban đầu). Tôi cũng cần phải xóa tham số '--args' và nó bắt đầu hoạt động.

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

0

Vì vậy, điều này chủ yếu là để đưa ra các câu trả lời khác và tránh bị hack kịch bản:

(TL; DR: có thể không đúng trước đây, nhưng RDP của Microsoft hiện tự động xử lý các tệp .rdp với open)

Tôi có rất nhiều hồ sơ đã được lưu trữ trong GUI RDP. (BTW, bản chính là ~/Library/Containers/com.microsoft.rdc.mac/Data/Library/Preferences/com.microsoft.rdc.mac.plist, như mọi khi plutil -convert xml1 xyz.listđể xem của con người)

(Tham khảo thêm: https://macmule.com/2013/10/22/how-to-create-a-microsoft-remote-desktop-8-connection/ )

Để làm cho nó có thể điều khiển được:

  1. Chọn cấu hình trong GUI
  2. Tệp -> Xuất tạo .rdptệp, lưu ý rằng nó sẽ thiếu thông tin mật khẩu
  3. (Nghiên cứu .rdp để xem các tham số tương ứng với cú pháp rdp: // thủ công)
  4. Đơn giản chỉ cần opentên tệp.rdp từ dòng lệnh

-1

Tôi nghĩ sẽ dễ dàng tạo một mẫu cho mỗi máy chủ mà bạn muốn kết nối, cũng như một mẫu có trường máy chủ trống cho các kết nối "một lần trong đời". Tôi chỉ cần bật chúng trong một thư mục và đặt tên hoặc đánh số chúng để có được thứ tự đúng. Kéo thư mục vào thanh công cụ và tôi có một vị trí tôi có thể nhấp để nhận danh sách nhanh các mẫu thứ bảy mà sau đó tôi có thể chỉ cần nhấp chuột một lần để kết nối. Hoặc tôi có thể Command + Space và nhập tên của tệp và nhấn enter để chạy nó. HOẶC BẠN CÓ THỂ KIẾM TYPEY TYPEY TYPE và cài đặt tất cả các loại ứng dụng quản lý.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.