Importiert Befehle aus einer anderen Sitzung und speichert sie in einem Windows PowerShell-Modul.

Syntax

Export-PSSession [-Session] <PSSession> [-OutputModule] <string> [[-CommandName] <string[]>] [[-FormatTypeName] <string[]>] [-AllowClobber] [-ArgumentList <Object[]>] [-CommandType {<Alias> | <Function> | <Filter> | <Cmdlet> | <ExternalScript> | <Application> | <Script> | <All>}] [-Encoding <string>] [-Force] [-Module <string[]>] [<CommonParameters>]

Beschreibung

Mit dem Cmdlet "Export-PSSession" werden Cmdlets, Funktionen, Aliase und andere Befehlstypen aus einer anderen PSSession auf einem lokalen oder Remotecomputer abgerufen und in einem Windows PowerShell-Modul gespeichert. Um die Befehle aus dem Modul zur aktuellen Sitzung hinzuzufügen, verwenden Sie das Cmdlet "Import-Module".

Im Gegensatz zu Import-PSSession, mit dem Befehle aus einer anderen PSSession in die aktuelle Sitzung importiert werden, speichert Export-PSSession die Befehle in einem Modul. Die Befehle werden nicht in die aktuelle Sitzung importiert.

Verwenden Sie zum Exportieren von Befehlen zunächst das Cmdlet "New-PSSession", um eine PSSession zu erstellen, in der sich die zu exportierenden Befehle befinden. Exportieren Sie anschließend die Befehle mit dem Cmdlet "Export-PSSession". Standardmäßig werden mit Export-PSSession alle Befehle exportiert, mit Ausnahme von Befehlen, die in der aktuellen Sitzung vorhanden sind. Sie können jedoch die zu exportierenden Befehle mithilfe des CommandName-Parameters angeben.

Das Cmdlet "Export-PSSession" verwendet das implizite Remotingfeature von Windows PowerShell. Wenn Sie Befehle in die aktuelle Sitzung importieren, werden sie entweder in der ursprünglichen Sitzung oder in einer vergleichbaren Sitzung auf dem ursprünglichen Computer implizit ausgeführt.

Parameter

-AllowClobber

Exportiert die angegebenen Befehle, auch wenn sie die gleichen Namen wie Befehle in der aktuellen Sitzung aufweisen.

Wenn Sie einen Befehl mit dem gleichen Namen wie ein Befehl in der aktuellen Sitzung importieren, werden die ursprünglichen Befehle vom importierten Befehl ausgeblendet oder ersetzt. Weitere Informationen finden Sie unter "about_Command_Precedence".

Mit Export-PSSession werden keine Befehle importiert, die den gleichen Namen wie Befehle in der aktuellen Sitzung aufweisen. Das Standardverhalten sieht vor, dass Konflikte mit Befehlsnamen vermieden werden.

Erforderlich?

false

Position?

named

Standardwert

False

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-ArgumentList <Object[]>

Exportiert die Variante des Befehls, die aus der Verwendung der angegebenen Argumente (Parameterwerte) resultiert.

Um beispielsweise die Variante des Befehls "Get-Item" in der PSSession in $s auf dem Zertifikatlaufwerk ("Cert:") zu exportieren, geben Sie "export-pssession -session $s -command Get-Item -argumentlist cert:" ein.

Erforderlich?

false

Position?

named

Standardwert

keine

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-CommandName <string[]>

Exportiert nur die Befehle mit den angegebenen Namen oder Namensmustern. Platzhalter sind zulässig. Verwenden Sie CommandName oder den zugehörigen Alias "Name".

Standardmäßig werden mit Export-PSSession alle Befehle aus PSSession exportiert, außer Befehlen, die die gleichen Namen wie Befehle in der aktuellen Sitzung aufweisen. Hierdurch wird verhindert, dass Befehle in der aktuellen Sitzung durch importierte Befehle ausgeblendet oder ersetzt werden. Zum Exportieren aller Befehle, einschließlich der Befehle, die andere Befehle ausblenden oder ersetzen, verwenden Sie den AllowClobber-Parameter.

