PS Remote Cmdlets

Die PowerShell stattet einige Kommandos mit einem Parameter aus, welcher den Zugriff auf andere Computer erlaubt. Natürlich nur, wenn entsprechende Berechtigungen und Authentifizierungen vorliegen.

Cmdlets mit Parameter –Computername: (einfache Suche - mehr s.u.)

Get-Command -ParameterName Computername

Wir erhalten Cmdlets mit eingebauter Fernwartung. Hier genauer: ohne WS Management, also bei Windows ohne WinRM (Windows Remote Management)! Erklärung: IT-Visions WS-Management

Übungen

Finde alle Cmdlets / Kommandos, die im Parameter ComputerName enthalten und gleichzeitig nicht den Begriff Session:

Get-Command | where { $_.parameters.keys -contains "ComputerName"
   -and $_.parameters.keys -notcontains "Session"}

Finde alle Cmdlets/Kommandos, die im Parameter credential enthalten, also eine eigene Authentifizierung erlauben.

Get-Command | where { $_.parameters.keys -contains "credential" }

Beispiel: Cmdlet Get-WmiObject (im Beispiel: Adminkonto benötigt mit Credential)

PS E:\_temp> Get-WmiObject -Class Win32_BIOS -ComputerName win10
Get-WmiObject : Zugriff verweigert (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))
In Zeile:1 Zeichen:1
+ Get-WmiObject -Class Win32_BIOS -ComputerName win10-epz
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

PS E:\_temp> $cred = Get-Credential win10\joebadmin
PS E:\_temp> Get-WmiObject -Class Win32_BIOS -ComputerName win10 -Credential $cred

SMBIOSBIOSVersion : VirtualBox
Manufacturer      : innotek GmbH
Name              : Default System BIOS
SerialNumber      : 0
Version           : VBOX   - 1

Beispiel: Cmdlet Get-Hotfix (hier ebenfalls Adminkonto benötigt und Credential)

PS E:\_temp> Get-HotFix -ComputerName win10 -Credential $cred

Source        Description      HotFixID      InstalledBy          InstalledOn
------        -----------      --------      -----------          -----------
WIN10         Update           KB3176935     NT-AUTORITÄT\SYSTEM
WIN10         Update           KB3176936     NT-AUTORITÄT\SYSTEM
WIN10         Update           KB3176937     NT-AUTORITÄT\SYSTEM
WIN10         Security Update  KB3188128     NT-AUTORITÄT\SYSTEM
WIN10         Update           KB3194496     NT-AUTORITÄT\SYSTEM  10.05.2016 00:00:00

Anm.: Get-Process, Get-EventLog machen oft ohne Domäne Probleme, obwohl nach Problemlösungen (Troubleshooting) der Dienst RemoteRegistry auf dem Zielrechner aktiviert worden ist.

PS E:\_temp> $dienst = Get-WmiObject -Class Win32_service -Filter 'Name="RemoteRegistry"' -ComputerName win10 -Credential $cred
PS E:\_temp> $dienst

ExitCode  : 0
Name      : RemoteRegistry
ProcessId : 340
StartMode : Auto
State     : Running
Status    : OK

Testskript findet heraus, ob Ports

  • 137-139 (Namensauflösung),

  • 445 (SMB) und

  • 5985 (PowerShell Remoting via http)

verfügbar sind.

Weltner – 22.1.ps1 – Funktion: Test-NetworkPort - siehe PowerShellCodes

PS E:\_temp> Test-NetworkPort

Port Open Type ComputerName
---- ---- ---- ------------
139  True TCP  WIN10
445  True TCP  WIN10
5985 True TCP  WIN10