
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 pwsh
problemlos 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-WmiMethod
und Invoke-CimMethod
das 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.