Sposób na integrację skryptów Powershell z przepływem pracy innym niż Windows?


Uwielbiam zapach nowych samochodów o poranku.
Automatyzuję przepływ pracy przy tworzeniu maszyn, który obejmuje kilka oddzielnych systemów w mojej infrastrukturze, z których niektóre zawierają 15-letnie skrypty Perla na hostach Solaris, systemy Linux z uruchamianiem PXE i Powershell w systemie Windows Server 2008.
Potrafię stworzyć skrypt dla każdej z oddzielnych części, a integracja automatyzacji Linuksa i Uniksa jest całkiem łatwa, ale nie rozumiem, jak niezawodnie łączyć skrypty Powershell z resztą procesów.
Wolałbym, aby proces rozpoczynał się na hoście z systemem Linux, ponieważ zakładam, że zakończy się jako aplikacja internetowa żyjąca na serwerze Apache, ale jeśli musi rozpocząć się w systemie Windows, z wahaniem się z tym zgadzam.
Idealnie chciałbym coś takiego

psexec
http://technet.microsoft.com/e ... .aspx
aby Linux działał z Windows, ale wydaje się, że odpowiedź w tym kierunku jest

Cygwin
http://www.cygwin.com/
i chociaż doceniam ich ciężką pracę, ona nigdy

czuł się dobrze
, Jeśli wiesz co mam na myśli. Jest świetny dla komputerów stacjonarnych i zapewnia wiele funkcji, ale czuję, że serwery Windows powinny być traktowane jak serwery Windows, a nie nędzne maszyny Unix (co, nawiasem mówiąc, jest moim argumentem przeciwko serwerom OSX, a one

tak właściwie

Unix). W każdym razie nie chcę używać Cygwin, chyba że jest to ostatnia i jedyna opcja.
Więc myślę, że pytam, czy istnieje sposób na wykonywanie zadań na komputerach z systemem Windows z poziomu Linuksa. Bez Cygwina. Jestem otwarty na pomysły i sugestie, w tym „Spójrz, idioto, wszyscy używają Cygwin, więc nie spiesz się i wymyśl to”. Z góry dziękuję!
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Godzinami zastanawiałem się nad tym właśnie problemem, a ostatecznie sprowadził się do dwóch

wykonalny

opcje (istnieje wiele nierentownych opcji):
  • Utwórz okno systemu Windows z usługami IIS obsługującymi interfejs WebAPI będący domeną i skonfigurowany do uruchamiania z tego miejsca sesji usługi WinRM.
  • Cygwin

