Zarządzanie Windows Powershell z terminala Linux

31

Zarządzam serwerami Windows Server 2012. Uczę się PowerShell do zarządzania tymi serwerami za pomocą wiersza poleceń. Na mojej stacji roboczej działa Ubuntu i zwykle zarządzam serwerami Linux, łącząc się przez SSH.

Czy istnieje sposób, aby używać Windows PowerShell na serwerach Windows z mojej stacji roboczej Linux poprzez wiersz poleceń, taki jak dostęp SSH w systemie Linux?

Ederson
źródło
Istnieją produkty innych firm, które zapewniają serwer SSH dla systemu Windows z powłoką PowerShell jako domyślną powłoką. np. powershellserver.com
Zoredache
6
Osobiście wolę zarządzać systemem Windows z komputera z systemem Windows (wirtualnym), a Linux z komputera z systemem Linux. To wydaje się pomagać zachować to, co zostało z mojego zdrowia psychicznego.
Michael Hampton
Rozumiem, co próbujesz osiągnąć, ale dopóki możesz uruchamiać polecenia PowerShell na jednym hoście Windows, nie możesz zarządzać innymi z tej sesji PS?
Andy
@Andy - dokładnie o to mi chodzi.
mfinni
Zainteresowałem się projektem Pash ( github.com/Pash-Project/Pash ). Chcą ponownie wdrożyć PowerShell w systemie Linux. Próbuję teraz skompilować na maszynie Raspberry Pi, aby sprawdzić, czy mogę zdalnie wydać polecenie zamknięcia systemu
usr-local-ΕΨΗΕΛΩ

Odpowiedzi:

15

Niektóre opcje:

  1. Zainstaluj serwer SSH na komputerze z systemem Windows, włącz SSH, uruchom PowerShell w polu Windows
  2. Uruchom klienta RDP w systemie Linux, RDP w, uruchom PowerShell na polu Windows
  3. Użyj Powershell Web Access, uderz w serwer bramy POSH WA za pomocą przeglądarki, uruchom Powershell przez przeglądarkę

http://technet.microsoft.com/en-us/library/hh831611.aspx

Nie znam żadnych plików wykonywalnych POSH dla Linuksa, więc nie możesz uruchamiać poleceń POSH bezpośrednio z powłoki w Linuksie - najpierw musisz jakoś dostać się na maszynę Windows, jak RDP, zdalna konsola (DRAC, iLO), SSH, lub POSH Web Access.

/ Edytuj - wygląda na to, że jest kilka opcji. http://sharpcodenotes.blogspot.com/2014/01/running-powershell-commands-from-linux.html

Możesz spróbować nakłonić OpenWSMan do robienia tego, co chcesz, ale myślę, że będziesz musiał stworzyć każdą komendę jak żądanie adresu URL, zamiast po prostu wydać poprawną komendę Powershell - jak powiedziałem, nie ma w rzeczywistości Powershell dla Linuksa. Możesz zainstalować klejnot Ruby WinRB na każdym komputerze z systemem Windows, a następnie uruchomić kod Ruby na swoim Linux-ie, aby wywołać polecenia PowerShell.

W żadnym wypadku nie wydaje się, że otrzymasz interaktywne środowisko Powershell, takie jak uzupełnianie tabulatorów, pomoc itp. Wydaje się, że służą one do uruchamiania skryptu lub pojedynczego polecenia i prawdopodobnie będziesz musiał wychwycić wszelkie błędy lub inne opinie samemu. Nie dostaniesz pierwszorzędnego rozwiązania w systemie Linux.

/ Edytuj ponownie - tak, MSDN mówi, że będzie to brzydkie / niezgrabne. Nawet proste / skuteczne rozwiązanie, które daje, nie wydaje się zabawne.

Chociaż zdalne zarządzanie Powershell opiera się na WS-Management, tak naprawdę jest to protokół wewnątrz protokołu, a próba bezpośredniej interakcji z PSRP (Powershell Remoting Protocol) zasadniczo wymagałaby replikacji Powershell na kliencie.