Wenn Sie den CommandName-Parameter verwenden, werden die Formatierungsdateien für die Befehle nicht exportiert, sofern Sie nicht den FormatTypeName-Parameter verwenden. Wenn Sie den FormatTypeName-Parameter verwenden, werden ebenfalls keine Befehle exportiert, sofern Sie nicht den CommandName-Parameter verwenden.

Erforderlich?

false

Position?

3

Standardwert

All commands in the session.

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

true

-CommandType <CommandTypes>

Exportiert nur die angegebenen Typen von Befehlsobjekten. Verwenden Sie "CommandType" oder den zugehörigen Alias "Type".

Gültige Werte:

– Alias: Alle Windows PowerShell-Aliase in der aktuellen Sitzung.

– All: Alle Befehlstypen. Dies entspricht der Verwendung von "Get-Command *".

– Application: Alle nicht zu Windows PowerShell gehörenden Dateien in Pfaden, die in der Path-Umgebungsvariablen ($env:path) aufgeführt sind, einschließlich TXT-, EXE- und DLL-Dateien.

– Cmdlet: Die Cmdlets in der aktuellen Sitzung. Der Standardwert ist "Cmdlet".

– ExternalScript: Alle PS1-Dateien in den in der Path-Umgebungsvariablen ($env:path) aufgeführten Pfaden.

– Filter und Function: Alle Windows PowerShell-Funktionen

– Script: Skriptblöcke in der aktuellen Sitzung.

Erforderlich?

false

Position?

named

Standardwert

All commands in the session.

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Encoding <string>

Gibt die Codierung für die Ausgabedateien an. Gültige Werte sind "Unicode", "UTF7", "UTF8", "ASCII", "UTF32", "BigEndianUnicode", "Default" und "OEM". Der Standardwert ist "UTF-8".

Erforderlich?

false

Position?

named

Standardwert

UTF-8

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Force

Überschreibt eine oder mehrere vorhandene Ausgabedateien, auch wenn die Dateien über das Schreibschutzattribut verfügen.

Erforderlich?

false

Position?

named

Standardwert

False

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-FormatTypeName <string[]>

Exportiert Formatierungsanweisungen ausschließlich für die angegebenen Microsoft .NET Framework-Typen. Geben Sie die Typnamen ein. Standardmäßig werden von Export-PSSession Formatierungsanweisungen für alle .NET Framework-Typen exportiert, die nicht im System.Management.Automation-Namespace enthalten sind.

Der Wert dieses Parameters muss dem Namen eines Typs entsprechen, der von einem Get-FormatData-Befehl in der Sitzung zurückgegeben wird, aus der die Befehle importiert werden. Um alle Formatierungsdaten in der Remotesitzung abzurufen, geben Sie ein Sternchen (*) ein.

Wenn Sie den FormatTypeName-Parameter verwenden, werden keine Befehle exportiert, sofern Sie nicht den CommandName-Parameter verwenden.

Wenn Sie den CommandName-Parameter verwenden, werden ebenfalls keine Formatierungsdateien für die Befehle exportiert, sofern Sie nicht den FormatTypeName-Parameter verwenden.

Erforderlich?

false

Position?

4

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Module <string[]>

Exportiert nur die Befehle in den angegebenen Windows PowerShell-Snap-Ins und -Modulen. Geben Sie den Snap-In- und Modulnamen ein. Platzhalter sind nicht zulässig.

Weitere Informationen finden Sie unter "about_Pssnapins" und "Import-Module".

Erforderlich?

false

Position?

named

Standardwert

All commands in the session.

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-OutputModule <string>

Gibt einen Pfad (optional) und einen Namen für das von Export-PSSession erstellte Modul an. Der Standardpfad lautet "$home\Documents\WindowsPowerShell\Modules". Dieser Parameter ist erforderlich.

Wenn das Unterverzeichnis des Moduls oder eine der von Export-PSSession erstellten Dateien bereits vorhanden ist, schlägt der Befehl fehl. Um vorhandene Dateien zu überschreiben, verwenden Sie den Force-Parameter.

