Керування Windows Powershell з терміналу Linux


31

Я керую серверами Windows Server 2012. Я вчу PowerShell керувати цими серверами через командний рядок. Моя робоча станція працює на Ubuntu, і я, як правило, керую Linux серверами, підключаючись через SSH.

Чи можна використовувати Windows PowerShell на серверах Windows з моєї робочої станції Linux через командний рядок, наприклад, доступ SSH до Linux?


Існують сторонні продукти, які забезпечують SSH-сервер для Windows, що має оболонку за замовчуванням наприклад, powershellserver.com
Zoredache

6
Особисто я вважаю за краще керувати Windows з Windows (віртуальної) машини, а Linux - з машини Linux. Це, здається, допомагає зберегти те, що залишилося від мого розуму.
Майкл Хемптон

Я отримую те, чого ви намагаєтесь досягти, але поки ви можете запускати команди команд shell на одному хості Windows, чи не могли ви керувати іншими з цього сеансу PS?
Енді

@Andy - точно моя думка.
mfinni

Мене цікавить проект Pash ( github.com/Pash-Project/Pash ). Вони хочуть перетворити PowerShell на Linux. Зараз я намагаюся скласти на апараті Raspberry Pi, щоб побачити, чи можу я віддалено видати команду відключення
usr-local-ΕΨΗΕΛΩΝ

Відповіді:


15

Деякі варіанти:

  1. Встановіть SSH-сервер на машину Windows, SSH в, запустіть Powershell у вікні Windows
  2. Запустіть клієнт RDP на Linux, RDP в, запустіть Powershell у вікні Windows
  3. Використовуйте веб-доступ Powershell, натискайте на браузерний сервер шлюзу POSH WA, запустіть Powershell через браузер.

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

Я не знаю жодних виконуваних файлів POSH для Linux, тому ви не можете запускати команди POSH безпосередньо з оболонки в Linux - спочатку потрібно якось потрапити в машину Windows, як-от RDP, віддалена консоль (DRAC, iLO), SSH, або веб-доступ до POSH.

/ Редагувати - схоже, є деякі варіанти. http://sharpcodenotes.blogspot.com/2014/01/running-powershell-commands-from-linux.html

Ви можете спробувати змусити OpenWSMan робити те, що ви хочете, але я думаю, що вам доведеться скласти кожну команду, як запит URL, а не просто видавати правильну команду Powershell - як я вже сказав, для Linux немає фактичної Powershell. Ви можете встановити рубінну дорогоцінну камеру WinRB на кожній машині Windows, а потім запустити Ruby-код на своєму вікні Linux, щоб викликати команди Powershell.

Ні в якому разі не здається, що ви отримаєте інтерактивний досвід роботи з Powershell, наприклад, доповнення вкладки, допомога тощо. Здається, це для запуску сценарію або однієї команди, і, ймовірно, вам доведеться фіксувати будь-які помилки чи інші відгуки на свій погляд. Ви не збираєтеся отримувати першокласне рішення в Linux.

/ Ще раз редагуйте - так, MSDN каже, що це, як правило, некрасиво / незграбно. Навіть просте / ефективне рішення, яке він дає, виглядає як не весело.

Хоча видалення Powershell побудовано на базі WS-Management, це дійсно протокол в рамках протоколу, а спроба взаємодіяти з PSRP (Powershell Remoting Protocol) по суті вимагатиме реплікації Powershell на клієнті.


Це може зробити цю роботу ... але я повинен встановити SSH-сервер на кожен Windows Server. Наскільки я знаю, PowerShel використовує WS-менеджмент, відкритий стандарт ... чи є якийсь клієнт Linux, який здійснює такий тип зв'язку?
Едерсон

2
Ні, сер. Коли у вас є оболонка на вікні Windows (якщо припустити, що вона знаходиться в тому самому домені, що й інші вікна Windows), ви можете скористатися програмою Removers Powershell. Або ви можете використовувати DSC, бажану конфігурацію стану. Або ви можете працювати над такими речами, як AD або MS Exchange, які так чи інакше не працюють на одному сервері, але підключаються до каталогу, використовуючи будь-який сервер DC або CAS.
mfinni

