Frage Windows Powershell vom Linux-Terminal aus verwalten


Ich verwalte Windows Server 2012 Server. Ich lerne PowerShell, um diese Server über die Befehlszeile zu verwalten. Meine Arbeitsstation führt Ubuntu aus und ich verwalte normalerweise Linux-Server, indem ich mich über SSH verbinde.

Gibt es eine Möglichkeit, Windows PowerShell auf Windows-Servern von meiner Linux-Workstation über die Befehlszeile wie den SSH-Zugriff unter Linux zu verwenden?


27
2017-10-21 18:33


Ursprung


Es gibt Produkte von Drittanbietern, die einen SSH-Server für Windows mit Powershell als Standard-Shell bereitstellen. z.B. powershellserver.com - Zoredache
Persönlich bevorzuge ich Windows von einem Windows (virtuellen) Computer und Linux von einem Linux-Computer zu verwalten. Dies scheint zu helfen, das zu bewahren, was von meinem Verstand übrig geblieben ist. - Michael Hampton♦
Ich bekomme, was Sie erreichen wollen, aber solange Sie Powershell-Befehle auf einem Windows-Host ausführen können, können Sie nicht die anderen von dieser PS-Sitzung verwalten? - Andy
@Andy - mein Punkt genau. - mfinni
Ich interessiere mich für das Pash-Projekt (github.com/Pash-Project/Pash). Sie möchten PowerShell unter Linux neu implementieren. Ich versuche jetzt, auf einem Raspberry-Pi-Rechner zu kompilieren, um zu sehen, ob ich aus der Ferne einen Befehl zum Herunterfahren ausgeben kann - usr-local-ΕΨΗΕΛΩΝ


Antworten:


Einige Optionen:

  1. Installieren Sie einen SSH-Server auf einem Windows-Computer, SSH in, führen Sie Powershell in der Windows-Box aus
  2. Führen Sie einen RDP-Client unter Linux, RDP in, PowerShell auf der Windows-Box ausführen
  3. Verwenden Sie Powershell Web Access, öffnen Sie den POSH WA Gateway-Server mit einem Browser und führen Sie PowerShell über den Browser aus

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

Ich kenne keine POSH-Executables für Linux, daher können Sie POSH-Befehle nicht direkt von einer Shell in Linux ausführen - Sie müssen sich zuerst irgendwie in den Windows-Rechner begeben, wie RDP, Remote-Konsole (DRAC, iLO), SSH, oder POSH Web Access.

/ Bearbeiten - sieht so aus, als gäbe es einige Optionen. http://sharpcodenotes.blogspot.com/2014/01/running-powershell-commands-from-linux.html

Sie könnten versuchen, OpenWSMan dazu zu bringen, das zu tun, was Sie wollen, aber ich denke, Sie müssten jeden Befehl wie eine URL-Anfrage erstellen, anstatt einfach den richtigen Powershell-Befehl auszugeben - wie gesagt, es gibt kein echtes Powershell für Linux. Sie könnten den WinRB-Ruby-Edelstein auf jedem Windows-Rechner installieren und dann Ruby-Code auf Ihrer Linux-Box ausführen, um Powershell-Befehle aufzurufen.

In keinem Fall scheint es, dass Sie das interaktive Powershell-Erlebnis erhalten, wie Tab-Vervollständigung, Hilfe usw. Diese scheinen für das Ausführen eines Skripts oder eines einzelnen Befehls zu sein, und Sie müssen vermutlich Fehler oder andere Rückmeldungen erfassen allein. Sie werden keine erstklassige Lösung für Linux bekommen.

/ Nochmal bearbeiten - ja, MSDN sagt das wird dazu neigen, hässlich / klobig zu sein. Sogar die einfache / effektive Lösung, die er gibt, sieht wie kein Spaß aus.

Obwohl Powershell-Remoting auf WS-Management basiert, ist es in Wirklichkeit ein Protokoll innerhalb eines Protokolls und der Versuch, direkt mit PSRP (Powershell Remoting Protocol) zu interoperieren, würde im Wesentlichen eine Replikation von Powershell auf dem Client erfordern.


13
2017-10-21 18:45



