Remoteverbindung zu einem Windows über PowerShell unter Linux

Remoteverbindung zu einem Windows über PowerShell unter Linux

Ich versuche, über PowerShell eine Verbindung zu einem Windows-Rechner auf einem Linux-Rechner herzustellen, um einige Systeminformationen abzurufen, aber ich muss dies ohne die Verwendung von WinRm erreichen.

Zuerst habe ich die PowerShell gemäß den Anweisungen installiertHier. Das Starten der PowerShell hat pwshproblemlos funktioniert.

Dann habe ich versucht, mit dem folgenden Befehl einige Informationen über WMI abzurufen:

Get-WmiObject -Class Win32_Process -Impersonation 3 -ComputerName IP_ADDRESS

Die Rendite beträgt Get-WmiObject : The term 'Get-WmiObject' is not recognized as the name of a cmdlet, function, script file, or operable program..

Im Anschluss an dieÄnderungsprotokollFür die Version 6.0 des PowerShell-Kerns habe ich festgestellt, dass die Get-Wmi*-Funktionen durch Get-Cmi*-Äquivalente ersetzt werden sollten. Versuchen wir es:

Get-CimInstance -Class Win32_Process -Impersonation 3 -ComputerName IP_ADDRESS

Die Rendite beträgt:Get-CimInstance : The term 'Get-CimInstance' is not recognized as the name of a cmdlet, function, script file, or operable program.

Wenn ich nach der Liste der Befehle suche, sie eintippe Get-und dann die Tabulatortaste drücke, wird in der Rückgabe tatsächlich keine WMI- oder CIM-Funktion angezeigt.

Ich kann mich mit dem Cmdlet mit demselben Computer verbinden Invoke-Command, aber wie gesagt, ich muss dies ohne die Verwendung von WinRm erreichen, und das ist anscheinend nicht der Fall beiBefehl aufrufen

Nach langer Google-Suche habe ich nur eine ähnliche Frage gefundenhier in SO, aber es verwendet das Cmdlet Enter-PSSession, das auch verwendet wirdWinRMwenn ich das richtig verstanden habe.

Schließlich fand ich diesBlogeintragpasst wie angegossen zu meinen Bedürfnissen. Es schlägt jedoch die Verwendung von Cmdlets vor Invoke-WmiMethodund Invoke-CimMethoddas sind, was niemanden überraschen wird, keine erkannten Befehle.

Meine Frage lautet: Gibt es eine Möglichkeit, auf einem Linux-Rechner ohne die Verwendung von WinRm eine WMI-Abfrage auszuführen, um über PowerShell einige Windows-Informationen abzurufen?

Anmerkung 1: Ich kann die Cmdlets in der PowerShell auf einem Windows-Computer ausführen Get-Wmi*( Get-Cim*Verbindung beispielsweise über RPC).

Anmerkung 2: Ich kenne einProblemumgehungum damit in Linux ohne PowerShell umzugehen und es sollte für jemanden mit einem ähnlichen Problem funktionieren, aber es hat bei mir aufgrund eines unlösbaren (zumindest im Moment) nicht funktioniertKodierungsproblem;

DIE INFO

  • Betriebssystem: Debian 8.10

  • $PSVersionTable.PSVersion: 6.0.1

  • Remote-Windows: W10 Pro

Antwort1

Versuchen Sie stattdessen PoSH über SSH.

Hier sehen Sie die Schritt-für-Schritt-Anleitung:

PowerShell-Remoteverwaltung über SSH

Überblick

PowerShell-Remoting verwendet normalerweise WinRM für Verbindungsverhandlung und Datentransport. Für diese Remoting-Implementierung wurde SSH gewählt, da es jetzt sowohl für Linux- als auch für Windows-Plattformen verfügbar ist und echtes plattformübergreifendes PowerShell-Remoting ermöglicht. WinRM bietet jedoch auch ein robustes Hostingmodell für PowerShell-Remotesitzungen, was diese Implementierung noch nicht bietet. Und das bedeutet, dass die PowerShell-Remoteendpunktkonfiguration und JEA (Just Enough Administration) in dieser Implementierung noch nicht unterstützt werden.

