Gestione di Windows Powershell dal terminale Linux


31

Gestisco i server Windows Server 2012. Sto imparando PowerShell per gestire questi server dalla riga di comando. La mia workstation esegue Ubuntu e di solito gestisco i server Linux collegandomi tramite SSH.

Esiste un modo in cui posso usare Windows PowerShell su server Windows dalla mia workstation Linux attraverso la riga di comando come l'accesso SSH su Linux?


Esistono prodotti di terze parti che forniscono un server SSH per Windows con PowerShell come shell predefinita. ad es. powershellserver.com
Zoredache,

6
Personalmente preferisco gestire Windows da una macchina (virtuale) Windows e Linux da una macchina Linux. Questo sembra aiutare a preservare ciò che resta della mia sanità mentale.
Michael Hampton

Ho quello che stai cercando di ottenere, ma finché riesci a eseguire i comandi PowerShell su un host Windows non riesci a gestire gli altri da quella sessione PS?
Andy,

@Andy - il mio punto esatto.
mfinni,

Mi sto interessando al progetto Pash ( github.com/Pash-Project/Pash ). Vogliono reimplementare PowerShell su Linux. Ora sto provando a compilare su una macchina Raspberry Pi per vedere se posso emettere in remoto un comando di spegnimento
usr-local-ΕΨΗΕΛΩΝ

Risposte:


15

Alcune opzioni:

  1. Installa un server SSH su un computer Windows, SSH in, esegui Powershell sul box di Windows
  2. Esegui un client RDP su Linux, RDP in, esegui Powershell sulla finestra di Windows
  3. Utilizzare Powershell Web Access, accedere al server gateway POSH WA con un browser, eseguire Powershell tramite il browser

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

Non sono a conoscenza di alcun eseguibile POSH per Linux, quindi non puoi eseguire comandi POSH direttamente da una shell in Linux: devi prima entrare nel computer Windows in qualche modo, come RDP, console remota (DRAC, iLO), SSH, o POSH Web Access.

/ Modifica: sembra che ci siano alcune opzioni. http://sharpcodenotes.blogspot.com/2014/01/running-powershell-commands-from-linux.html

Potresti provare a convincere OpenWSMan a fare quello che vuoi, ma penso che dovresti creare ogni comando come una richiesta URL piuttosto che semplicemente emettere il comando Powershell corretto - come ho detto, non esiste un vero Powershell per Linux. È possibile installare la gemma ruby ​​di WinRB su ogni macchina Windows e quindi eseguire il codice Ruby sulla casella Linux per chiamare i comandi Powershell.

In nessun caso sembra che otterrai l'esperienza interattiva di Powershell, come il completamento delle schede, l'aiuto, ecc. Questi sembrano essere per l'esecuzione di uno script o di un singolo comando e presumibilmente dovrai catturare errori o altri feedback per conto proprio. Non otterrai una soluzione di prima classe su Linux.

/ Modifica di nuovo - sì, MSDN afferma che questo tenderà ad essere brutto / goffo. Anche la soluzione semplice / efficace che offre non sembra divertente.

Sebbene il remoting Powershell sia basato su WS-Management, in realtà è un protocollo all'interno di un protocollo e provare a interagire direttamente con PSRP (Powershell Remoting Protocol) richiederebbe essenzialmente la replica di Powershell sul client.


Questo può fare il lavoro ... ma devo installare il server SSH su ogni Windows Server. Per quanto ne so, PowerShel utilizza WS-Management, uno standard aperto ... c'è qualche client Linux che crea questo tipo di connessione?
Ederson,

2
No signore. Una volta che hai una shell su una finestra di Windows (supponendo che sia nello stesso dominio delle altre finestre di Windows) puoi usare Powershell Remoting. Oppure puoi usare DSC, Desired State Config. Oppure potresti lavorare su cose come AD o MS Exchange che non funzionano comunque su un singolo server, ma si collegano alla directory utilizzando qualsiasi server DC o CAS disponibile.
mfinni,

2
Once you have a shell on a Windows box you can use Powershell Remoting.- Tieni presente che quasi sicuramente ti imbatterai nel problema dell'autenticazione a 2 hop con questo. Quasi certamente dovrai usare l'autenticazione CredSSP.
Zoredache,

Incontrerà questo problema se persegue uno dei primi due metodi? Io (penso di) sapere che non hai questo problema usando RDP.
mfinni,

1
Solo per notare, Pash ( github.com/Pash-Project/Pash ) potrebbe potenzialmente avere questa capacità ad un certo punto, ma probabilmente sarà piuttosto lontano nel futuro. Stanno ancora cercando di implementare le basi di PowerShell per ora.
supercheetah


4

Sì, hai 2 opzioni:

  1. È possibile installare il server SSHd su Windows e nella configurazione impostare il percorso per PowerShell.

    Per questo è possibile utilizzare il tutorial per l' installazione di SSHd e il percorso di configurazione di PowerShell.

    In breve:

    1. Installa freeSSHd
    2. Aggiungi un nuovo account utente e consenti l'accesso a SSH
    3. Abilita la porta SSH in Windows Firewall
    4. Configurare il percorso per PowerShell.exe
  2. PowerShell Web Access (solo Win Server 2012 R2)

    Ecco un tutorial su Technet: blogs.technet.com/b/canitpro/archive/2013/11/14/step-by-step-deploy-powershell-web-access.aspx


Questo può fare il lavoro ... ma devo installare e configurare il server SSH su ogni Windows Server. Per quanto ne so, PowerShell utilizza WS-Management, uno standard aperto ... esiste qualche client Linux che crea questo tipo di connessione?
Ederson,

Ho aggiunto un'opzione con link, se puoi 2012 R2, questo può aiutarti. Ma non è ancora "integrato" e con client. Si accede tramite browser.
zorbon.cz,

3

Testato in Ubuntu 14.04 LTS

Scarica e installa winexe:

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

dpkg -i winexePTH1.1.0-1.deb

Utilizzo di base

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

Come esempio:

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

2
Per favore, aggiungi qualche dettaglio in più per spiegare questa risposta ...
Pierre.Vriens,

2

Puoi anche installare win32-openSSH a mano da https://github.com/PowerShell/Win32-OpenSSH o tramite Chocolatey https://chocolatey.org o anche più velocemente tramite Boxstarter (che utilizza Chocolatey sotto il cofano) https: // boxstarter.org (installazione rapida https://boxstarter.org/packages/nr/win32-openssh ).

Ci vuole un po 'di installazione, ma è una porta win32 nativa (sì, davvero!) Gestita dai ragazzi Microsoft che fanno PowerShell.

Altrimenti, come qualcuno ha detto, potresti installare la gemma WinRM su Linux e ottenere un po 'di connettività sul protocollo WinRM, ma non è carino come avviare una PSSession.

Inoltre, le persone dietro la gemma WinRM (WinRb) stanno anche cercando di implementare un'interazione PowerShell più nativa che esegue il tunneling di PowerShell su WinRM che sarà più funzionale per i caricamenti e più veloce anche per altre operazioni. Vedi questo post del blog, http://www.hurryupandwait.io/blog/a-look-under-the-hood-at-powershell-remoting-through-a-ruby-cross-plaform-len

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.