PS Remote Management

Jetzt keine „Speziallösungen“ der einzelnen Tools und Cmdlets mehr, sondern eine einheitliche Fernverwaltungsumgebung (Remote Host) inklusive Sitzungsmanagement (Sessions).

Notwendige Technik: WinRM (Windows Remote Management)

Minimal-Anforderungen für WinRM Services (Versionen 2.0+)

  • Microsoft .NET Framework 2.0 oder höher

  • Windows PowerShell 2.0 oder höher

  • Windows Remote Management (WinRM) 2.0

WinRM-Systemdienst starten

  • inkl. Firewall

  • Netzwerkverbindungstyp beachten - kein Profil Öffentlich möglich!

  • LokalAccountTokenFilterPolicy setzen

  • Firmen/Domänen - die Gruppenrichtlinie (Group Policy)

Computer ConfigurationAdministrative TemplatesWindows ComponentsWindows Remote Management (WinRM)WinRM service

Unterdrücken der Nachfragen und Problem mit „Öffentlichen Netzwerkadaptern“ umgehen:

Enable-PSRemoting –SkipNetworkProfileCheck –Force

Testen der Umgebungen mit

PS E:\_temp> Test-WSMan -ComputerName Win10

wsmid           : http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd
ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
ProductVendor   : Microsoft Corporation
ProductVersion  : OS: 0.0.0 SP: 0.0 Stack: 3.0

Dieser Test benötigt keine Rechte, sondern checkt per geeignetem Request nur die Funktionalität.

Anm.: generell: WinRM-Service muss überhaupt laufen.

Get-Service –Name WinRM                            # Status abfragen
Set-Service –Name WinRM –StartupType Automatic     # Start mit Adminrechten

Falls man dann mal von einer Nicht-Domänen-Maschine auf eine Domänen-Maschine zugreifen muss/will, dann bekommt man Probleme mit dem WinRM-Systemdienst auf der Client-Maschine (P2P-Konf.), weil dem Partner nicht vertraut wird und kein Kerberos oder https genutzt wird (siehe später PSWA – PowerShell WebAccess).

Problemlösung auf P2P-Client (Zugriff auf Dom-Server mit PSSession gewünscht)

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "10.0.2.33, Win10" –Force
Restart-Service WinRM

Hinweis

Benutzer mit Möglichkeiten zum Remote PowerShell nutzen, sollten Mitglieder der Gruppe Remotverwaltungsbenutzer sein!

Interaktive Sitzung:

Enter-PSSession –Computername Win10

komplette Anmeldung inkl. –credential (bei P2P immer nötig!)

$cred = Get-Credential
Enter-PSSession -ComputerName Win10 -credential $cred

oder:

Enter-PSSession –ComputerName Win10 -Authentication Negotiate -credential Win10\joebadmin

aktuelle Konsolenmaschine ermitteln:

[System.Environment]::MachineName

Beenden der PowerShell Remote Session:

Exit-PSSession

Befehle über Remote absetzen mittels Invoke-Command:

Bei Berechtigungsproblemen immer wieder gerne mit der Credential Lösung.

Invoke-Command Aufrufe
Invoke-Command -ComputerName Win10 -scriptblock { Get-Service b* }
Invoke-Command -ComputerName Win10 -scriptblock { Get-Service | sort status | ft name,status }
Invoke-Command - ComputerName Win10
-Script { "Computername: " + [System.Environment]::MachineName ; "Zeit: " + [DateTime]::Now ; "Sprache: " + (Get-Culture) }
Invoke-Command - ComputerName Win10 -Script { ping www.it-visions.de }

Gerne natürlich auch ein entsprechendes Skript als Datei:

Invoke-Command -ComputerName Win10 -scriptblock { c:\temp\WPS2_Computername.ps1 }

Diese Aufrufe sind auch für mehrere Rechner gleichzeitig möglich!

Cmdlets zur Sitzungsverwaltung

Es folgt ein Überblick über die Cmdlets zur Sitzungsverwaltung:

Get-Command *PSSession*
  • New-PSSession
    Erzeugen einer neuen Sitzung auf dem lokalen oder einem entfernten Computer
  • Get-PSSession
    Liste aller Sitzungen, die aus der aktuellen Sitzung heraus gestartet wurden
    (zeigt aber nicht Sitzungen, die andere Computer auf dem lokalen Computer geöffnet haben)
  • Remove-PSSession
    entfernt eine Session oder alle Sessions (Remove-PSSession *)
  • Enter-PSSession
    Start einer interaktiven Sitzung auf dem lokalen oder einem entfernten Computer
  • Exit-PSSession
    Ende einer interaktiven Sitzung
  • Disable-PSSessionConfiguration
    Sperren einer/aller Sitzungskonfigurationen
  • Enable-PSSessionConfiguration
    Entsperren einer/aller Sitzungskonfigurationen
  • Get-PSSessionConfiguration
    Auflisten der Sitzungskonfigurationen
  • Register-PSSessionConfiguration
    permanente Registrierung einer Sitzungskonfiguration
  • Set-PSSessionConfiguration
    Setzen von Eigenschaften einer Sitzungskonfiguration
  • Unregister-PSSessionConfiguration
    Löschen einer Sitzungskonfiguration

alles Weitere:

  • ab S. 229 Schwichtenberg PowerShell 4.0

  • ab S. 742 Weltner PowerShell 5.0