Enthält Fragen und Antworten zur Ausführung von Remotebefehlen in (about_remote_FAQ)
# THEMA
about_Remote_FAQ
# KURZBESCHREIBUNG
Enthält Fragen und Antworten zur Ausführung von Remotebefehlen in
Windows PowerShell.
# DETAILBESCHREIBUNG
Wenn Sie remote arbeiten, geben Sie Befehle in Windows PowerShell
auf einem Computer ("lokaler Computer") ein, die Befehle werden
jedoch auf einem anderen Computer ("Remotecomputer") ausgeführt.
Wenn Sie remote mit einem Computer arbeiten, sollte sich dies so
wenig wie möglich vom Arbeiten direkt auf dem Remotecomputer
unterscheiden.
Hinweis: Um Windows PowerShell-Remoting zu verwenden, muss der
Remotecomputer für Remoting konfiguriert sein. Weitere
Informationen finden Sie unter "about_Remote_Requirements".
MUSS WINDOWS POWERSHELL AUF BEIDEN COMPUTERN INSTALLIERT SEIN?
Ja. Um remote zu arbeiten, müssen der lokale Computer und der
Remotecomputer über Windows PowerShell, Microsoft .NET Framework
2.0 sowie über das WS-Management-Protokoll (Web Services for
Management) verfügen. Alle Dateien und Ressourcen, die benötigt
werden, um einen bestimmten Befehl auszuführen, müssen auf dem
Remotecomputer vorhanden sein.
Sie müssen über die Berechtigung verfügen, eine Verbindung mit dem
Remotecomputer herzustellen, Windows PowerShell auszuführen und
auf Datenspeicher (z. B. Dateien und Ordner) sowie auf die
Registrierung auf dem Remotecomputer zuzugreifen.
Weitere Informationen finden Sie unter "about_Remote_Requirements".
WIE FUNKTIONIERT REMOTING?
Wenn Sie einen Remotebefehl senden, wird der Befehl über das
Netzwerk an das Windows PowerShell-Modul auf den Remotecomputer
übertragen und im Windows PowerShell-Client auf dem Remotecomputer
ausgeführt.
Die Befehlsergebnisse werden an den lokalen Computer
zurückgesendet und in der Windows PowerShell-Sitzung auf dem
lokalen Computer angezeigt.
Um die Befehle zu senden und die Ausgabe zu empfangen, verwendet
Windows PowerShell das WS-Management-Protokoll. Informationen über
das WS-Management-Protokoll finden Sie in der MSDN (Microsoft
Developer Network) Library unter "WS-Management-Protokoll" unter
"http://go.microsoft.com/fwlink/?LinkId=144634" (möglicherweise
auf Englisch).
IST WINDOWS POWERSHELL-REMOTING SICHER?
Wenn Sie eine Verbindung mit einem Remotecomputer herstellen,
verwendet das System die Anmeldeinformationen (Benutzername und
Kennwort) für den lokalen Computer oder die Anmeldeinformationen,
die Sie im Befehl zur Anmeldung beim Remotecomputer angeben. Die
Anmeldeinformationen sowie die weitere Übertragung werden
verschlüsselt.
Zur Erhöhung der Sicherheit können Sie den Remotecomputer für
Secure Sockets Layer (SSL) anstelle von HTTP konfigurieren, um
Anforderungen von Windows Remote Management (WinRM) zu
überwachen. Benutzer können dann die UseSSL-Parameter der Cmdlets
"Invoke-Command", "New-PSSession" und "Enter-PSSession" beim
Herstellen einer Verbindung verwenden. Diese Option verwendet den
sichereren HTTPS-Channel anstelle von HTTP.
ERFORDERN ALLE REMOTEBEFEHLE WINDOWS POWERSHELL-REMOTING?
Nein. Einige Cmdlets verfügen über einen ComputerName-Parameter,
mit dem Objekte vom Remotecomputer abgerufen werden können.
Diese Cmdlets verwenden kein Windows PowerShell-Remoting. Sie
können daher auf jedem Computer mit Windows PowerShell verwendet
werden, auch wenn der Computer nicht für Windows PowerShell-Remotin
g konfiguriert wurde oder die Anforderungen für Windows
PowerShell-Remoting nicht erfüllt.
Diese Cmdlets umfassen folgende Cmdlets:
Get-Process
Get-Service
Get-WinEvent
Get-EventLog
Get-WmiObject
Test-Connection
Um alle Cmdlets mit einem ComputerName-Parameter zu suchen, geben
Sie Folgendes ein:
get-help * -parameter ComputerName
Informationen darüber, ob der ComputerName-Parameter eines
bestimmten Cmdlets Windows PowerShell-Remoting erfordert, finden
Sie in der Parameterbeschreibung. Um die Parameterbeschreibung
anzuzeigen, geben Sie Folgendes ein:
get-help <Cmdlet-Name> -parameter ComputerName
Beispiel:
get-help get-process -parameter Computername
Verwenden Sie das Cmdlet "Invoke-Command" für alle anderen Befehle.
WIE führe ich einen Befehl auf einem Remotecomputer aus?
Verwenden Sie das Cmdlet "Invoke-Command", um einen Befehl auf
einem Remotecomputer auszuführen.
Schließen Sie den Befehl in Klammern ( {} ) ein, um einen
Skriptblock zu erstellen. Geben Sie den Befehl mit dem
ScriptBlock-Parameter von Invoke-Command an.
Sie können den ComputerName-Parameter von Invoke-Command
verwenden, um einen Remotecomputer anzugeben. Sie können auch eine
dauerhafte Verbindung mit einem Remotecomputer (eine Sitzung)
erstellen und anschließend den Session-Parameter von
Invoke-Command verwenden, um den Befehl in der Sitzung auszuführen.
Beispielsweise wird mit den folgenden Befehlen ein Get-Process-Befe
hl remote ausgeführt.
invoke-command -computername Server01, Server02 -scriptblock {get-process}
- oder -
invoke-command -session $s -scriptblock {get-process}
Um einen Remotebefehl zu unterbrechen, geben Sie STRG+C ein. Die
Unterbrechungsanforderung wird an den Remotecomputer übergeben, wo
der Remotebefehl beendet wird.
Weitere Informationen über Remotebefehle finden Sie unter
"about_Remote" und in den Hilfethemen für die Cmdlets mit
Remotingunterstützung.
KANN ICH EINFACH EINE TELNETVERBINDUNG MIT EINEM REMOTECOMPUTER
HERSTELLEN?
Mit dem Cmdlet "Enter-PSSession" können Sie eine interaktive
Sitzung mit einem Remotecomputer starten.
Geben Sie an der Windows PowerShell-Eingabeaufforderung folgenden
Befehl ein:
Enter-PSSession <Computername>
Die Eingabeaufforderung ändert sich, um anzuzeigen, dass eine
Verbindung mit dem Remotecomputer hergestellt wurde.
<Computername>\C:>
Die eingegebenen Befehle werden nun auf dem Remotecomputer
ausgeführt, als ob diese direkt auf dem Remotecomputer eingegeben
würden.
Um die interaktive Sitzung zu beenden, geben Sie Folgendes ein:
Exit-PSSession
Eine interaktive Sitzung ist eine dauerhafte Sitzung, die das
WS-Management-Protokoll verwendet. Dies ist nicht mit der
Verwendung von Telnet zu vergleichen, funktioniert jedoch auf
ähnliche Weise.
Weitere Informationen finden Sie unter "Enter-PSSession".
KANN ICH EINE DAUERHAFTE VERBINDUNG ERSTELLEN?
Ja. Sie können Remotebefehle ausführen, indem Sie den Namen des
Remotecomputers, den NetBIOS-Namen oder die IP-Adresse angeben.
Sie können Remotebefehle auch ausführen, indem Sie eine Windows
PowerShell-Sitzung (PSSession) angeben, die mit dem
Remotecomputer verbunden ist.
Wenn Sie den ComputerName-Parameter von Invoke-Command oder
Enter-PSSession verwenden, stellt Windows PowerShell eine
temporäre Verbindung her. Windows PowerShell verwendet die
Verbindung nur zur Ausführung des aktuellen Befehls, anschließend
wird die Verbindung geschlossen. Dabei handelt es sich um eine
sehr effiziente Methode zur Ausführung eines einzelnen Befehls
oder mehrerer nicht verknüpfter Befehle; dies gilt auch bei
Verwendung zahlreicher Remotecomputer.
Wenn Sie das Cmdlet "New-PSSession" verwenden, um eine PSSession
zu erstellen, stellt Windows PowerShell eine dauerhafte
Verbindung für die PSSession her. Anschließend können Sie mehrere
Befehle einschließlich Befehle mit gemeinsamen Daten in der
PSSession ausführen.
PSSessions werden normalerweise erstellt, um eine Reihe
verwandter Befehle auszuführen, die Daten gemeinsam verwenden.
Andernfalls ist die temporäre Verbindung, die vom ComputerName-Par
ameter erstellt wurde, für die meisten Befehle ausreichend.
Weitere Informationen über Sitzungen finden Sie unter
"about_PSSessions".
KANN ICH BEFEHLE AUF MEHREREN COMPUTERN GLEICHZEITIG AUSFÜHREN?
Ja. Der ComputerName-Parameter des Cmdlet "Invoke-Command"
akzeptiert mehrere Computernamen, und der Session-Parameter
akzeptiert mehrere PSSessions.
Wenn Sie einen Invoke-Command-Befehl ausführen, führt Windows
PowerShell die Befehle auf allen angegebenen Computern oder in
allen angegebenen PSSessions aus.
Windows PowerShell kann Hunderte von Remoteverbindungen
gleichzeitig verwalten. Die Anzahl der Remotebefehle, die Sie
senden können, kann jedoch durch die Ressourcen des Computers und
dessen Kapazität, mehrere Netzwerkverbindungen herzustellen und
beizubehalten, beschränkt werden.
Weitere Informationen finden Sie im Beispiel des Hilfethemas für
Invoke-Command.
WO FINDE ICH MEINE PROFILE?
Windows PowerShell-Profile werden nicht automatisch in
Remotesitzungen ausgeführt. Die Befehle, die vom Profil
hinzugefügt werden, sind daher in der Remotesitzung nicht
vorhanden. Ferner wird die automatische Variable "$profile" nicht
in Remotesitzungen aufgefüllt.
Verwenden Sie das Cmdlet "Invoke-Command", um ein Profil in einer
Sitzung auszuführen.
Beispielsweise wird mit dem folgenden Befehl das CurrentUserCurren
tHost-Profil vom lokalen Computer in der Sitzung in $s ausgeführt.
invoke-command -session $s -filepath $profile
Beispielsweise wird mit dem folgenden Befehl das CurrentUserCurren
tHost-Profil vom Remotecomputer in der Sitzung in $s ausgeführt.
Da die Variable "$profile" nicht aufgefüllt wird, verwendet der
Befehl den expliziten Pfad für das Profil.
invoke-command -session $s {. "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}
Die Befehle, die der Sitzung vom Profil hinzugefügt werden, sind
nach Ausführen des Befehls in $s verfügbar.
Sie können ein Startskript auch in einer Sitzungskonfiguration
verwenden, um ein Profil in jeder Remotesitzung auszuführen, die
die Sitzungskonfiguration verwendet.
Weitere Informationen über die Windows PowerShell-Profile finden
Sie unter "about_Profiles". Weitere Informationen zu
Sitzungskonfigurationen finden Sie unter "Register-PSSessionConfig
uration".
WIE FUNKTIONIEREN EINSCHRÄNKUNGEN IN REMOTE-BEFEHLEN?
Zur Unterstützung der Verwaltung von Ressourcen auf dem lokalen
Computer enthält Windows PowerShell eine befehlsbasierte
Einschränkungsfunktion, mit der Sie die Anzahl gleichzeitiger
Remoteverbindungen pro Befehl begrenzen können.
Der Standard ist 32 gleichzeitige Verbindungen. Sie können jedoch
mit dem ThrottleLimit-Parameter der Cmdlets eine benutzerdefinierte
Grenze für bestimmte Befehle festlegen.
Bedenken Sie bei der Verwendung des Einschränkungsfeatures, dass
es auf jeden Befehl und nicht auf die gesamte Sitzung oder den
gesamten Computer angewendet wird. Wenn Sie Befehle gleichzeitig
in mehreren Sitzungen oder PSSessions ausführen, ist die Anzahl
der gleichzeitigen Verbindungen die Summe der gleichzeitigen
Verbindungen in allen Sitzungen.
Um Cmdlets mit einem ThrottleLimit-Parameter zu suchen, geben Sie
Folgendes ein:
get-help * -parameter ThrottleLimit
GIBT ES SYSTEMSPEZIFISCHE UNTERSCHIEDE BEIM REMOTING?
Beim Ausführen von Befehlen auf mehreren Computern müssen
Unterschiede, beispielsweise im Hinblick auf das Betriebssystem,
die Dateisystemstruktur und die Registrierung, beachtet werden.
Wenn Sie eine Verbindung mit einem Remotecomputer herstellen, auf
dem Windows Vista oder Windows Server 2003 ausgeführt wird, ist
der Standardausgangspunkt das Stammverzeichnis des aktuellen
Benutzers, das in der Umgebungsvariablen "%homepath%"
($env:homepath) und in der Windows PowerShell-Variablen "$home"
gespeichert wird. Das Stammverzeichnis in Windows Vista ist in
aller Regel C:\Users\<Benutzername>. Das Stammverzeichnis in
Windows Server 2003 ist in aller Regel C:\Dokumente und
Einstellungen\<Benutzername>
Wenn Sie eine Verbindung mit einem Remotecomputer herstellen, auf
dem Windows XP ausgeführt wird, ist der Standardausgangspunkt das
Stammverzeichnis des Standardbenutzers, das für den Standardbenutze
r in der Umgebungsvariablen "%homepath%" ($env:homepath)
gespeichert wird. Das Stammverzeichnis ist in aller Regel
C:\Dokumente und Einstellungen\Default User.
UNTERSCHEIDET SICH DIE AUSGABE VON REMOTE-BEFEHLEN VON DER LOKALEN
AUSGABE?
Wenn Sie Windows PowerShell lokal verwenden, senden und empfangen
Sie "aktive".NET Framework-Objekte. "Aktive" Objekte sind Objekte,
die mit tatsächlichen Programmen oder Systemkomponenten verknüpft
sind. Wenn Sie die Methoden aufrufen oder die Eigenschaften von
echten Objekten ändern, wirken sich die Änderungen auf das
tatsächliche Programm oder die Komponente aus. Wenn sich die
Eigenschaften eines Programms oder einer Komponente ändern, ändern
sich auch die Eigenschaften des Objekts, das sie darstellen.
Da die meisten dieser Objekte jedoch nicht über das Netzwerk
gesendet werden können, werden sie von Windows PowerShell vor dem
Senden in Remotebefehlen "serialisiert", d. h. die einzelnen
Objekte werden für die Übertragung in eine Reihe von XML
(Einschränkungssprache in XML [CLiXML])-Datenelementen konvertiert.
Wenn Windows PowerShell ein serialisiertes Objekt empfängt, wird
das XML in einen deserialisierten Objekttyp konvertiert. Das
deserialisierte Objekt enthält genaue Angaben über die
Eigenschaften des Programms oder der Komponente zu einem früheren
Zeitpunkt. Es handelt sich jedoch nicht mehr um ein "echtes"
Objekt, da es nicht mehr direkt mit der Komponente verknüpft ist.
Außerdem werden die Methoden entfernt, da sie nicht mehr gültig sind.
Normalerweise können deserialisierte Objekte wie echte Objekte
verwendet werden, wenn die diesbezüglichen Einschränkungen
beachtet werden. Außerdem verfügen die Objekte, die vom Cmdlet
"Invoke-Command" zurückgegeben werden, über zusätzliche
Eigenschaften, die Ihnen helfen, den Ursprung des Befehls zu
bestimmen.
Einige Objekttypen, z. B. DirectoryInfo-Objekte und GUIDs, werden
beim Empfang zurück in Liveobjekte konvertiert. Bei diesen
Objekten ist keine spezielle Behandlung oder Formatierung notwendig.
Weitere Informationen über Hintergrundaufträge in Windows
PowerShell finden Sie unter "about_Jobs" und "about_Remote_Jobs".
KÖNNEN HINTERGRUNDAUFTRÄGE REMOTE AUSGEFÜHRT WERDEN?
Ja. Ein Windows PowerShell-Hintergrundauftrag ist ein Windows
PowerShell-Befehl, der asynchron und ohne Interaktion mit der
Sitzung ausgeführt wird. Wenn Sie einen Hintergrundauftrag
starten, wird die Eingabeaufforderung sofort zurückgegeben, und
Sie können weiterhin in der Sitzung arbeiten, während der Auftrag
ausgeführt wird; dies gilt auch, wenn für die Ausführung des
Auftrags ein längerer Zeitraum erforderlich ist.
Hintergrundaufträge können auch während der Ausführung anderer
Befehle gestartet werden, da Hintergrundaufträge in einer
temporären Sitzung immer asynchron ausgeführt werden.
Sie können Hintergrundaufträge auf einem lokalen Computer oder auf
einem Remotecomputer ausführen. Standardmäßig werden
Hintergrundaufträge auf dem lokalen Computer ausgeführt. Sie
können jedoch den AsJob-Parameter des Cmdlet "Invoke-Command"
verwenden, um einen beliebigen Remotebefehl als Hintergrundauftrag
auszuführen. Außerdem können Sie mit Invoke-Command einen
Start-Job-Befehl remote ausführen.
Weitere Informationen über Hintergrundaufträge in Windows
PowerShell erhalten Sie mit dem Befehl "about_jobs".
KÖNNEN WINDOWS-PROGRAMME AUF EINEM REMOTECOMPUTER AUSGEFÜHRT WERDEN?
Sie können Windows-basierte Programme mit Windows PowerShell-Remot
ebefehlen auf Remotecomputern ausführen. Beispielsweise können
Sie "Shutdown.exe" oder "Ipconfig" auf einem Remotecomputer
ausführen.
Sie können Windows PowerShell-Befehle jedoch nicht verwenden, um die
Benutzeroberfläche für ein Programm auf einem Remotecomputer zu öffnen.
Wenn Sie ein Windows-Programm auf einem Remotecomputer starten,
werden der Befehl erst abgeschlossen und die Windows
PowerShell-Eingabeaufforderung erst zurückgegeben, wenn das
Programm beendet wurde oder Sie STRG+C drücken, um den Befehl zu
unterbrechen. Wenn Sie beispielsweise das Programm "Ipconfig" auf
einem Remotecomputer ausführen, wird die Eingabeaufforderung erst
zurückgegeben, wenn Ipconfig abgeschlossen wurde.
Wenn Sie Programme mit einer Benutzeroberfläche mit
Remotebefehlen starten, wird der Programmprozess gestartet, die
Benutzeroberfläche wird jedoch nicht angezeigt. Der Windows
PowerShell-Befehl wird erst ausgeführt und die Eingabeaufforderung
erst zurückgegeben, wenn der Programmprozess beendet wurde oder
Sie STRG+C drücken, um den Befehl zu unterbrechen und den
Prozess beenden.
Wenn Sie beispielsweise einen Windows PowerShell-Befehl
verwenden, um Editor auf einem Remotecomputer auszuführen, wird
der Editor-Prozess auf dem Remotecomputer gestartet, aber die
Editor-Benutzeroberfläche wird nicht angezeigt. Um den Befehl zu
unterbrechen und die Eingabeaufforderung wiederherzustellen,
drücken Sie STRG+C.
KANN DIE ANZAHL DER BEFEHLE BEGRENZT WERDEN, DIE REMOTE AUF DEM
COMPUTER AUSGEFÜHRT WERDEN KÖNNEN?
Ja. Jede Remotesitzung muss eine der Sitzungskonfigurationen auf
dem Remotecomputer verwenden. Sie können die Sitzungskonfiguration
en auf dem Computer (und die Berechtigungen für diese
Sitzungskonfigurationen) verwalten, um zu bestimmen, welche
Benutzer welche Befehle remote auf dem Computer ausführen können.
Eine Sitzungskonfiguration konfiguriert die Umgebung für die Sitzung.
Sie können die Konfiguration mit einer Assembly definieren, die
eine neue Konfigurationsklasse implementiert, oder mit einem
Skript, das in der Sitzung ausgeführt wird.
Mit der Konfiguration können die Befehle bestimmt werden, die in
der Sitzung verfügbar sind. Außerdem kann die Konfiguration
Einstellungen enthalten, die den Computer schützen,
beispielsweise Einstellungen, die die Datenmenge begrenzen, die
von der Sitzung in einem einzelnen Objekt oder einem einzelnen
Befehl remote empfangen werden können. Sie können auch eine
Sicherheitsbeschreibung angeben, die die Berechtigungen bestimmt,
die erforderlich sind, um die Konfiguration zu verwenden.
Das Cmdlet "Enable-PSRemoting" erstellt eine Konfiguration für
eine Standardsitzung auf dem Computer: Microsoft.PowerShell
(Microsoft.PowerShell32 für 64-Bit-Betriebssysteme).
Enable-PSRemoting legt die Sicherheitsbeschreibung für die
Konfiguration fest, um die Verwendung auf Mitglieder der Gruppe
"Administratoren" auf dem Computer zu beschränken.
Sie können die Cmdlets für die Sitzungskonfiguration verwenden,
um die Konfigurationen für die Standardsitzung zu bearbeiten,
neue Sitzungskonfigurationen zu erstellen und die Sicherheitsbesch
reibungen von Sitzungskonfigurationen zu ändern.
Wenn Benutzer die Cmdlets "Invoke-Command", "New-PSSession" oder
"Enter-PSSession" verwenden, können sie mit dem ConfigurationName-
Parameter die Sitzungskonfiguration angeben, die für die Sitzung
verwendet wird. Außerdem kann der Wert der Standardkonfiguration
für die Sitzungen geändert werden, indem der Wert der
Einstellungsvariablen "$PSSessionConfigurationName" in der
Sitzung geändert wird.
Weitere Informationen über Sitzungskonfigurationen finden Sie in
der Hilfe für die Cmdlets der Sitzungskonfiguration. Um die
Cmdlets der Sitzungskonfiguration zu suchen, geben Sie Folgendes ein:
get-command *pssessionconfiguration
WAS SIND FAN-IN- UND FAN-OUT-KONFIGURATIONEN?
Das gängigste Windows PowerShell-Remoting-Szenario mit mehreren
Computern ist die 1:n-Konfiguration, in der ein lokaler Computer
(der Computer des Administrators) Windows PowerShell-Befehle von
zahlreichen Remotecomputern empfängt. Dies wird als "FAN-OUT"-Szena
rio bezeichnet.
Einige Unternehmen verfügen jedoch über eine n:1-Konfiguration, in
der viele Clientcomputer eine Verbindung mit einem einzelnen
Remotecomputer herstellen, auf dem Windows PowerShell ausgeführt
wird, beispielsweise ein Dateiserver oder ein Kiosk.
Dies wird als "FAN-IN"-Konfiguration bezeichnet.
Windows PowerShell-Remoting unterstützt sowohl FAN-OUT- als auch FAN-IN-
Konfigurationen.
Für die FAN-OUT-Konfiguration verwendet Windows PowerShell das
WS-Management-Protokoll (Web Services for Management) und den
WinRM-Dienst, der die Microsoft-Implementierung von WS-Management
unterstützt. Wenn ein lokaler Computer eine Verbindung mit einem
Remotecomputer herstellt, stellt WS-Management eine Verbindung her
und verwendet ein Plug-In für Windows PowerShell, um den Windows
PowerShell-Hostprozess ("Wsmprovhost.exe") auf dem Remotecomputer
zu starten. Benutzer können einen alternativen Port, eine
alternative Sitzungskonfiguration und andere Features angeben, um
die Remoteverbindung anzupassen.
Zur Unterstützung der "FAN-IN"-Konfiguration verwendet Windows
PowerShell Internetinformationsdienste (IIS), um WS-Management zu
hosten, das Windows PowerShell-Plug-In zu laden und Windows
PowerShell zu starten. In diesem Szenario werden alle Windows
PowerShell-Sitzungen in einem Hostprozess ausgeführt, anstatt jede
Sitzung in einem separaten Prozess zu starten.
IIS-Hosting und die FAN-IN-Remoteverwaltung werden unter Windows
XP oder Windows Server 2003 nicht unterstützt.
In einer FAN-IN-Konfiguration können Benutzer einen Verbindungs-URI
und einen HTTP-Endpunkt einschließlich Transport, Computername,
Port und Anwendungsname angeben. IIS leitet alle Anforderungen
mit einem angegebenen Anwendungsnamen an die Anwendung weiter.
Die Standardanwendung ist WS-Management, die Windows PowerShell
hosten kann.
Sie können auch einen Authentifizierungsmechanismus angeben und
die Umleitung von HTTP- und HTTPS-Endpunkten verhindern oder zulassen.
KANN REMOTING AUF EINEM EINZELNEN COMPUTER (NICHT IN EINER DOMÄNE)
GETESTET WERDEN?
Ja. Windows PowerShell-Remoting ist auch dann verfügbar, wenn
sich der lokale Computer nicht in einer Domäne befindet. Sie
können die Remotingfeatures verwenden, um eine Verbindung mit
Sitzungen herzustellen und Sitzungen auf dem gleichen Computer zu
erstellen. Die Features erfüllen die gleichen Aufgaben wie beim
Herstellen einer Verbindung mit einem Remotecomputer.
Um Remotebefehle auf einem Computer in einer Arbeitsgruppe
auszuführen, ändern Sie die folgenden Windows-Einstellungen auf
dem Computer.
Vorsicht: Diese Einstellungen wirken sich auf alle Benutzer des
Systems aus, und sie können das System anfälliger für böswillige
Angriffe machen. Nehmen Sie solche Änderungen mit Bedacht vor.
-- Windows XP mit SP2:
Ändern Sie im Fenster "Lokale Sicherheitseinstellungen"
(Secpol.msc) die Einstellung für die Richtlinie
"Netzwerkzugriff: Modell für gemeinsame Nutzung und
Sicherheitsmodell für lokale Konten" unter "Sicherheitseinstel
lungen\Lokale Richtlinien\Sicherheitsoptionen" in "Klassisch".
-- Windows Vista:
Erstellen Sie den folgenden Registrierungseintrag, und legen
Sie den Wert auf "1" fest:
LocalAccountTokenFilterPolicy in
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
Sie können den folgenden Windows PowerShell-Befehl verwenden,
um diesen Eintrag hinzuzufügen:
new-itemproperty `
-path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System `
-name LocalAccountTokenFilterPolicy -propertyType DWord -value 1
-- Windows 2003:
Es sind keine Änderungen erforderlich, da die Standardeinstell
ung für die Richtlinie "Netzwerkzugriff: Modell für
gemeinsame Nutzung und Sicherheitsmodell für lokale Konten"
auf "Klassisch" festgelegt ist. Überprüfen Sie die
Einstellung, falls diese geändert wurde.
KÖNNEN REMOTEBEFEHLE AUF EINEM COMPUTER IN EINER ANDEREN DOMÄNE
AUSGEFÜHRT WERDEN?
Ja. Die Befehle werden normalerweise fehlerfrei ausgeführt.
Möglicherweise müssen Sie jedoch den Credential-Parameter des
Cmdlet "Invoke-Command", "New-PSSession" oder "Enter-PSSession"
verwenden, um die Anmeldeinformationen eines Mitglieds der Gruppe
"Administratoren" auf dem Remotecomputer bereitzustellen. Dies
ist manchmal auch dann erforderlich, wenn der aktuelle Benutzer
Mitglied der Gruppe "Administratoren" auf dem lokalen Computer
und auf dem Remotecomputer ist.
Wenn sich der Remotecomputer jedoch nicht in einer Domäne
befindet, die vom lokalen Computer als vertrauenswürdig
eingestuft wird, kann die Authentifizierung der Anmeldeinformation
en des Benutzers durch den Computer möglicherweise nicht
durchgeführt werden.
Mit dem folgenden Befehl können Sie den Remotecomputer der Liste
der vertrauenswürdigen Hosts für den lokalen Computer in WinRM
hinzufügen, um die Authentifizierung zu aktivieren.
Geben Sie den Befehl an der Windows PowerShell-Eingabeaufforderung
ein.
set-item WSMan:\localhost\Client\TrustedHosts -value <Remote-computer-name>
Um beispielsweise den Computer "Server01" der Liste der
vertrauenswürdigen Hosts auf dem lokalen Computer hinzuzufügen,
geben Sie den folgenden Befehl an der Windows PowerShell-Eingabeau
fforderung ein:
set-item WSMan:\localhost\Client\TrustedHosts -value Server01
SIEHE AUCH
about_Remote
about_Profiles
about_PSSessions
about_Remote_Jobs
Invoke-Command
New-PSSession
C:\Windows>powershell get-help about_remote_jobs -full
ColorConsole [Version 1.7.1000] PowerShell 2.0-Export
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2014 Microsoft Corporation.
about_Remote_FAQ
# KURZBESCHREIBUNG
Enthält Fragen und Antworten zur Ausführung von Remotebefehlen in
Windows PowerShell.
# DETAILBESCHREIBUNG
Wenn Sie remote arbeiten, geben Sie Befehle in Windows PowerShell
auf einem Computer ("lokaler Computer") ein, die Befehle werden
jedoch auf einem anderen Computer ("Remotecomputer") ausgeführt.
Wenn Sie remote mit einem Computer arbeiten, sollte sich dies so
wenig wie möglich vom Arbeiten direkt auf dem Remotecomputer
unterscheiden.
Hinweis: Um Windows PowerShell-Remoting zu verwenden, muss der
Remotecomputer für Remoting konfiguriert sein. Weitere
Informationen finden Sie unter "about_Remote_Requirements".
MUSS WINDOWS POWERSHELL AUF BEIDEN COMPUTERN INSTALLIERT SEIN?
Ja. Um remote zu arbeiten, müssen der lokale Computer und der
Remotecomputer über Windows PowerShell, Microsoft .NET Framework
2.0 sowie über das WS-Management-Protokoll (Web Services for
Management) verfügen. Alle Dateien und Ressourcen, die benötigt
werden, um einen bestimmten Befehl auszuführen, müssen auf dem
Remotecomputer vorhanden sein.
Sie müssen über die Berechtigung verfügen, eine Verbindung mit dem
Remotecomputer herzustellen, Windows PowerShell auszuführen und
auf Datenspeicher (z. B. Dateien und Ordner) sowie auf die
Registrierung auf dem Remotecomputer zuzugreifen.
Weitere Informationen finden Sie unter "about_Remote_Requirements".
WIE FUNKTIONIERT REMOTING?
Wenn Sie einen Remotebefehl senden, wird der Befehl über das
Netzwerk an das Windows PowerShell-Modul auf den Remotecomputer
übertragen und im Windows PowerShell-Client auf dem Remotecomputer
ausgeführt.
Die Befehlsergebnisse werden an den lokalen Computer
zurückgesendet und in der Windows PowerShell-Sitzung auf dem
lokalen Computer angezeigt.
Um die Befehle zu senden und die Ausgabe zu empfangen, verwendet
Windows PowerShell das WS-Management-Protokoll. Informationen über
das WS-Management-Protokoll finden Sie in der MSDN (Microsoft
Developer Network) Library unter "WS-Management-Protokoll" unter
"http://go.microsoft.com/fwlink/?LinkId=144634" (möglicherweise
auf Englisch).
IST WINDOWS POWERSHELL-REMOTING SICHER?
Wenn Sie eine Verbindung mit einem Remotecomputer herstellen,
verwendet das System die Anmeldeinformationen (Benutzername und
Kennwort) für den lokalen Computer oder die Anmeldeinformationen,
die Sie im Befehl zur Anmeldung beim Remotecomputer angeben. Die
Anmeldeinformationen sowie die weitere Übertragung werden
verschlüsselt.
Zur Erhöhung der Sicherheit können Sie den Remotecomputer für
Secure Sockets Layer (SSL) anstelle von HTTP konfigurieren, um
Anforderungen von Windows Remote Management (WinRM) zu
überwachen. Benutzer können dann die UseSSL-Parameter der Cmdlets
"Invoke-Command", "New-PSSession" und "Enter-PSSession" beim
Herstellen einer Verbindung verwenden. Diese Option verwendet den
sichereren HTTPS-Channel anstelle von HTTP.
ERFORDERN ALLE REMOTEBEFEHLE WINDOWS POWERSHELL-REMOTING?
Nein. Einige Cmdlets verfügen über einen ComputerName-Parameter,
mit dem Objekte vom Remotecomputer abgerufen werden können.
Diese Cmdlets verwenden kein Windows PowerShell-Remoting. Sie
können daher auf jedem Computer mit Windows PowerShell verwendet
werden, auch wenn der Computer nicht für Windows PowerShell-Remotin
g konfiguriert wurde oder die Anforderungen für Windows
PowerShell-Remoting nicht erfüllt.
Diese Cmdlets umfassen folgende Cmdlets:
Get-Process
Get-Service
Get-WinEvent
Get-EventLog
Get-WmiObject
Test-Connection
Um alle Cmdlets mit einem ComputerName-Parameter zu suchen, geben
Sie Folgendes ein:
get-help * -parameter ComputerName
Informationen darüber, ob der ComputerName-Parameter eines
bestimmten Cmdlets Windows PowerShell-Remoting erfordert, finden
Sie in der Parameterbeschreibung. Um die Parameterbeschreibung
anzuzeigen, geben Sie Folgendes ein:
get-help <Cmdlet-Name> -parameter ComputerName
Beispiel:
get-help get-process -parameter Computername
Verwenden Sie das Cmdlet "Invoke-Command" für alle anderen Befehle.
WIE führe ich einen Befehl auf einem Remotecomputer aus?
Verwenden Sie das Cmdlet "Invoke-Command", um einen Befehl auf
einem Remotecomputer auszuführen.
Schließen Sie den Befehl in Klammern ( {} ) ein, um einen
Skriptblock zu erstellen. Geben Sie den Befehl mit dem
ScriptBlock-Parameter von Invoke-Command an.
Sie können den ComputerName-Parameter von Invoke-Command
verwenden, um einen Remotecomputer anzugeben. Sie können auch eine
dauerhafte Verbindung mit einem Remotecomputer (eine Sitzung)
erstellen und anschließend den Session-Parameter von
Invoke-Command verwenden, um den Befehl in der Sitzung auszuführen.
Beispielsweise wird mit den folgenden Befehlen ein Get-Process-Befe
hl remote ausgeführt.
invoke-command -computername Server01, Server02 -scriptblock {get-process}
- oder -
invoke-command -session $s -scriptblock {get-process}
Um einen Remotebefehl zu unterbrechen, geben Sie STRG+C ein. Die
Unterbrechungsanforderung wird an den Remotecomputer übergeben, wo
der Remotebefehl beendet wird.
Weitere Informationen über Remotebefehle finden Sie unter
"about_Remote" und in den Hilfethemen für die Cmdlets mit
Remotingunterstützung.
KANN ICH EINFACH EINE TELNETVERBINDUNG MIT EINEM REMOTECOMPUTER
HERSTELLEN?
Mit dem Cmdlet "Enter-PSSession" können Sie eine interaktive
Sitzung mit einem Remotecomputer starten.
Geben Sie an der Windows PowerShell-Eingabeaufforderung folgenden
Befehl ein:
Enter-PSSession <Computername>
Die Eingabeaufforderung ändert sich, um anzuzeigen, dass eine
Verbindung mit dem Remotecomputer hergestellt wurde.
<Computername>\C:>
Die eingegebenen Befehle werden nun auf dem Remotecomputer
ausgeführt, als ob diese direkt auf dem Remotecomputer eingegeben
würden.
Um die interaktive Sitzung zu beenden, geben Sie Folgendes ein:
Exit-PSSession
Eine interaktive Sitzung ist eine dauerhafte Sitzung, die das
WS-Management-Protokoll verwendet. Dies ist nicht mit der
Verwendung von Telnet zu vergleichen, funktioniert jedoch auf
ähnliche Weise.
Weitere Informationen finden Sie unter "Enter-PSSession".
KANN ICH EINE DAUERHAFTE VERBINDUNG ERSTELLEN?
Ja. Sie können Remotebefehle ausführen, indem Sie den Namen des
Remotecomputers, den NetBIOS-Namen oder die IP-Adresse angeben.
Sie können Remotebefehle auch ausführen, indem Sie eine Windows
PowerShell-Sitzung (PSSession) angeben, die mit dem
Remotecomputer verbunden ist.
Wenn Sie den ComputerName-Parameter von Invoke-Command oder
Enter-PSSession verwenden, stellt Windows PowerShell eine
temporäre Verbindung her. Windows PowerShell verwendet die
Verbindung nur zur Ausführung des aktuellen Befehls, anschließend
wird die Verbindung geschlossen. Dabei handelt es sich um eine
sehr effiziente Methode zur Ausführung eines einzelnen Befehls
oder mehrerer nicht verknüpfter Befehle; dies gilt auch bei
Verwendung zahlreicher Remotecomputer.
Wenn Sie das Cmdlet "New-PSSession" verwenden, um eine PSSession
zu erstellen, stellt Windows PowerShell eine dauerhafte
Verbindung für die PSSession her. Anschließend können Sie mehrere
Befehle einschließlich Befehle mit gemeinsamen Daten in der
PSSession ausführen.
PSSessions werden normalerweise erstellt, um eine Reihe
verwandter Befehle auszuführen, die Daten gemeinsam verwenden.
Andernfalls ist die temporäre Verbindung, die vom ComputerName-Par
ameter erstellt wurde, für die meisten Befehle ausreichend.
Weitere Informationen über Sitzungen finden Sie unter
"about_PSSessions".
KANN ICH BEFEHLE AUF MEHREREN COMPUTERN GLEICHZEITIG AUSFÜHREN?
Ja. Der ComputerName-Parameter des Cmdlet "Invoke-Command"
akzeptiert mehrere Computernamen, und der Session-Parameter
akzeptiert mehrere PSSessions.
Wenn Sie einen Invoke-Command-Befehl ausführen, führt Windows
PowerShell die Befehle auf allen angegebenen Computern oder in
allen angegebenen PSSessions aus.
Windows PowerShell kann Hunderte von Remoteverbindungen
gleichzeitig verwalten. Die Anzahl der Remotebefehle, die Sie
senden können, kann jedoch durch die Ressourcen des Computers und
dessen Kapazität, mehrere Netzwerkverbindungen herzustellen und
beizubehalten, beschränkt werden.
Weitere Informationen finden Sie im Beispiel des Hilfethemas für
Invoke-Command.
WO FINDE ICH MEINE PROFILE?
Windows PowerShell-Profile werden nicht automatisch in
Remotesitzungen ausgeführt. Die Befehle, die vom Profil
hinzugefügt werden, sind daher in der Remotesitzung nicht
vorhanden. Ferner wird die automatische Variable "$profile" nicht
in Remotesitzungen aufgefüllt.
Verwenden Sie das Cmdlet "Invoke-Command", um ein Profil in einer
Sitzung auszuführen.
Beispielsweise wird mit dem folgenden Befehl das CurrentUserCurren
tHost-Profil vom lokalen Computer in der Sitzung in $s ausgeführt.
invoke-command -session $s -filepath $profile
Beispielsweise wird mit dem folgenden Befehl das CurrentUserCurren
tHost-Profil vom Remotecomputer in der Sitzung in $s ausgeführt.
Da die Variable "$profile" nicht aufgefüllt wird, verwendet der
Befehl den expliziten Pfad für das Profil.
invoke-command -session $s {. "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}
Die Befehle, die der Sitzung vom Profil hinzugefügt werden, sind
nach Ausführen des Befehls in $s verfügbar.
Sie können ein Startskript auch in einer Sitzungskonfiguration
verwenden, um ein Profil in jeder Remotesitzung auszuführen, die
die Sitzungskonfiguration verwendet.
Weitere Informationen über die Windows PowerShell-Profile finden
Sie unter "about_Profiles". Weitere Informationen zu
Sitzungskonfigurationen finden Sie unter "Register-PSSessionConfig
uration".
WIE FUNKTIONIEREN EINSCHRÄNKUNGEN IN REMOTE-BEFEHLEN?
Zur Unterstützung der Verwaltung von Ressourcen auf dem lokalen
Computer enthält Windows PowerShell eine befehlsbasierte
Einschränkungsfunktion, mit der Sie die Anzahl gleichzeitiger
Remoteverbindungen pro Befehl begrenzen können.
Der Standard ist 32 gleichzeitige Verbindungen. Sie können jedoch
mit dem ThrottleLimit-Parameter der Cmdlets eine benutzerdefinierte
Grenze für bestimmte Befehle festlegen.
Bedenken Sie bei der Verwendung des Einschränkungsfeatures, dass
es auf jeden Befehl und nicht auf die gesamte Sitzung oder den
gesamten Computer angewendet wird. Wenn Sie Befehle gleichzeitig
in mehreren Sitzungen oder PSSessions ausführen, ist die Anzahl
der gleichzeitigen Verbindungen die Summe der gleichzeitigen
Verbindungen in allen Sitzungen.
Um Cmdlets mit einem ThrottleLimit-Parameter zu suchen, geben Sie
Folgendes ein:
get-help * -parameter ThrottleLimit
GIBT ES SYSTEMSPEZIFISCHE UNTERSCHIEDE BEIM REMOTING?
Beim Ausführen von Befehlen auf mehreren Computern müssen
Unterschiede, beispielsweise im Hinblick auf das Betriebssystem,
die Dateisystemstruktur und die Registrierung, beachtet werden.
Wenn Sie eine Verbindung mit einem Remotecomputer herstellen, auf
dem Windows Vista oder Windows Server 2003 ausgeführt wird, ist
der Standardausgangspunkt das Stammverzeichnis des aktuellen
Benutzers, das in der Umgebungsvariablen "%homepath%"
($env:homepath) und in der Windows PowerShell-Variablen "$home"
gespeichert wird. Das Stammverzeichnis in Windows Vista ist in
aller Regel C:\Users\<Benutzername>. Das Stammverzeichnis in
Windows Server 2003 ist in aller Regel C:\Dokumente und
Einstellungen\<Benutzername>
Wenn Sie eine Verbindung mit einem Remotecomputer herstellen, auf
dem Windows XP ausgeführt wird, ist der Standardausgangspunkt das
Stammverzeichnis des Standardbenutzers, das für den Standardbenutze
r in der Umgebungsvariablen "%homepath%" ($env:homepath)
gespeichert wird. Das Stammverzeichnis ist in aller Regel
C:\Dokumente und Einstellungen\Default User.
UNTERSCHEIDET SICH DIE AUSGABE VON REMOTE-BEFEHLEN VON DER LOKALEN
AUSGABE?
Wenn Sie Windows PowerShell lokal verwenden, senden und empfangen
Sie "aktive".NET Framework-Objekte. "Aktive" Objekte sind Objekte,
die mit tatsächlichen Programmen oder Systemkomponenten verknüpft
sind. Wenn Sie die Methoden aufrufen oder die Eigenschaften von
echten Objekten ändern, wirken sich die Änderungen auf das
tatsächliche Programm oder die Komponente aus. Wenn sich die
Eigenschaften eines Programms oder einer Komponente ändern, ändern
sich auch die Eigenschaften des Objekts, das sie darstellen.
Da die meisten dieser Objekte jedoch nicht über das Netzwerk
gesendet werden können, werden sie von Windows PowerShell vor dem
Senden in Remotebefehlen "serialisiert", d. h. die einzelnen
Objekte werden für die Übertragung in eine Reihe von XML
(Einschränkungssprache in XML [CLiXML])-Datenelementen konvertiert.
Wenn Windows PowerShell ein serialisiertes Objekt empfängt, wird
das XML in einen deserialisierten Objekttyp konvertiert. Das
deserialisierte Objekt enthält genaue Angaben über die
Eigenschaften des Programms oder der Komponente zu einem früheren
Zeitpunkt. Es handelt sich jedoch nicht mehr um ein "echtes"
Objekt, da es nicht mehr direkt mit der Komponente verknüpft ist.
Außerdem werden die Methoden entfernt, da sie nicht mehr gültig sind.
Normalerweise können deserialisierte Objekte wie echte Objekte
verwendet werden, wenn die diesbezüglichen Einschränkungen
beachtet werden. Außerdem verfügen die Objekte, die vom Cmdlet
"Invoke-Command" zurückgegeben werden, über zusätzliche
Eigenschaften, die Ihnen helfen, den Ursprung des Befehls zu
bestimmen.
Einige Objekttypen, z. B. DirectoryInfo-Objekte und GUIDs, werden
beim Empfang zurück in Liveobjekte konvertiert. Bei diesen
Objekten ist keine spezielle Behandlung oder Formatierung notwendig.
Weitere Informationen über Hintergrundaufträge in Windows
PowerShell finden Sie unter "about_Jobs" und "about_Remote_Jobs".
KÖNNEN HINTERGRUNDAUFTRÄGE REMOTE AUSGEFÜHRT WERDEN?
Ja. Ein Windows PowerShell-Hintergrundauftrag ist ein Windows
PowerShell-Befehl, der asynchron und ohne Interaktion mit der
Sitzung ausgeführt wird. Wenn Sie einen Hintergrundauftrag
starten, wird die Eingabeaufforderung sofort zurückgegeben, und
Sie können weiterhin in der Sitzung arbeiten, während der Auftrag
ausgeführt wird; dies gilt auch, wenn für die Ausführung des
Auftrags ein längerer Zeitraum erforderlich ist.
Hintergrundaufträge können auch während der Ausführung anderer
Befehle gestartet werden, da Hintergrundaufträge in einer
temporären Sitzung immer asynchron ausgeführt werden.
Sie können Hintergrundaufträge auf einem lokalen Computer oder auf
einem Remotecomputer ausführen. Standardmäßig werden
Hintergrundaufträge auf dem lokalen Computer ausgeführt. Sie
können jedoch den AsJob-Parameter des Cmdlet "Invoke-Command"
verwenden, um einen beliebigen Remotebefehl als Hintergrundauftrag
auszuführen. Außerdem können Sie mit Invoke-Command einen
Start-Job-Befehl remote ausführen.
Weitere Informationen über Hintergrundaufträge in Windows
PowerShell erhalten Sie mit dem Befehl "about_jobs".
KÖNNEN WINDOWS-PROGRAMME AUF EINEM REMOTECOMPUTER AUSGEFÜHRT WERDEN?
Sie können Windows-basierte Programme mit Windows PowerShell-Remot
ebefehlen auf Remotecomputern ausführen. Beispielsweise können
Sie "Shutdown.exe" oder "Ipconfig" auf einem Remotecomputer
ausführen.
Sie können Windows PowerShell-Befehle jedoch nicht verwenden, um die
Benutzeroberfläche für ein Programm auf einem Remotecomputer zu öffnen.
Wenn Sie ein Windows-Programm auf einem Remotecomputer starten,
werden der Befehl erst abgeschlossen und die Windows
PowerShell-Eingabeaufforderung erst zurückgegeben, wenn das
Programm beendet wurde oder Sie STRG+C drücken, um den Befehl zu
unterbrechen. Wenn Sie beispielsweise das Programm "Ipconfig" auf
einem Remotecomputer ausführen, wird die Eingabeaufforderung erst
zurückgegeben, wenn Ipconfig abgeschlossen wurde.
Wenn Sie Programme mit einer Benutzeroberfläche mit
Remotebefehlen starten, wird der Programmprozess gestartet, die
Benutzeroberfläche wird jedoch nicht angezeigt. Der Windows
PowerShell-Befehl wird erst ausgeführt und die Eingabeaufforderung
erst zurückgegeben, wenn der Programmprozess beendet wurde oder
Sie STRG+C drücken, um den Befehl zu unterbrechen und den
Prozess beenden.
Wenn Sie beispielsweise einen Windows PowerShell-Befehl
verwenden, um Editor auf einem Remotecomputer auszuführen, wird
der Editor-Prozess auf dem Remotecomputer gestartet, aber die
Editor-Benutzeroberfläche wird nicht angezeigt. Um den Befehl zu
unterbrechen und die Eingabeaufforderung wiederherzustellen,
drücken Sie STRG+C.
KANN DIE ANZAHL DER BEFEHLE BEGRENZT WERDEN, DIE REMOTE AUF DEM
COMPUTER AUSGEFÜHRT WERDEN KÖNNEN?
Ja. Jede Remotesitzung muss eine der Sitzungskonfigurationen auf
dem Remotecomputer verwenden. Sie können die Sitzungskonfiguration
en auf dem Computer (und die Berechtigungen für diese
Sitzungskonfigurationen) verwalten, um zu bestimmen, welche
Benutzer welche Befehle remote auf dem Computer ausführen können.
Eine Sitzungskonfiguration konfiguriert die Umgebung für die Sitzung.
Sie können die Konfiguration mit einer Assembly definieren, die
eine neue Konfigurationsklasse implementiert, oder mit einem
Skript, das in der Sitzung ausgeführt wird.
Mit der Konfiguration können die Befehle bestimmt werden, die in
der Sitzung verfügbar sind. Außerdem kann die Konfiguration
Einstellungen enthalten, die den Computer schützen,
beispielsweise Einstellungen, die die Datenmenge begrenzen, die
von der Sitzung in einem einzelnen Objekt oder einem einzelnen
Befehl remote empfangen werden können. Sie können auch eine
Sicherheitsbeschreibung angeben, die die Berechtigungen bestimmt,
die erforderlich sind, um die Konfiguration zu verwenden.
Das Cmdlet "Enable-PSRemoting" erstellt eine Konfiguration für
eine Standardsitzung auf dem Computer: Microsoft.PowerShell
(Microsoft.PowerShell32 für 64-Bit-Betriebssysteme).
Enable-PSRemoting legt die Sicherheitsbeschreibung für die
Konfiguration fest, um die Verwendung auf Mitglieder der Gruppe
"Administratoren" auf dem Computer zu beschränken.
Sie können die Cmdlets für die Sitzungskonfiguration verwenden,
um die Konfigurationen für die Standardsitzung zu bearbeiten,
neue Sitzungskonfigurationen zu erstellen und die Sicherheitsbesch
reibungen von Sitzungskonfigurationen zu ändern.
Wenn Benutzer die Cmdlets "Invoke-Command", "New-PSSession" oder
"Enter-PSSession" verwenden, können sie mit dem ConfigurationName-
Parameter die Sitzungskonfiguration angeben, die für die Sitzung
verwendet wird. Außerdem kann der Wert der Standardkonfiguration
für die Sitzungen geändert werden, indem der Wert der
Einstellungsvariablen "$PSSessionConfigurationName" in der
Sitzung geändert wird.
Weitere Informationen über Sitzungskonfigurationen finden Sie in
der Hilfe für die Cmdlets der Sitzungskonfiguration. Um die
Cmdlets der Sitzungskonfiguration zu suchen, geben Sie Folgendes ein:
get-command *pssessionconfiguration
WAS SIND FAN-IN- UND FAN-OUT-KONFIGURATIONEN?
Das gängigste Windows PowerShell-Remoting-Szenario mit mehreren
Computern ist die 1:n-Konfiguration, in der ein lokaler Computer
(der Computer des Administrators) Windows PowerShell-Befehle von
zahlreichen Remotecomputern empfängt. Dies wird als "FAN-OUT"-Szena
rio bezeichnet.
Einige Unternehmen verfügen jedoch über eine n:1-Konfiguration, in
der viele Clientcomputer eine Verbindung mit einem einzelnen
Remotecomputer herstellen, auf dem Windows PowerShell ausgeführt
wird, beispielsweise ein Dateiserver oder ein Kiosk.
Dies wird als "FAN-IN"-Konfiguration bezeichnet.
Windows PowerShell-Remoting unterstützt sowohl FAN-OUT- als auch FAN-IN-
Konfigurationen.
Für die FAN-OUT-Konfiguration verwendet Windows PowerShell das
WS-Management-Protokoll (Web Services for Management) und den
WinRM-Dienst, der die Microsoft-Implementierung von WS-Management
unterstützt. Wenn ein lokaler Computer eine Verbindung mit einem
Remotecomputer herstellt, stellt WS-Management eine Verbindung her
und verwendet ein Plug-In für Windows PowerShell, um den Windows
PowerShell-Hostprozess ("Wsmprovhost.exe") auf dem Remotecomputer
zu starten. Benutzer können einen alternativen Port, eine
alternative Sitzungskonfiguration und andere Features angeben, um
die Remoteverbindung anzupassen.
Zur Unterstützung der "FAN-IN"-Konfiguration verwendet Windows
PowerShell Internetinformationsdienste (IIS), um WS-Management zu
hosten, das Windows PowerShell-Plug-In zu laden und Windows
PowerShell zu starten. In diesem Szenario werden alle Windows
PowerShell-Sitzungen in einem Hostprozess ausgeführt, anstatt jede
Sitzung in einem separaten Prozess zu starten.
IIS-Hosting und die FAN-IN-Remoteverwaltung werden unter Windows
XP oder Windows Server 2003 nicht unterstützt.
In einer FAN-IN-Konfiguration können Benutzer einen Verbindungs-URI
und einen HTTP-Endpunkt einschließlich Transport, Computername,
Port und Anwendungsname angeben. IIS leitet alle Anforderungen
mit einem angegebenen Anwendungsnamen an die Anwendung weiter.
Die Standardanwendung ist WS-Management, die Windows PowerShell
hosten kann.
Sie können auch einen Authentifizierungsmechanismus angeben und
die Umleitung von HTTP- und HTTPS-Endpunkten verhindern oder zulassen.
KANN REMOTING AUF EINEM EINZELNEN COMPUTER (NICHT IN EINER DOMÄNE)
GETESTET WERDEN?
Ja. Windows PowerShell-Remoting ist auch dann verfügbar, wenn
sich der lokale Computer nicht in einer Domäne befindet. Sie
können die Remotingfeatures verwenden, um eine Verbindung mit
Sitzungen herzustellen und Sitzungen auf dem gleichen Computer zu
erstellen. Die Features erfüllen die gleichen Aufgaben wie beim
Herstellen einer Verbindung mit einem Remotecomputer.
Um Remotebefehle auf einem Computer in einer Arbeitsgruppe
auszuführen, ändern Sie die folgenden Windows-Einstellungen auf
dem Computer.
Vorsicht: Diese Einstellungen wirken sich auf alle Benutzer des
Systems aus, und sie können das System anfälliger für böswillige
Angriffe machen. Nehmen Sie solche Änderungen mit Bedacht vor.
-- Windows XP mit SP2:
Ändern Sie im Fenster "Lokale Sicherheitseinstellungen"
(Secpol.msc) die Einstellung für die Richtlinie
"Netzwerkzugriff: Modell für gemeinsame Nutzung und
Sicherheitsmodell für lokale Konten" unter "Sicherheitseinstel
lungen\Lokale Richtlinien\Sicherheitsoptionen" in "Klassisch".
-- Windows Vista:
Erstellen Sie den folgenden Registrierungseintrag, und legen
Sie den Wert auf "1" fest:
LocalAccountTokenFilterPolicy in
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
Sie können den folgenden Windows PowerShell-Befehl verwenden,
um diesen Eintrag hinzuzufügen:
new-itemproperty `
-path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System `
-name LocalAccountTokenFilterPolicy -propertyType DWord -value 1
-- Windows 2003:
Es sind keine Änderungen erforderlich, da die Standardeinstell
ung für die Richtlinie "Netzwerkzugriff: Modell für
gemeinsame Nutzung und Sicherheitsmodell für lokale Konten"
auf "Klassisch" festgelegt ist. Überprüfen Sie die
Einstellung, falls diese geändert wurde.
KÖNNEN REMOTEBEFEHLE AUF EINEM COMPUTER IN EINER ANDEREN DOMÄNE
AUSGEFÜHRT WERDEN?
Ja. Die Befehle werden normalerweise fehlerfrei ausgeführt.
Möglicherweise müssen Sie jedoch den Credential-Parameter des
Cmdlet "Invoke-Command", "New-PSSession" oder "Enter-PSSession"
verwenden, um die Anmeldeinformationen eines Mitglieds der Gruppe
"Administratoren" auf dem Remotecomputer bereitzustellen. Dies
ist manchmal auch dann erforderlich, wenn der aktuelle Benutzer
Mitglied der Gruppe "Administratoren" auf dem lokalen Computer
und auf dem Remotecomputer ist.
Wenn sich der Remotecomputer jedoch nicht in einer Domäne
befindet, die vom lokalen Computer als vertrauenswürdig
eingestuft wird, kann die Authentifizierung der Anmeldeinformation
en des Benutzers durch den Computer möglicherweise nicht
durchgeführt werden.
Mit dem folgenden Befehl können Sie den Remotecomputer der Liste
der vertrauenswürdigen Hosts für den lokalen Computer in WinRM
hinzufügen, um die Authentifizierung zu aktivieren.
Geben Sie den Befehl an der Windows PowerShell-Eingabeaufforderung
ein.
set-item WSMan:\localhost\Client\TrustedHosts -value <Remote-computer-name>
Um beispielsweise den Computer "Server01" der Liste der
vertrauenswürdigen Hosts auf dem lokalen Computer hinzuzufügen,
geben Sie den folgenden Befehl an der Windows PowerShell-Eingabeau
fforderung ein:
set-item WSMan:\localhost\Client\TrustedHosts -value Server01
SIEHE AUCH
about_Remote
about_Profiles
about_PSSessions
about_Remote_Jobs
Invoke-Command
New-PSSession
C:\Windows>powershell get-help about_remote_jobs -full
ColorConsole [Version 1.7.1000] PowerShell 2.0-Export
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2014 Microsoft Corporation.