Erforderlich?

true

Position?

2

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Session <PSSession>

Gibt die PSSession an, aus der die Befehle exportiert werden. Geben Sie eine Variable, die ein Sitzungsobjekt enthält, oder einen Befehl ein, mit dem ein Sitzungsobjekt abgerufen wird, z. B. den Befehl "Get-PSSession". Dieser Parameter ist erforderlich.

Erforderlich?

true

Position?

1

Standardwert

keine

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

<CommonParameters>

Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.

Eingaben und Ausgaben

Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.

Eingaben

None

Objekte können nicht über die Pipeline an Export-PSSession übergeben werden.

Ausgaben

System.IO.FileInfo

Export-PSSession gibt eine Liste von Dateien zurück, die das erstellte Modul einschließen.

Hinweise

Für Export-PSSession ist die Windows PowerShell-Remoteinfrastruktur erforderlich. Um dieses Cmdlet zu verwenden, muss der Computer für Remoting konfiguriert sein. Weitere Informationen finden Sie unter "about_Remote_Requirements".

Mithilfe von Export-PSSession kann kein Windows PowerShell-Anbieter exportiert werden.

Exportierte Befehle werden in der PSSession, aus der sie exportiert wurden, implizit ausgeführt. Die Einzelheiten zur Remoteausführung der Befehle werden jedoch vollständig von Windows PowerShell verwaltet. Sie können die exportierten Befehle genauso wie lokale Befehle ausführen.

"Export-Module" erfasst und speichert Informationen zur PSSession im exportierten Modul. Wenn die PSSession, aus der die Befehle exportiert wurden, beim Importieren des Moduls geschlossen ist und auf dem gleichen Computer keine aktiven PSSessions vorhanden sind, wird durch die im Modul enthaltenen Befehle versucht, die PSSession neu zu erstellen. Wenn die PSSession nicht neu erstellt werden kann, werden die exportierten Befehle nicht ausgeführt.

Die von "Export-Module" erfassten und im Modul gespeicherten Sitzungsinformationen enthalten keine Sitzungsoptionen, wie die Optionen, die Sie in der automatische Variablen "$PSSessionOption" oder mit den SessionOption-Parametern der Cmdlets "New-PSSession", "Enter-PSSession" oder "Invoke-Command" angeben.

Wenn die ursprüngliche PSSession beim Importieren des Moduls geschlossen ist, verwendet das Modul eine andere PSSession auf dem gleichen Computer, falls verfügbar. Um die Ausführung der importierten Befehle in einer ordnungsgemäß konfigurierten Sitzung zu ermöglichen, erstellen Sie vor dem Importieren des Moduls eine PSSession mit den gewünschten Optionen.

Um die zu exportierenden Befehle zu suchen, führt Export-PSSession den Befehl "Get-Command" in der PSSession mithilfe des Cmdlets "Invoke-Command" aus. Um Formatierungsdaten für die Befehle abzurufen und zu speichern, werden die Cmdlets Get-FormatData und Export-FormatData verwendet. Wenn Sie den Befehl "Export-PSSession" ausführen, werden möglicherweise Fehlermeldungen für Invoke-Command, Get-Command, Get-FormatData und Export-FormatData angezeigt. Darüber hinaus können mit Export-PSSession keine Befehle aus einer Sitzung exportiert werden, in der nicht die Cmdlets "Get-Command", "Get-FormatData", "Select-Object" und "Get-Help" enthalten sind.

Export-PSSession zeigt den Status des Befehls mit dem Cmdlet "Write-Progress" an. Möglicherweise wird während der Ausführung des Befehls die Statusleiste angezeigt.

Exportierte Befehle weisen die gleichen Einschränkungen wie andere Remotebefehle auf, einschließlich der fehlenden Möglichkeit, ein Programm mit einer Benutzeroberfläche, z. B. Editor, zu starten.