mfinni
źródło
Może to zrobić zadanie ... ale muszę zainstalować serwer SSH na każdym serwerze Windows. O ile mi wiadomo, PowerShel używa WS-Management, Open Standard ... czy jest jakiś klient Linux, który tworzy takie połączenie?
Ederson
2
Nie proszę pana. Gdy masz powłokę na polu Windows (zakładając, że jest ona w tej samej domenie co inne pola Windows), możesz użyć Powershell Remoting. Lub możesz użyć DSC, Desired State Config. Lub możesz pracować nad takimi rzeczami, jak AD lub MS Exchange, które i tak nie działają na jednym serwerze, ale łączą się z katalogiem, używając dowolnego dostępnego serwera DC lub CAS.
mfinni
2
Once you have a shell on a Windows box you can use Powershell Remoting.- Pamiętaj, że prawie na pewno napotkasz na to problem uwierzytelnienia 2-przeskokowego. Prawie na pewno będziesz musiał użyć uwierzytelnienia CredSSP.
Zoredache
Czy napotka ten problem, jeśli zastosuje jedną z dwóch pierwszych metod? Wiem (myślę, że), że nie masz tego problemu z używaniem RDP.
mfinni
1
Należy zauważyć, że Pash ( github.com/Pash-Project/Pash ) może potencjalnie mieć tę funkcję w pewnym momencie, ale prawdopodobnie będzie to całkiem daleko w przyszłości. Wciąż próbują po prostu zaimplementować podstawy PowerShell.
supercheetah
4

Tak, masz 2 opcje:

  1. Możesz zainstalować serwer SSHd w systemie Windows oraz w konfiguracji skonfigurować ścieżkę do PowerShell.

    W tym celu możesz skorzystać z samouczka instalacji SSHd i konfiguracji ścieżki PowerShell.

    W skrócie:

    1. Zainstaluj freeSSHd
    2. Dodaj nowe konto użytkownika i zezwól na dostęp SSH
    3. Włącz port SSH w Zaporze systemu Windows
    4. Skonfiguruj ścieżkę do PowerShell.exe
  2. PowerShell Web Access (tylko Win Server 2012 R2)

    Tam masz jeden samouczek na Technet - blogs.technet.com/b/canitpro/archive/2013/11/14/step-by-step-deploy-powershell-web-access.aspx

zorbon.cz
źródło
Może to zrobić zadanie ... ale muszę zainstalować i skonfigurować serwer SSH na każdym serwerze Windows. O ile mi wiadomo, PowerShell używa WS-Management, Open Standard ... czy jest jakiś klient Linux, który tworzy takie połączenie?
Ederson
Dodałem jedną opcję z linkiem, jeśli możesz 2012 R2, to może ci pomóc. Ale nadal nie jest „wbudowany” i z klientem. Dostęp do niego odbywa się za pośrednictwem przeglądarki.
zorbon.cz
3

Testowane w Ubuntu 14.04 LTS

Pobierz i zainstaluj winexe:

wget https://passing-the-hash.googlecode.com/files/winexePTH1.1.0-1.deb

dpkg -i winexePTH1.1.0-1.deb

Podstawowe użycie

winexe -U DOMAIN/USERNAME%PASSWORD //MACHINEIP "cmd.exe"

Jako przykład:

echo -ne '\n' | winexe -U DOMAIN/USERNAME%PASSWORD //IP 'powershell.exe -command "Get-Process | Select-Object Name, ProcessName"' | sort -u
eishv
źródło
2
Dodaj więcej szczegółów, aby wyjaśnić tę odpowiedź ...
Pierre.Vriens,
2

Możesz również zainstalować win32-openSSH ręcznie z https://github.com/PowerShell/Win32-OpenSSH lub przez Chocolatey https://chocolatey.org lub jeszcze szybciej przez Boxstarter (który wykorzystuje Chocolatey pod maską) https: // boxstarter.org (szybka instalacja https://boxstarter.org/packages/nr/win32-openssh ).

To wymaga trochę konfiguracji, ale jest to macierzysty (tak, na prawdę!) Port win32 obsługiwany przez facetów Microsoftu wykonujących PowerShell.

W przeciwnym razie, jak ktoś wspomniał, możesz zainstalować klejnot WinRM w systemie Linux i uzyskać trochę łączności przez protokół WinRM, ale to nie jest tak przyjemne, jak rozpoczęcie PSSession.

Dodatkowo, ludzie stojący za klejnotem WinRM (WinRb) również zastanawiają się nad implementacją bardziej natywnej interakcji PowerShell, która tuneluje PowerShell nad WinRM, która będzie bardziej funkcjonalna dla przesyłania i szybsza dla innych operacji. Zobacz ten post na blogu, http://www.hurryupandwait.io/blog/a-look-under-the-hood-at-powershell-remoting-through-a-ruby-cross-plaform-len

dragon788
źródło