Windows Tools, die man kennen sollte – Windows Remoteverwaltung, Teil 3

Remoteverwaltung von Windows Server über die PowerShell 2.0

01.09.2011 | Autor / Redakteur: Frank Castro Lieberwirth / Andreas Donner

Hat man sich erst mit der Komplexität der PowerShell angefreundet, gelingen auch umfangreiche Skripte
Hat man sich erst mit der Komplexität der PowerShell angefreundet, gelingen auch umfangreiche Skripte

Die auf .NET 2.0 basierende PowerShell ist die „Weiterentwicklung“ des Kommandozeilenaufrufs („Dos-Box“) und von Windows Skripting Host (WSH). Ähnlich wie bei Unix-Shells unterstützt sie Pipes und Filter, sowie die objektorientierte Programmierung. Dieser Artikel soll ein Leitfaden zur Remoteverwaltung darstellen und mehr Administratoren überzeugen mit der PowerShell 2.0 zu arbeiten.

Voraussetzung für die Remote-Session ist der WinRM-Dienst auf dem Client und Server. Da der Dienst auf dem Client voreingestellt gestoppt ist, muss er erst noch gestartet werden. Auf dem Windows Server 2008 R2 (auch Versionen 2003 R2 und 2008) ist er bereits gestartet. Auf beiden Computern wird der WinRM-Dienst anschließend konfiguriert und die entsprechenden Ports in der Firewall müssen geöffnet werden. Die Remoteverwaltung ist ein Feature von PowerShell 2.0, d.h. die Remote-Tools für Windows 7 SP1 sind nicht zwingend notwendig. Unabhängig von der PowerShell sind diese Remotetools aber empfehlenswert.

Für die Aktivierung gibt es mehrere Lösungen, die PowerShell-Variante könnte wie Folgt aussehen: Zunächst wird überprüft, ob der WinRM-Dienst auf den Computern („-Name“ ist optional) läuft. Dctest ist beispielsweise der remote Windows Server. Der lokale Computer würde „localhost“ oder einfach nur Punkt („.“) heißen.

Get-Service -Name WinRM -ComputerName dctest |<a href="/glossar/Format/articles/183675/" id="glossar" title="Definition: Format">Format</a>-Table -Property MachineName, Status, Name, DisplayName -AutoSize

WinRM sollte für Autostart konfiguriert werden:

Set-Service -Name WinRM -ComputerName dctest -StartupType „Automatic“

PowerShell für Remoteverwaltung bereitstellen:

Enable-PSRemoting -force

Selbstverständlich kann die Firewall auch per PowerShell konfiguriert werden, was aber nur in einem längeren Skript funktioniert. Hierfür gibt es im Internet Beispiele. Hierbei sollte aber nicht vergessen werden, die Remote-Administration der Firewall auf dem Zielcomputer freizuschalten.

Die erste Remote-Sitzung

PowerShell 2.0 ist in der Lage, eine interaktive Remotesitzung durchzuführen. Über die PowerShell-Sitzung können dann beliebig viele Befehle auf den verbunden Servern oder Workstations abgesetzt werden. Das Schöne – Es funktioniert genauso, als würde man lokal an diesem Computer angemeldet sein. So gilt Vorsicht, die PowerShell-Module auf dem remote Computer unterscheiden sich höchstwahrscheinlich von denen des lokalen Computers, und da die Konsole optisch – lokal wie remote – ähnlich aussieht, kann man sich am Anfang manchmal wundern.

Für jede PowerShell-Konsole ist nur eine interaktive Sitzung erlaubt. Eine weitere interaktive Sitzung bedeutet auch eine neue Konsole. Es dürfen bis zu 5 parallele Sitzungen zu einem Host geöffnet sein. Gemäß der durchgängigen PowerShell-Syntax merkt man sich das Command „PSSession“. In Verbindung mit dem wichtigsten Befehl get-help kommt man sehr schnell auf die konkrete Spur, was alles mit diesem Befehl anzustellen ist, bzw. welche Cmdlet erlaubt sind: New- , Set-, Remove-, …usw.

Eine neue Sitzung ist eingerichtet unter (Beispiel siehe Abbildung 1):

New-PsSession -name <MeinSitzungName> -computername <Hostname>

Beispiel:

New-PsSession -name RemoteDCTEST -computername dctest

Mit dem folgenden Cmdlet kann dann die Sitzung gestartet warden:

Enter-PSSession -ComputerName <Hostname> -Credential <Domäne\Anmeldename

Beispiel:

Enter-PSSession -ComputerName dctest -Credential feierabend\administrator

Die remote Sitzung ist nun offen und kann ganz normal verwendet werden. Beendet wird die Sitzung mit dem Befehl:

Exit-PSSession

Von der lokalen Sitzung auf dem Remote-Computer einen Befehl ausführen

Möchte man einzelne Befehle auf mehrere Computer verteilen, muss man das Invoke-Command verwenden. Hier am Beispiel eines Computers:

$MySession = New-PSSession -ComputerName <Hostname>
Invoke-Command -Session $MySession -ScriptBlock { <Hier steht der auszuführende Befehl> }

Beispiel: Aufzeigen aller Dienste, die nicht gestartet sind.

$MySession = New-PSSession -ComputerName dctest
Invoke-Command -Session $MySession -ScriptBlock { Get-Service | Where-Object {$_.status -eq „stopped“} }

Werden innerhalb von ScriptBlock {} Variablen definiert, kann nachfolgend innerhalb des Blocks mit diesen Variablen weitergearbeitet werden. Das funktioniert deshalb, weil eine persistente Verbindung zum Remotehost besteht. Als Ausgabe erhält man in diesem Beispiel den WinRM-Dienststatus vom Remote-Computer.

Invoke-Command -Session $MySession -ScriptBlock { $var=Get-Service WinRM }
Invoke-Command -Session $MySession -ScriptBlock { $var }

Möchte man hingegen nur schnell ein Skript ausführen, reicht Folgendes:

Invoke-Command -ComputerName <Hostname> –Filepath <Skriptname>

Fazit:

Die PowerShell 2.0 glänzt mit einer Vielzahl von Befehlen, die unter anderem Zugriff auf .NET-Framework, WMI-Klassen und COM-Objekte ermöglichen. Hat man sich einmal mit der Komplexität der „Sprache“ angefreundet, gelingen auch umfangreiche Skripte.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 2052547 / Admin-Tools)