Mit PowerShell-SSH-Remoting können Sie grundlegende PowerShell-Sitzungen zwischen Windows- und Linux-Rechnern remote verwalten. Dies geschieht, indem auf dem Zielcomputer ein PowerShell-Hostingprozess als SSH-Subsystem erstellt wird. Dies wird schließlich in ein allgemeineres Hostingmodell geändert, das der Funktionsweise von WinRM ähnelt, um die Endpunktkonfiguration und JEA zu unterstützen.

Die Cmdlets New-PSSession, Enter-PSSession und Invoke-Command verfügen nun über einen neuen Parametersatz, um diese neue Remoting-Verbindung zu ermöglichen.

https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting

Aktualisiert in Bezug auf den Kommentar von Anthony Geoghegan

Wie für ---

„Das sieht vielversprechend aus, aber der Link zum GitHub-Repository funktioniert nicht mehr.“

----Der Link führt direkt zum MS PS-Repository, also ist es seltsam, dass ein 404-Fehler auftritt. So oder so können Sie dies mithilfe von PowerShell direkt auf Ihr System bringen.

Ohnehin …

Find-Module -Name '*ssh*' | Format-table -AutoSize

# Results


Version Name                         Repository Description                                                                                                
------- ----                         ---------- -----------                                                                                                
2.1     Posh-SSH                     PSGallery  Provide SSH and SCP functionality for executing commands against remote hosts.                             
0.0.2.0 OpenSSHUtils                 PSGallery  Utilities and functions for configuring OpenSSH on Windows.                                                
2.1.3   SSHSessions                  PSGallery  Svendsen Tech's SSH-Sessions module provides SSH session creation, management and interaction from Power...
1.0.0   SSH                          PSGallery  Provides a PowerShell-based SSH client based on SSH.net  http://sshnet.codeplex.com/                       
0.0.75  PSSharedGoods                PSGallery  Module covering functions that are shared within multiple projects                                         
1.1.3   PowerSSH                     PSGallery  This module detects the first use of an SSH command, automatically runs the SSH agent, keeps the SSH aut...
0.9.5   WinSSH                       PSGallery  Install OpenSSH-Win64, optionally install ssh-agent and sshd Services. Also includes functions to help c...
1.0.1   ssh-wrapper                  PSGallery  Exposes ssh from WSL by wrapping: bash -c "ssh $args". Requires Windows Subsystem for Linux on Windows 10. 
0.3.1   posh-sshell                  PSGallery  Provides integration with ssh-agent and pageant from within Powershell                                     
2.0.1.8 SkypeForBusinessHybridHealth PSGallery  Uses on-premises modules such as Skype For Business and SkypeOnlineConnector to validate basic requireme...
1.0.4   PSShortcut                   PSGallery  This module eases working with Windows shortcuts (LNK and URL) files.                                      
1.1.4   PowerSSH-Legacy              PSGallery  This module detects the first use of an SSH command, automatically runs the SSH agent, keeps the SSH aut...
1.0     cEPRSSharepoint              PSGallery  DSCModule helps in installing & configuring the sharepoint site, Farm etc.,                                
0.0.3   dockeraccesshelper           PSGallery  Allow a user account to access the docker engine without elevated access rights                            
0.3     PSShareFile                  PSGallery  A PowerShell module to manipulate various objects in Citrix's ShareFile service                            
0.0.1   PSSherpaDesk                 PSGallery  PowerShell module for interacting with the SherpaDesk API  


Find-Module -Name '*Posh-SSH' | 
Save-Module -Path "$env:USERPROFILE\Documents\WindowsPowerShell\Modules" 
Install-Module -Name 'Posh-SSH'

Verwenden Sie diesen Link für die Demo von SSHRemoting

Ich habe es gerade gedrückt, also weiß ich, dass es funktioniert.

Sehen Sie sich diese YouTube-Videos an: PowerShell-SSH-Remoting in Aktion.

verwandte Informationen