2
Once you have a shell on a Windows box you can use Powershell Remoting.- Майте на увазі, що ви майже напевно зіткнетеся з проблемою аутентифікації з двома скачками. Вам майже напевно потрібно буде використовувати автентифікацію CredSSP.
Зоредаче

Чи вдасться він зіткнутися з цим питанням, якщо буде використовувати один із перших двох методів? Я (думаю, що я) знаю, що у вас немає проблеми з використанням RDP.
mfinni

1
Зауважимо лише, що Pash ( github.com/Pash-Project/Pash ) в певний момент потенційно може мати таку можливість, але це, швидше за все, буде далеко в майбутньому. Вони все ще намагаються просто отримати основи PowerShell, реалізованих на даний момент.
суперчеета

6

Microsoft офіційно випускає Powershell на Linux та OSX. Дивіться оголошення в серпні 2016 року: PowerShell працює з відкритим джерелом і доступний в Linux

Наразі це в альфа. Ubuntu та Centos офіційно підтримуються, більше на шляху. Якщо у вас є авантюра, інструкції з установки доступні тут: https://github.com/PowerShell/PowerShell/blob/master/docs/installation/linux.md


4

Так, у вас є два варіанти:

  1. Ви можете встановити SSHd-сервер у Windows та в конфігурації, налаштовуючи шлях до PowerShell.

    Для цього ви можете використовувати підручник для встановлення SSHd та конфігурації шляху PowerShell.

    Коротко:

    1. Встановіть freeSSHd
    2. Додайте новий обліковий запис користувача та дозвольте доступ до SSH
    3. Увімкніть порт SSH у брандмауері Windows
    4. Налаштуйте шлях до PowerShell.exe
  2. Веб-доступ PowerShell (лише Win Server 2012 R2)

    Там у вас є один підручник на Technet - blogs.technet.com/b/canitpro/archive/2013/11/14/step-by-step-deploy-powershell-web-access.aspx


Це може зробити цю роботу ... але я повинен встановити та налаштувати SSH-сервер на кожному Windows Server. Наскільки я знаю, PowerShell використовує WS-менеджмент, відкритий стандарт ... чи є якийсь клієнт Linux, який здійснює такий тип зв'язку?
Едерсон

Я додав один варіант із посиланням, якщо ви можете 2012 R2, то це може вам допомогти. Але все ще не "вбудований", а з клієнтом. Ви отримуєте доступ до нього через браузер.
zorbon.cz

3

Тестовано в Ubuntu 14.04 LTS

Завантажте та встановіть winexe:

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

dpkg -i winexePTH1.1.0-1.deb

Основне використання

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

Як приклад:

echo -ne '\n' | winexe -U DOMAIN/USERNAME%PASSWORD //IP 'powershell.exe -command "Get-Process | Select-Object Name, ProcessName"' | sort -u

2
Будь ласка, додайте ще детальну інформацію, щоб пояснити цю відповідь ...
Pierre.Vriens

2

Ви також можете встановити win32-openSSH вручну з https://github.com/PowerShell/Win32-OpenSSH або через Chocolatey https://chocolatey.org або навіть швидше через Boxstarter (який використовує Chocolatey під кришкою) https: // boxstarter.org (швидка установка https://boxstarter.org/packages/nr/win32-openssh ).

Це потребує невеликих налаштувань, але це рідний (так, справжній!) Порт win32, який підтримують хлопці Microsoft, які роблять PowerShell.

Інакше, як хтось згадував, ви можете встановити дорогоцінний камінь WinRM в Linux і отримати трохи підключення через протокол WinRM, але це не так приємно, як тільки запустити PSSession.

Крім того, люди, які стоять за дорогоцінним каменем WinRM (WinRb), також дивляться на реалізацію більш рідної взаємодії PowerShell, яка тунелює PowerShell над WinRM, яка буде більш функціональною для завантаження та швидшою для інших операцій. Дивіться цю публікацію в блозі, http://www.hurryupandwait.io/blog/a-look-under-the-hood-at-powershell-remoting-through-a-ruby-cross-plaform-len

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