Da in PSSessions keine Windows PowerShell-Profile ausgeführt werden, sind die Befehle, die einer Sitzung von einem Profil hinzufügt werden, für Export-PSSession nicht verfügbar. Um Befehle aus einem Profil zu exportieren, führen Sie das Profil mit dem Befehl "Invoke-Command" manuell in der PSSession aus, bevor Sie Befehle exportieren.

Das von Export-PSSession erstellte Modul, kann eine Formatierungsdatei enthalten, auch wenn mit dem Befehl keine Formatierungsdaten importiert werden. Wenn mit dem Befehl keine Formatierungsdaten importiert werden, enthalten die erstellten Formatierungsdateien keine Formatierungsdaten.

Beispiel 1

C:\PS>$s = new-pssession -computerName Server01

C:\PS> export-pssession -session $s -outputModule Server01

Beschreibung
-----------
Mit den Befehlen in diesem Beispiel werden alle Befehle aus einer PSSession auf dem Computer "Server01" in das Modul "Server01" auf dem lokalen Computer exportiert. Befehle, die den gleichen Namen wie Befehle in der aktuellen Sitzung aufweisen, sind hiervon ausgenommen. Darüber hinaus werden auch die Formatierungsdaten für die Befehle exportiert.   

Im ersten Befehl wird auf dem Computer "Server01" eine PSSession erstellt. Mit dem zweiten Befehl werden die Befehle und Formatierungsdaten aus der Sitzung in das Modul "Server01" exportiert.






Beispiel 2

C:\PS>$s = new-pssession -ConnectionUri http://exchange.microsoft.com/mailbox -credential exchangeadmin01@hotmail.com -authentication negotiate

C:\PS> export-pssession -session $r -module exch* -commandname get-*, set-* -formattypename * -outputModule $pshome\Modules\Exchange -encoding ASCII

Beschreibung
-----------
Mit diesen Befehlen werden die Befehle "Get" und "Set" aus einem Microsoft Exchange Server-Snap-In auf einem Remotecomputer in ein Exchange-Modul im Verzeichnis "$pshome\Modules" auf dem lokalen Computer exportiert.

Indem das Modul in das Verzeichnis "$pshome\Module" eingefügt wird, ist es allen Benutzern des Computers zugänglich.






Beispiel 3

C:\PS>$s = new-pssession -computerName Server01 -credential Server01\User01

C:\PS> export-pssession -session $s -outputModule TestCmdlets -type cmdlet -commandname *test* -formattypename *

C:\PS> remove-pssession $s

C:\PS> import-module TestCmdlets

C:\PS> get-help test*

C:\PS> test-files

Beschreibung
-----------
Mit diesen Befehlen werden Cmdlets aus einer PSSession auf einem Remotecomputer exportiert und in einem Modul auf dem lokalen Computer gespeichert. Anschließend werden die im Modul enthaltenen Cmdlets der aktuellen Sitzung hinzugefügt, damit sie verwendet werden können.

Im ersten Befehl wird auf dem Computer "Server01" eine PSSession erstellt und in der Variablen "$s" gespeichert.

Im zweiten Befehl werden die Cmdlets, deren Name mit "Test" beginnt, aus der PSSession in "$s" in das Modul "TestCmdlets" auf dem lokalen Computer exportiert.

Der dritte Befehl verwendet das Cmdlet "Remove-PSSession", um die PSSession in "$s" aus der aktuellen Sitzung zu löschen. Dieser Befehl zeigt, dass die PSSession nicht aktiv sein muss, damit die daraus importierten Befehle verwendet werden können.

Im vierten Befehl, der jederzeit in jeder Sitzung ausgeführt werden kann, werden die Cmdlets im Modul "TestCmdlets" mit dem Cmdlet "Import-Module" der aktuellen Sitzung hinzugefügt.

Im fünften Befehl wird mit dem Cmdlet "Get-Help" Hilfe für Cmdlets abgerufen, deren Name mit "Test" beginnt. Nachdem der aktuellen Sitzung die Befehle in einem Modul hinzugefügt wurden, können Sie die Cmdlets "Get-Help" und "Get-Command" genauso wie für jeden anderen Befehl in der Sitzung verwenden, um Informationen über die importierten Befehle zu erhalten.

