Метод интеграции скриптов Powershell с рабочим процессом, отличным от Windows?

Метод интеграции скриптов Powershell с рабочим процессом, отличным от Windows?

Обожаю запах новых машин по утрам.

Я автоматизирую рабочий процесс создания машины, который включает в себя несколько отдельных систем в моей инфраструктуре, некоторые из которых включают 15-летние скрипты Perl на хостах Solaris, PXE-загрузку систем Linux и Powershell на Windows Server 2008.

Я могу написать сценарий для каждой из отдельных частей, и интеграция автоматизации Linux и Unix довольно проста, но я не знаю, как надежно связать сценарии Powershell с остальными процессами.

Я бы предпочел, чтобы процесс начался на хосте Linux, поскольку я предполагаю, что в конечном итоге он превратится в веб-приложение, работающее на сервере Apache, но если его нужно начать на Windows, то я с большой долей сомнения согласен с этим.

Мне бы в идеале хотелось что-то вродеpsexecдля работы Linux против Windows, но ответ в этом направлении, по-видимому,Cygwin, и как бы я ни ценил всю ту тяжелую работу, которую они проделали, это никогда не былочувствовал себя правильно, если вы понимаете, о чем я. Он отлично подходит для рабочего стола и дает много функциональности, но я считаю, что серверы Windows должны рассматриваться как серверы Windows, а не как ублюдочные машины Unix (что, кстати, является моим аргументом и против серверов OSX, и онина самом делеUnix). В любом случае, я не хочу использовать Cygwin, если только это не последний и единственный вариант.

Так что, полагаю, я спрашиваю, есть ли способ выполнять задания на машинах Windows из Linux. Без Cygwin. Я открыт для идей и предложений, включая "Смотри, идиот, все используют Cygwin, так что смирись и смирись с этим". Заранее спасибо!

решение1

Я потратил много часов на решение этой проблемы, и в конечном итоге все свелось к двумжизнеспособныйварианты (существует множество нежизнеспособных вариантов):

  1. Создайте Windows-компьютер со службой IIS, размещающей WebAPI, который одновременно доменизирован и настроен таким образом, чтобы сеансы WinRM с него работали.
  2. Cygwin

При втором варианте вы застряли, пробираясь сквозь слой абстракции GNU/Posix, чтобы добраться до реальных битов Windows. Что ограничивает ваши возможности с ним.

Первый вариант в значительной степени создает веб-основанный уровень абстракции, который вы пишете сами поверх полной установки Windows с собственным стеком. Если вы готовы поработать, главному серверу Linux нужно будет сделать только несколько вызовов curl, чтобы сделать то, что нужно. Это работает лучше всего, когда скрипты запускаются и забываются, поскольку создание системы обратного вызова требует гораздо больше усилий.

решение2

Вы также можете купить кроссплатформенное программное обеспечение для планирования или автоматизации рабочих процессов, которое может запускать собственные скрипты на многих хостах в зависимости от предыдущих действий или даже их возвращенных результатов. Крупные предприятия используют программное обеспечение, такое как Tivoli, UC4, Espresso (теперь CA dSeries), которое делает это, и я использовал его на крупных предприятиях, которым нужно было делать такие вещи. К вашему сведению, они часто имеют собственную поддержку для таких вещей, как задания Oracle, чтобы дать вам представление о ценнике, на который вы можете смотреть.

(На моей прошлой работе они также использовали Cygwin)в любом случае, чтобы они могли использовать те же скрипты Perl без изменений, когда рабочие нагрузки перемещаются между платформами. Очень весело.)

Вы также можете попробовать создать свой собственный проект, как предлагает @sysadmin1138; это был бы интересный проект, и, возможно, он окажется достаточно надежным, чтобы его можно было использовать и не вызывать вас в 2 часа ночи, когда финансовый экспорт не удается с первой попытки.

решение3

Я бы использовал функцию Powershell Web Access, представленную в Powershell v3.0. Она позволяет использовать скрипты Powershell с хоста Linux.

решение4

Насколько отвратительно вы хотите себя чувствовать после этого, ведь всегда есть telnet :)

А если серьезно, зачем вам сервер Linux для вызова скрипта PowerShell? Можете ли вы перепроектировать свой рабочий процесс так, чтобы сервер Linux просто доставлял правильный образ boot.wim через tftp на хост с загрузкой PXE? В прошлом мне удавалось сохранять образ Windows с разными файлами ответов на файловом сервере Windows и доставлять пользовательский загрузочный образ WinPE с помощью tftpd с хоста Linux. Затем вы можете заставить файл ответов вызывать правильный скрипт PowerShell, и вам не придется иметь дело с кроссплатформенной гадостью вроде Cygwin.

Связанный контент