Dies kann den Job erledigen ... aber ich muss den SSH-Server auf jedem Windows Server installieren. Soweit ich weiß, verwendet PowerShel WS-Management, einen offenen Standard ... gibt es einen Linux-Client, der diese Art von Verbindung herstellt? - Ederson
Nein Sir. Sobald Sie eine Shell in einer Windows-Box haben (vorausgesetzt, sie befindet sich in derselben Domäne wie die anderen Windows-Boxen), können Sie Powershell Remoting verwenden. Oder Sie können DSC, Desired State Config verwenden. Oder Sie arbeiten an Dingen wie AD oder MS Exchange, die sowieso nicht auf einem einzigen Server laufen, sondern sich mit dem Verzeichnis verbinden, indem Sie den verfügbaren DC- oder CAS-Server verwenden. - mfinni
Once you have a shell on a Windows box you can use Powershell Remoting. - Seien Sie sich bewusst, dass Sie damit fast sicher in das 2-Hop-Authentifizierungsproblem geraten. Sie werden fast sicher die CredSSP-Authentifizierung verwenden müssen. - Zoredache
Wird er auf dieses Problem stoßen, wenn er eine der beiden ersten Methoden verfolgt? Ich (denke ich) weiß, dass Sie dieses Problem nicht mit RDP haben. - mfinni
Nur um zu erwähnen, Pash (github.com/Pash-Project/Pash) könnte diese Fähigkeit möglicherweise irgendwann haben, aber das wird wahrscheinlich ziemlich weit in die Zukunft gehen. Sie versuchen immer noch, die Grundlagen von PowerShell zu implementieren. - supercheetah


Microsoft veröffentlicht PowerShell offiziell unter Linux und OSX. Siehe die Ankündigung vom August 2016: PowerShell ist Open Source und steht unter Linux zur Verfügung

Es ist derzeit in Alpha. Ubuntu und Centos werden offiziell unterstützt, mehr auf dem Weg. Wenn Sie abenteuerlustig sind, finden Sie hier eine Installationsanleitung: https://github.com/PowerShell/PowerShell/blob/master/docs/installation/linux.md


5
2017-11-23 12:35





Ja, Sie haben 2 Möglichkeiten:

  1. Sie können den SSHd-Server unter Windows und im Konfigurationssatz installieren Pfad zur PowerShell.

    Dazu können Sie das Tutorial für verwenden Installation von SSHd und Aufbau PowerShell-Pfad

    Zusamenfassend:

    1. Installieren Sie freeSSHd
    2. Fügen Sie ein neues Benutzerkonto hinzu und erlauben Sie den SSH-Zugriff
    3. Aktivieren Sie den SSH-Port in der Windows-Firewall
    4. Konfigurieren Sie den Pfad zu PowerShell.exe
  2. PowerShell-Webzugriff (nur Windows Server 2012 R2)

    Dort haben Sie ein Tutorial auf Technet - blogs.technet.com/b/canitpro/archive/2013/11/14/step-by-step-deploy-powershell-web-access.aspx 


3
2017-10-21 18:50



Dies kann den Job erledigen ... aber ich muss den SSH Server auf jedem Windows Server installieren und konfigurieren. Soweit ich weiß, verwendet PowerShell WS-Management, einen offenen Standard ... gibt es einen Linux-Client, der diese Art von Verbindung herstellt? - Ederson
Ich habe eine Option mit Link hinzugefügt, wenn Sie 2012 R2 können dann kann dies Ihnen helfen. Aber immer noch nicht "eingebaut" und mit Client. Sie greifen über den Browser darauf zu. - zorbon.cz


Getestet in Ubuntu 14.04 LTS

Downloaden und installieren Sie winexe:

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

dpkg -i winexePTH1.1.0-1.deb

Grundlegende Verwendung

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

Als Beispiel:

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

2
2018-04-07 08:00



Bitte fügen Sie weitere Details hinzu, um diese Antwort zu erklären ... - Pierre.Vriens


Sie können win32-openSSH auch manuell von installieren https://github.com/PowerShell/Win32-OpenSSH oder durch Chocolatey https://chocolatey.org oder noch schneller durch Boxstarter (der Chocolatey unter der Haube nutzt) https://boxstarter.org (schnelle Installation https://boxstarter.org/packages/nr/win32-openssh ).

Es braucht ein wenig Setup, aber es ist ein nativer (ja, für echt!) Win32-Port, der von den Microsoft-Jungs verwaltet wird, die PowerShell machen.

Sonst könnte jemand das WinRM-Juwel auf Linux installieren und ein wenig Konnektivität über das WinRM-Protokoll bekommen, aber das ist nicht so gut, als nur eine PSSession zu starten.

Zusätzlich versuchen die Leute, die hinter dem WinRM-Juwel (WinRb) stehen, auch eine nativere PowerShell-Interaktion zu implementieren, die PowerShell über WinRM tunnelt, was für Uploads funktioneller und für andere Operationen schneller ist. Sieh diesen Blogeintrag, http://www.hurryupandwait.io/blog/a-look-under-the-hood-at-powershell-remoting-through-a-ruby-cross-plasmo-len


1
2018-06-16 03:57