Windows PowerShell: Implicit Remoting

Don Jones

Es gibt eine wenig bekannte Funktion in Windows PowerShell 2.0, die einfach eine unglaubliche Menge an Flexibilität für Ihre Umgebung hinzufügen können. Stellen Sie sich vor, dass die Clientcomputer in erster Linie Windows XP ausführen, immer noch ein gemeinsames ausreichend Szenario. Die Domänencontroller sind Windows Server 2003 verwenden.

Sie können Windows PowerShell 2.0 für beide dieser Betriebssysteme, aber Sie möglicherweise nicht in der Lage, einige der neueren Windows PowerShell-Cmdlet Module, wie die im Lieferumfang von Windows Server 2008 R2 Active Directory-Modul verwenden. Diese Module werden auf älteren Versionen von Windows nicht ausgeführt werden.

Das ist kein Problem. Installieren Sie Windows 7 oder Windows Server 2008 R2 nur auf einem einzigen Computer in Ihrer Umgebung (entweder die wird das Active Directory-Modul ausgeführt werden). Beispielsweise könnte einen einzelnen Domänencontroller mit Windows Server 2008 R2 installiert werden, da, liefert Sie mit dem Active Directory-Modul und der Verzeichnisdienst Active Directory Management Gateway mit dem Modul kommuniziert. Downloaden Sie den Gateway-Dienst und auf Windows Server 2008 und Windows Server 2003 installieren.

Aktivieren Sie Remoting und WinRM auf dem neuen Domänencontroller durch Aktivieren PSRemoting in Windows PowerShell ausführen. Dann starten Sie Windows PowerShell 2.0 auf Ihrem Windows XP-Clientcomputer, und bereiten Sie stellen einige magische.

Erstellen ein Modul

Remoting-Sitzung auf dem neuen Domänencontroller zu starten:

$session = New-PSSession -computerName my-new-dc

Geben Sie den richtigen Computernamen anstelle von “ Meine-neue-dc, ” natürlich. Sie können zusätzliche Parameter, z. B. alternative Anmeldeinformationen oder andere WinRM-Ports angeben. Helfen neue Pssession ausführliche ausgeführt werden.

Teilen Sie als Nächstes, remote-Instanz von Windows PowerShell, die Active Directory-Cmdlets zu laden:

Invoke-command { import-module activedirectory } -session $session

Hier ist der interessante Teil: Weisen Sie der lokalen Instanz von Windows PowerShell die Active Directory-Cmdlets von der Remotesitzung in einem lokalen Modul auf Ihrem Clientcomputer zu exportieren:

Export-PSSession -session $session -commandname *-AD* -outputmodule RemAD -allowclobber

Dieser Befehl erstellt ein neues Windows PowerShell-Modul im Ordner Dokumente unter WindowsPowerShell\Modules\RemAD gespeichert. Nur die Cmdlets, deren Namen das Muster entsprechen “ *-AD * ” eingeschlossen werden. Das ist größte Gründe, die meisten Cmdlets-add-in eine Art von Präfix wie “ Active Directory ” verwenden als Teil der Cmdlet-Name. Dies erleichtert die nehmen Sie nur diese Cmdlets.

Die Cmdlets sind nicht tatsächlich auf den lokalen Computer kopiert. Stattdessen ist eine Art von Verknüpfung lokal erstellte Modul. Die Cmdlets werden immer auf dem Remotedomänencontroller ausgeführt, aber die Cmdlets scheinbar wird lokal ausgeführt werden.

Verwenden Sie die Cmdlets

Durch das Entfernen dieser Sitzung auf dem Remotedomänencontroller zu starten:

Remove-PSSession -session $session

Laden Sie jetzt das neue Modul ein:

Import-Module RemAD -prefix Rem

Mit diesem Befehl wird das neue Modul in den Speicher geladen und fügt ein Präfix “ Rem ” auf den Namen jedes Cmdlet in diesem Modul. Das Präfix ist eine gute Möglichkeit, um Sie daran zu erinnern, dass diese Cmdlets, von einem Remotestandort aus ausgeführt werden. Können Sie alle gewünschten Präfix, aber ich in der Regel mit etwas wie “ R ” oder “ REM ” stehen für “ Remote ”.

Versuchen Sie, auf einem remote-Cmdlet Unterstützung anfordern:

Help New-RemADUser

Einen Fehler wird angezeigt, da eine aktuelle Remoting-Sitzung zwischen dem Computer und dem Domänencontroller, der diese Cmdlets Wohnort hergestellt ist nicht. Sie müssen nicht explizit die Sitzung zu starten. Können implizit dazu versuchen, eine Remote-Cmdlets auszuführen:

Get-RemADUser -filter "Name -like 'D*'"

Die Remoteverbindung zum Domänencontroller re-instantiate wird, senden den Befehl für die Ausführung und führen Sie den Befehl auf dem Domänencontroller. Anschließend wird jeder Benutzer mit “ D ” in XML serialisiert und über das Netzwerk auf den Computer übertragen. Es werden Sie de-serialized zurück in Objekte können, die Sie in der Windows PowerShell-Pipeline arbeiten können. Jetzt können Sie um Hilfe bitten, da die Remotesitzung aktiv ist:

Help New-RemADUser

Die Sitzung bleibt aktiv, bis Sie die Shell-Instanz schließen oder entfernen Sie das Modul:

Remove-Module RemAD

Nicht genügend erreichen und ein Objekt verwalten

Implizite Remoting erleichtert die Cmdlets zu verwenden, die nur auf einem Remotecomputer verfügbar sind. Implizit Remote-Cmdlets Verhalten sich sehr ähnlich wie bei Sie lokal installiert wurden. Dadurch werden Sie verfügbaren wann immer Sie Sie benötigen. Die Remoting-Sitzung erfordert nur wenig Aufwand auf Ihrem Computer oder auf dem Remotecomputer so, dass dies ein außerordentlich praktisch computing verteilt werden.

Don Jones *is a founder of Concentrated Technology, and answers questions about Windows PowerShell and other technologies at ConcentratedTech.com.*Er ist außerdem Autor für Nexus.Realtimepublishers.com , wodurch viele seinen Büchern als kostenloser elektronischer Editionen. verfügbar sind

Verwandter Inhalt