Скрипт AppleScript для подключения к Windows с помощью Microsoft Remote Desktop Connection

Чем меньше действий нужно для выполнения частых операций, тем лучше.

OS X — вещь хорошая, однако без Windows я обойтись не могу.

Mail.app порой плохо работает с Exchange. Например, меня не устраивают:

при обычной переписке он может запутаться в кодировках и адресаты получают нечитаемый текст. Каждый раз преобразовывать в plain text или выставлять UTF-8 — не выход. форматирование и шрифты при ответах и пересылках выглядит коряво при просмотре в Outlook. Альтернативы Microsoft Excel for Windows для меня нет:

iWork Numbers годится только для баловства. Попробуйте вставить в таблицу хотя бы тысячу строк (не супер-вычисления, а просто три колонки из текста и двух числовых полей), Numbers или просто умрёт с ошибкой, или будет грузить по полной программе CPU таблицы Excel в Numbers сильно меняют свой вид OpenOffice у меня работал некорректно и вылетал на некоторых таблицах Excel Microsoft Excel for Mac мог случайным образом преобразовать формулы в текст Если выполняются хотя бы минимально сложные задачи с Excel/Word/Powerpoint, то нужно использовать Windows.

Любителям поучить жить в очередной раз повторю. У вас может прекрасно работать Numbers/OpenOffice/LibreOffice, но на моих задачах и для моего workflow были неоднократные проблемы, и я не собираюсь есть кактус.

С Windows я работаю двумя способами:

локальная виртуализация Parallels на MBA и VMWare на Mini; удалённая виртуализация, соединяюсь с хостом по RDP. Для RDP пользуюсь Microsoft Remote Desktop Connection. CoRD красив, но на мой взгляд работает хуже (есть артефакты в графике и замедления работы), поэтому я его попробовал и отказался. Зайти и перезапустить сервис можно в каком угодно клиенте, а вот напряжённо работать удобнее в Microsoft RDP.

Любители обучения жизни и тут заметят, что тогда нужно использовать машину с нативным Windows без всякой виртуализации. Я снова сошлюсь на workflow — для работы мне на 95% нужен OS X (консоль, разработка, etc), только 5% времени я могу проводить в Windows. И бывает, что приходится в нём работать часами, переключаясь в процессе в OS X.

Такое долгое предисловие было к тому, что я хочу подключаться к Windows по RDP одним нажатием. Штатно же немного больше — найти RDC, запустить его, нажать Enter.

Для этого использую Keyboard Maestro. Пока в режиме триала, но скорее всего куплю программу. Любителям обучения жизни — нет, это не одна функция, которую я использую в программе за много денег. Например, KM следит за тем, чтобы несколько программ было всегда запущено, по другим клавишам запускается VPN и т.д.

Создаю макрос «Connect to Windows via RDC», триггер «The Hot Key ⌘F11 is pressed», действие «Execute AppleScript». Сложность в том, что Microsoft RDC не поддерживает AppleScript и ему нельзя указать адрес хоста через командную строку (я по крайней мере не нашёл, как это сделать)

-- Thx to Francis Vaughan http://boards.straightdope.com/sdmb/showthread.php? t=598763 set ip_address to »10.10.10.10» set rdc_name to «Remote Desktop Connection»

set thePListPath to (path to home folder as string) & «Documents: RDC Connections: Default.rdp» set thePListPosixPath to POSIX path of (thePListPath)

on appIsRunning (appName) tell application «System Events» to (name of processes) contains appName end appIsRunning

tell application «System Events» tell property list file thePListPosixPath tell contents set value of property list item «ConnectionString» to ip_address end tell end tell end tell

if not appIsRunning (rdc_name) then tell application rdc_name open thePListPath activate end tell else tell application rdc_name activate end tell end if

У меня только один хост на Windows, поэтому стоит проверка «if not appIsRunning (rdc_name)».

Потратил немного времени между другими задачами, автоматизировал процесс, потренировался. Одни плюсы. Заинтересованным читателям — польза от демонстрации метода. А любителям учить жизни — f…k off.

Полный текст статьи читайте на TheAppleGeek