Im sechsten Befehl wird das Cmdlet "Test-Files" verwendet, das vom Computer "Server01" exportiert und der Sitzung hinzugefügt wurde. 

Obwohl nicht direkt ersichtlich, wird der Befehl "Test-Files" tatsächlich in einer Remotesitzung auf dem Computer ausgeführt, von dem der Befehl importiert wurde. Eine Sitzung wird von Windows PowerShell aus den im Modul gespeicherten Informationen erstellt.






Beispiel 4

C:\PS>export-pssession -session $s -AllowClobber -outputModule AllCommands

Beschreibung
-----------
Mit diesem Befehl werden alle Befehle und alle Formatierungsdaten aus der PSSession in der Variablen "$s" in die aktuelle Sitzung exportiert. Im Befehl wird der AllowClobber-Parameter verwendet, um Befehle mit dem gleichen Namen wie Befehle in der aktuellen Sitzung einzuschließen.






Beispiel 5

C:\PS>$options = New-PSSessionOption -NoMachineProfile

C:\PS> $s = new-pssession -computername Server01 -sessionoption $options

C:\PS> export-pssession -session $s -outputModule Server01

C:\PS> remove-pssession $s

C:\PS> new-pssession -computername Server01 -sessionoption $options

C:\PS> import-module Server01

Beschreibung
-----------
In diesem Beispiel wird gezeigt, wie die exportierten Befehle in einer Sitzung mit bestimmten Optionen ausgeführt werden, wenn die PSSession, aus der die Befehle exportiert wurden, geschlossen wird.

Bei Verwendung von Export-PSSession werden Informationen zur ursprünglichen PSSession im erstellten Modul gespeichert. Wenn Sie das Modul importieren und die ursprüngliche Remotesitzung geschlossen ist, verwendet das Modul eine beliebige geöffnete Remotesitzung, die über eine Verbindung mit dem ursprünglichen Computer verfügt. 

Wenn die aktuelle Sitzung keine Remotesitzung mit dem ursprünglichen Computer aufweist, wird mit den Befehlen im Modul erneut eine Sitzung für diesen Computer hergestellt. Export-PSSession speichert jedoch keine speziellen Optionen im Modul, z. B. Optionen, die mit dem SessionOption-Parameter von New-PSSession festgelegt wurden. 

Wenn Sie die exportierten Befehle in einer Remotesitzung mit bestimmten Optionen ausführen möchten, müssen Sie daher eine Remotesitzung mit den gewünschten Optionen erstellen, bevor Sie das Modul importieren.

Im ersten Befehl wird mit dem Cmdlet "New-PSSessionOption" ein PSSessionOption-Objekt erstellt und in der Variablen "$options" gespeichert.

Mit dem zweiten Befehl wird eine PSSession erstellt, die die angegebenen Optionen enthält. Durch den Befehl wird mit dem Cmdlet "New-PSSession" eine PSSession auf dem Computer "Server01" erstellt. Zum Senden des Optionsobjekts in "$options" wird der SessionOption-Parameter verwendet. 

Im dritten Befehl werden mit dem Cmdlet "Export-PSSession" Befehle aus der PSSession in "$s" in das Modul "Server01" exportiert.

Der vierte Befehl verwendet das Cmdlet "Remove-PSSession", um die PSSession in der Variablen "$s" zu löschen.

Im fünften Befehl wird mit dem Cmdlet "New-PSSession" eine neue PSSession erstellt, die mit dem Computer "Server01" verbunden wird. Diese PSSession verwendet ebenfalls die Sitzungsoptionen in der Variablen "$options".

Im sechsten Befehl werden die Befehle mit dem Cmdlet "Import-Module" aus dem Modul "Server01" importiert. Die Befehle im Modul werden in der PSSession auf dem Computer "Server01" ausgeführt.






Siehe auch




Inhaltsverzeichnis