Аргументи командного рядка для "Підключення до віддаленого робочого столу для Mac"?


19

Я не зміг знайти жодної документації, яка б вказувала на це, але це можливо, але чи є можливість передавати ім'я хоста, до якого ви хочете підключитися, як аргумент командного рядка, до Microsoft Remote Desktop Connection для Mac?

Довідкова інформація для зацікавлених:

Я системний адміністратор, і я переходжу на MacBook Air як основний робочий комп'ютер із ноутбука Windows 7. Я часто використовую клієнт віддаленого робочого столу для підключення до серверів, а в Windows я використовую Launchy як мій запуск клавіатури. Я призначив "rdp" як ключове слово, тому коли я викликаю Launchy, введіть "rdp {tab} ім'я сервера", він передає текст після клавіші табуляції як ім'я хоста mstsc.exe (тобто, mstsc.exe / v: ім'я сервера) . Це призводить до того, що клієнт віддаленого робочого столу відкриває сеанс із вказаним ім'ям хоста.


2
На жаль, немає жодного доступу до командного рядка чи доступу AppleScript до клієнта віддаленого робочого столу. Я запитав розробника CoRD, чи не хотів би він додати його до CoRD. І є мій модуль для кращого клієнта, ніж клієнт RDP MS: cord.sourceforge.net . :)
Ян C.

@Ian C., я раніше використовував CoRD на своєму особистому MacBook ... здається, що минуло кілька років. Не дуже задоволений цим порівняно зі стабільністю та більш «відшліфованим» виглядом клієнта Microsoft. Я насправді просто завантажив його ще раз, тому що я помітив, що в одному з їх скріншотів згадується обробка rdp: // посилань. Це саме те , що я шукаю, тому дякую, що повернув мене до КоРД! Мені вдалося встановити розширення "скрипт оболонки" в Альфреда, яке виконує "open rdp: // {query}". Ура!
billc

Ух ти. Я навіть не помітив, що він обробляє посилання rdp: //. Це круто. Я зроблю свій коментар відповіддю. :)
Ян C.

Відповіді:


11

Для клієнта віддаленого робочого столу Microsoft немає доступу до командного рядка. Але безкоштовний і найвидатніший клієнт віддаленого робочого столу CoRD обробляє rdp://посилання, які дозволять вам зателефонувати йому із запуску на ваш вибір або навіть через openкомандний рядок.

Документація CoRD на github визначає, як можна використовувати параметри, кодовані URL, для відкриття повноконфігурованих сеансів RDP.

rdp: // синтаксис URL

CoRD обробляє URL-адреси rdp: //, які ви можете використовувати з багатьох місць всередині OS X. На жаль, немає можливості розширити діалогове вікно Finder "Підключитися до сервера", яке підтримує запуск URL-адрес VNC, тому ми не можемо запустити CoRD звідти . Якщо Apple змінить це (або якщо хтось знає про спосіб його продовження), ми б хотіли почути про це.

Saved Servers

Якщо ви хочете використовувати rdp://URL-адреси з існуючими збереженими серверами, ви можете (станом на 0.5.3)! Просто використовуйте мітку замість імені хоста:

open rdp://label

Нові сервери

З оболонки (за допомогою терміналу):

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

Примітка:

Під час використання амперсандів (&) у командному рядку їх потрібно уникнути за допомогою косої риски (). Колони (:) можна використовувати замість амперсандів для того ж ефекту, не потребуючи втечі.

Паролі з будь-якими спеціальними символами в них, @,:, і т.д., потрібно кодувати відповідно до формату кодування 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, включаючи уніфіковані сеанси тощо. З цієї причини ми рекомендуємо використовувати команду open та rdp: // URL-адреси для запуску сеансів.

введіть тут опис зображення


1
Занадто смішно! Я відповідав на власне запитання, як і ви на нього. Ще раз дякую за допомогу!
billc

За даними сторінки CoRD GitHub , цей проект більше не підтримується станом на 16 серпня 2015 року.
kenorb

Шкода. Це було добре.
Ян Ч.

Ця відповідь застаріла: новіші версії rdp://посилань підтримки Microsoft Remote Desktop для Mac (хоча за іншою схемою). Дивіться відповідь Джека Дугласа.
chrstphrchvz

7

Я не люблю КРД. Це працює, але воно, здається, періодично спалахує. Я створив власний сценарій CLI для Microsoft RDP. Я створив сценарій sed + open bash, щоб дозволити передачу 2-х аргументів клієнтові Microsoft Remote Desktop Client. Я можу передати ім'я хоста, і можу кинути комутатор для підключення до консолі хостів Server 2003.

Я знаю, що це можна зробити далі. Наприклад:

  • Мій скрипт bash не працюватиме з пробілами в шляхах або іменами файлів :)
  • Я думаю, що будь-які дані XML у файлі .RDP можуть бути змінені sed.
  • Я включив ряд варіантів перемикача для підключення до консолі, тому що я старий і ніколи не можу згадати, який мені подобається. Б'юсь об заклад, що сценарій bash має більш елегантне рішення, ніж я.