W przypadku drugiej opcji utkniesz na swojej drodze przez warstwę abstrakcji GNU/Posix, aby dostać się do faktycznych fragmentów systemu Windows. Co ogranicza to, co możesz z tym zrobić.
Pierwsza opcja prawie tworzy warstwę abstrakcji sieci Web, którą piszesz samodzielnie na instalacji systemu Windows z pełnym natywnym stosem. Jeśli jesteś gotowy do pracy, główny serwer Linuksa musi wykonać tylko kilka wywołań curl, aby to zrobić. Działa to najlepiej, gdy skrypty są uruchomione i zapomniane, ponieważ utworzenie systemu wywołań zwrotnych wymaga znacznie więcej pracy.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Użyłbym funkcji Powershell Web Access wprowadzonej w Powershell v3.0. Pozwala to na używanie skryptów Powershell z hosta Linux.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz także kupić oprogramowanie do planowania lub automatyzacji przepływu pracy dla wielu platform, które może uruchamiać własne skrypty na wielu hostach na podstawie wcześniejszych działań lub nawet ich wyników. Duże przedsiębiorstwa używają oprogramowania takiego jak Tivoli, UC4, Espresso (obecnie CA dSeries), które to robi, a ja używałem go w dużych przedsiębiorstwach, które musiały robić tego typu rzeczy. Dla Twojej informacji często mają wbudowane wsparcie dla rzeczy takich jak Oracle Jobs, aby dać ci wyobrażenie o cenie, na którą możesz patrzeć.
(W mojej poprzedniej pracy używali również Cygwin

tak czy siak

dzięki czemu mogą używać niezmienionych tych samych skryptów Perla podczas przenoszenia obciążeń między platformami. Dużo zabawy.)
Możesz także spróbować stworzyć swój własny, jak sugeruje @ sysadmin1138; byłby to fajny projekt, a może nawet być wystarczająco solidny, aby był użyteczny i nie przenosił Cię na strony o 2 nad ranem, kiedy eksport finansowy nie powiedzie się za pierwszym razem.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Serwer PowerShell
http://www.powershellinside.com/powershell/ssh/
umożliwia łączenie się z serwerem Windows przez SSH i uzyskanie konsoli PowerShell. Nie korzystałem z niego od czasu bezpłatnego okresu próbnego, ale moje nieformalne użytkowanie udowodniło mi, że jest to całkiem niezawodny produkt.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jak brzydko chcesz się po tym czuć, bo zawsze jest telnet :)
Poważnie, dlaczego miałbyś potrzebować serwera Linux do wywołania skryptu PowerShell? Czy możesz zmienić przepływ pracy, aby serwer Linux po prostu dostarczał prawidłowy obraz boot.wim za pośrednictwem tftp do hosta rozruchowego PXE? W przeszłości miałem szczęście z przechowywaniem obrazu systemu Windows z różnymi plikami odpowiedzi na serwerze plików systemu Windows i dostarczaniem niestandardowego obrazu rozruchowego WinPE przy użyciu tftpd z hosta Linux. Następnie możesz mieć plik odpowiedzi wywołujący poprawny skrypt PowerShell bez konieczności radzenia sobie z wieloplatformową obrzydliwością, taką jak Cygwin.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz użyć czegoś takiego jak nrpe, aby zdalnie wykonać skrypt PowerShell na hoście Windows. Możesz chcieć zmodyfikować swoje skrypty PowerShell, aby zwracały kody zakończenia zgodnie z oczekiwaniami od nrpe, ale nie ma powodu, dla którego nie możesz wywołać check_nrpe ze swoich skryptów na hoście Linux.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W tym temacie

nielogiczne hacki
https://serverfault.com/questi ... 38534
Czy rozważałeś nadużywanie oprogramowania do ciągłej integracji jako międzyplatformowego narzędzia do orkiestracji?
Zainstaluj kreatora CI
https://wiki.jenkins-ci.org/di ... nkins
gdzie wolisz, zainstaluj agenta na komputerze z systemem Windows (lub

to
https://wiki.jenkins-ci.org/di ... ndows
lub

to
https://wiki.jenkins-ci.org/di ... lessly), skonfiguruj zadanie tak, aby uruchamiało skrypt PowerShell (wywołując go bezpośrednio za pomocą konfiguracji poleceń wsadowych systemu Windows lub używając

podłącz
https://wiki.jenkins-ci.org/di ... lugin
jeśli chcesz napisać/zapisać swój skrypt w aplikacji CI) na agencie Windows i

uruchomić zadanie zdalnie
https://wiki.jenkins-ci.org/di ... uilds
przez curl lub podobny.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Pracuję w dużym przedsiębiorstwie, w którym ten problem występuje często. W przypadku procesów, które obecnie obsługujemy, nasze podejście zakłada, że ​​systemy Unix będą nawiązywać połączenia internetowe z serwerem „administracyjnym” systemu Windows, na którym działa ColdFusion w usługach IIS. Mamy klasy i funkcje, które są wyzwalane przez żądania GET, które używają dyrektywy cfexecute do uruchamiania niektórych skryptów PowerShell. Jest brzydki, ale działa. Przyglądamy się funkcjom usługi internetowej PowerShell v3, które pomogą Ci odejść od używania ColdFusion jako pośrednika.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się