Ось як я це зробив:

  1. Створіть профіль шаблону Microsoft RDP із усіма бажаними налаштуваннями. Назвіть його "template.rdp". Зробіть його підключенням до підробленого сервера. Я використовував ім'я сервера "zzxyzyz". Це використовується в команді 'sed' як рядок для пошуку та заміни справжнього імені сервера.
  2. Створіть bash-скрипт, щоб скопіювати template.rdp у temp.rdp, а потім влаштуйте temp.rdp з потрібним ім'ям хоста, яке передається при виклику сценарію. Я назвав свій скрипт bash 'rdp.sh'.
  3. Змініть '~ / .bash_profile', щоб він включив псевдонім до 'rdp.sh'
  4. Зробіть сценарій bash виконуваним: chmod + x rdp.sh
  5. Їй дядько Боба

Зміст мого сценарію 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}

Псевдонім додано до .bash_profile
(Це передбачає, що мій файл сценарію rdp.sh знаходиться в моєму домашньому каталозі, ~ /)

alias rdp=~/rdp.sh

Зробіть сценарій виконуваним:

sudo chmod +x rdp.sh

Запустіть сценарій:
Ось приклад, який включає перемикач консолі. У сценарії я залишив рядок налагодження, який показує, що буде sed'd у файл 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 обробляє посилання rdp: // зараз:

Microsoft Remote Desktop використовує схему URI rdp: // query_string для зберігання заздалегідь налаштованих параметрів атрибутів, які використовуються при запуску клієнта. Рядки запиту являють собою окремий або набір атрибутів RDP, що містяться в URL-адресі. Атрибути RDP відокремлюються символом ampersand (&).

Наприклад, при підключенні до ПК рядком є:

rdp: // full% 20address = s: mypc: 3389 & audiomode = i: 2 та відключити% 20themes = i: 1

Усі атрибути задокументовані на сторінці технічної підтримки URI схеми віддаленого робочого столу .


Я хотів би побачити кілька прикладних URL-адрес. У мене місцевий порт 3389 перенаправлений на машину Windows, і я підключаюсь як користувач "et" за допомогою офіційного додатка Microsoft Remote Desktop. Але я не можу побудувати URL-адресу, яка не дає помилки.
Бруно Броноський

Спробуйте використовувати 127.0.0.2 замість localhost?

1
Чи є якісь ідеї щодо збереження / передачі паролів?
Бруно Броноський

1
Я зараз роблю збереження пароля в додатку Microsoft Remote Desktop (для Mac). Однак моя мета - запустити підключення до нового IP: Port через командний рядок після відкриття цього порту через ssh тунель. Я просто намагаюся вдосконалити свій сценарій, який наразі закінчується на "Тепер змінити хост збереженого з'єднання на 10.10.13.55.589 та підключитися"
Бруно Броноський,

1
Будь ласка, повідомте мене, якщо ви знайдете спосіб :)

1

Ну, порадившись з моїм Microsoft TAM, я виявив, що немає можливості передати ім'я хоста клієнту Майкрософт через командний рядок.

CoRD, з іншого боку, може насправді робити те, що мені хотілося, обробляючи посилання rdp: //. Після встановлення CoRD, якщо ви введете текст

open rdp://servername

в терміналі або iTerm2, він відкриє сесію приймає імясервера в шнурі.

Я використовую Альфреда (http://www.alfredapp.com/) як альтернативу "Launchy" на Mac, щойно виявив це після того, як був давнім користувачем Quicksilver. Я купив Powerpack для Альфреда, який дозволяє використовувати ряд розширень, одне з яких дає йому можливість запускати сценарії оболонки. Тож я створив розширення скрипту оболонки, призначив ключове слово rdp, встановив його на "необхідний параметр" та встановив сценарій:

open rdp://{query}

Це дозволяє мені викликати alfred і ввести rdp {tab} ім'я сервера {return}, щоб відкрити сеанс підключення до віддаленого робочого столу до віддаленого сервера.


0

Наведений вище сценарій не працює з найновішим "Віддаленим робочим столом Microsoft". Посилання програми на змінну було проблематичним, тому я важко кодував шлях (який відрізняється від оригінального прикладу). Мені також потрібно було видалити параметр '--args', і він почав працювати.

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

0

Таким чином, це здебільшого для того, щоб вилучити інші відповіді та уникати сценаріїв хак:

(TL; DR: раніше, можливо, це не було правдою, але RDP Microsoft тепер автоматично обробляє файли .rdp open)

У мене дуже багато профілів, які вже зберігаються в графічному інтерфейсі RDP. (До речі, список ~/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/ )

Щоб зробити його командним:

  1. Виберіть профіль у графічному інтерфейсі
  2. Файл -> Експорт створює .rdpфайл, зазначаючи, що в ньому не буде інформації про пароль
  3. (Вивчіть .rdp, щоб побачити, як параметри відповідають синтаксису rdp: //)
  4. Просто openім'я файлу.rdp з командного рядка

-1

Я думаю, було б так само просто зробити шаблон для кожного сервера, до якого ви хочете підключитися, а також один із порожнім серверним полем для тих "один раз у житті" з'єднань. Я просто спливаю їх у папці і назви або нумерую їх, щоб отримати правильне замовлення. Перетягніть папку до док-станції, і у мене є місце, де я можу натиснути, щоб отримати швидкий список шаблонів rdp, який я можу потім просто одним клацанням підключити. Або я можу Command + Space та ввести ім’я файлу та натисніть клавішу Enter, щоб запустити його. АБО ВИ МОЖЕТЕ ТИПУВАТИ TYPEY TYPEY TYPE та встановити всі види програм управління.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.