Export-PSSession
Exportiert Befehle aus einer anderen Sitzung und speichert sie in einem PowerShell-Modul.
Syntax
Export-PSSession
[-Session] <PSSession>
[-OutputModule] <string>
[[-CommandName] <string[]>]
[[-FormatTypeName] <string[]>]
[-Force]
[-Encoding <string>]
[-AllowClobber]
[-ArgumentList <Object[]>]
[-CommandType <CommandTypes>]
[-Module <string[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[-Certificate <X509Certificate2>]
[<CommonParameters>]
Beschreibung
Das cmdlet Export-PSSession
ruft Cmdlets, Funktionen, Aliase und andere Befehlstypen aus einer anderen PowerShell-Sitzung (PSSession) auf einem lokalen oder Remotecomputer ab und speichert sie in einem PowerShell-Modul. Um die Befehle aus dem Modul zur aktuellen Sitzung hinzuzufügen, verwenden Sie das cmdlet Import-Module
.
Im Gegensatz zu Import-PSSession
, die Befehle aus einer anderen PSSession in die aktuelle Sitzung importiert, speichert Export-PSSession
die Befehle in einem Modul. Die Befehle werden nicht in die aktuelle Sitzung importiert.
Verwenden Sie zum Exportieren von Befehlen das cmdlet New-PSSession
, um eine PSSession mit den Befehlen zu erstellen, die Sie exportieren möchten. Verwenden Sie dann das cmdlet Export-PSSession
, um die Befehle zu exportieren.
Um Befehlsnamenkonflikte zu verhindern, besteht die Standardeinstellung für Export-PSSession
darin, alle Befehle zu exportieren, mit Ausnahme von Befehlen, die in der aktuellen Sitzung vorhanden sind. Sie können den parameter CommandName verwenden, um die zu exportierenden Befehle anzugeben.
Das cmdlet Export-PSSession
verwendet das implizite Remoting-Feature von PowerShell. Wenn Sie Befehle in die aktuelle Sitzung importieren, werden sie implizit in der ursprünglichen Sitzung oder in einer ähnlichen Sitzung auf dem ursprünglichen Computer ausgeführt.
Beispiele
Beispiel 1: Exportieren von Befehlen aus einer PSSession
In diesem Beispiel wird eine neue PSSession vom lokalen Computer auf dem Server01-Computer erstellt. Alle Befehle, mit Ausnahme der Befehle, die in der aktuellen Sitzung vorhanden sind, werden auf dem lokalen Computer in das Modul mit dem Namen Server01 exportiert. Der Export enthält die Formatierungsdaten für die Befehle.
$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01
Der Befehl New-PSSession
erstellt eine PSSession auf dem Server01-Computer. Die PSSession wird in der $S
Variablen gespeichert. Der Befehl Export-PSSession
exportiert die Befehle und Formatierungsdaten der $S
Variablen in das Server01-Modul.
Beispiel 2: Exportieren der Befehle "Abrufen" und "Festlegen"
In diesem Beispiel werden alle befehle Get
und Set
von einem Server exportiert.
$S = New-PSSession -ConnectionUri https://exchange.microsoft.com/mailbox -Credential exchangeadmin01@hotmail.com -Authentication Negotiate
Export-PSSession -Session $S -Module exch* -CommandName Get-*, Set-* -FormatTypeName * -OutputModule $PSHOME\Modules\Exchange -Encoding ASCII
Diese Befehle exportieren die Befehle Get
und Set
von einem Microsoft Exchange Server-Snap-In auf einem Remotecomputer in ein Exchange-Modul im verzeichnis $PSHOME\Modules
auf dem lokalen Computer.
Wenn Sie das Modul im verzeichnis $PSHOME\Modules
platzieren, kann es für alle Benutzer des Computers zugänglich sein.
Beispiel 3: Exportieren von Befehlen von einem Remotecomputer
In diesem Beispiel werden Cmdlets von einer PSSession auf einem Remotecomputer exportiert und in einem Modul auf dem lokalen Computer gespeichert. Die Cmdlets aus dem Modul werden der aktuellen Sitzung hinzugefügt, sodass sie verwendet werden können.
$S = New-PSSession -ComputerName Server01 -Credential Server01\User01
Export-PSSession -Session $S -OutputModule TestCmdlets -Type Cmdlet -CommandName *test* -FormatTypeName *
Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files
Der Befehl New-PSSession
erstellt eine PSSession auf dem Server01-Computer und speichert sie in der variablen $S
. Der Befehl Export-PSSession
exportiert die Cmdlets, deren Namen mit "Test" aus der PSSession in $S
beginnen, in das Modul "TestCmdlets" auf dem lokalen Computer.
Das cmdlet Remove-PSSession
löscht die PSSession in $S
aus der aktuellen Sitzung. Dieser Befehl zeigt, dass die PSSession nicht aktiv sein muss, um die Befehle zu verwenden, die aus der Sitzung importiert wurden. Das Cmdlet Import-Module
fügt die Cmdlets im Modul "TestCmdlets" zur aktuellen Sitzung hinzu. Der Befehl kann jederzeit in jeder Sitzung ausgeführt werden.
Das Cmdlet Get-Help
ruft Hilfe für Cmdlets ab, deren Namen mit Test beginnen. Nachdem die Befehle in einem Modul der aktuellen Sitzung hinzugefügt wurden, können Sie die Get-Help
und Get-Command
Cmdlets verwenden, um mehr über die importierten Befehle zu erfahren. Das Cmdlet Test-Files
wurde vom Server01-Computer exportiert und der Sitzung hinzugefügt. Das cmdlet Test-Files
wird in einer Remotesitzung auf dem Computer ausgeführt, von dem der Befehl importiert wurde. PowerShell erstellt eine Sitzung aus Informationen, die im TestCmdlets-Modul gespeichert sind.
Beispiel 4: Exportieren und Klobberbefehle in der aktuellen Sitzung
In diesem Beispiel werden Befehle exportiert, die in einer Variablen in die aktuelle Sitzung gespeichert sind.
Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands
Mit diesem Export-PSSession
Befehl werden alle Befehle und alle Formatierungsdaten aus der PSSession in der variablen $S
in die aktuelle Sitzung exportiert. Der AllowClobber Parameter enthält Befehle mit denselben Namen wie Befehle in der aktuellen Sitzung.
Beispiel 5: Exportieren von Befehlen aus einer geschlossenen PSSession
In diesem Beispiel wird gezeigt, wie die exportierten Befehle mit speziellen Optionen ausgeführt werden, wenn die PSSession, die die exportierten Befehle erstellt hat, geschlossen wird.
Wenn die ursprüngliche Remotesitzung geschlossen wird, wenn ein Modul importiert wird, verwendet das Modul jede geöffnete Remotesitzung, die eine Verbindung mit dem ursprünglichen Computer herstellt. Wenn keine aktuelle Sitzung auf dem ursprünglichen Computer vorhanden ist, erstellt das Modul eine Sitzung erneut.
Um exportierte Befehle mit speziellen Optionen in einer Remotesitzung auszuführen, müssen Sie eine Remotesitzung mit diesen Optionen erstellen, bevor Sie das Modul importieren. Verwenden des Cmdlets New-PSSession
mit dem Parameter SessionOption
$Options = New-PSSessionOption -NoMachineProfile
$S = New-PSSession -ComputerName Server01 -SessionOption $Options
Export-PSSession -Session $S -OutputModule Server01
Remove-PSSession $S
New-PSSession -ComputerName Server01 -SessionOption $Options
Import-Module Server01
Das cmdlet New-PSSessionOption
erstellt ein PSSessionOption--Objekt und speichert das Objekt in der $Options
Variablen. Der Befehl New-PSSession
erstellt eine PSSession auf dem Server01-Computer.
Der parameter SessionOption verwendet das in $Options
gespeicherte Objekt. Die Sitzung wird in der $S
Variablen gespeichert.
Das cmdlet Export-PSSession
exportiert Befehle aus der PSSession in $S
in das Server01-Modul.
Das cmdlet Remove-PSSession
löscht die PSSession in der variablen $S
.
Das Cmdlet New-PSSession
erstellt eine neue PSSession, die eine Verbindung mit dem Server01-Computer herstellt. Der parameter SessionOption verwendet das in $Options
gespeicherte Objekt. Das cmdlet Import-Module
importiert die Befehle aus dem Server01-Modul. Die Befehle im Modul werden in der PSSession auf dem Server01-Computer ausgeführt.
Parameter
-AllowClobber
Exportiert die angegebenen Befehle, auch wenn sie dieselben Namen wie Befehle in der aktuellen Sitzung haben.
Wenn Sie einen Befehl mit demselben Namen wie einen Befehl in der aktuellen Sitzung exportieren, blendet der exportierte Befehl die ursprünglichen Befehle aus oder ersetzt sie. Weitere Informationen finden Sie unter about_Command_Precedence.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ArgumentList
Exportiert die Variante des Befehls, die sich aus der Verwendung der angegebenen Argumente (Parameterwerte) ergibt.
Um beispielsweise die Variante des Befehls Get-Item
im Zertifikatlaufwerk (Cert:) in der PSSession in $S
zu exportieren, geben Sie Export-PSSession -Session $S -Command Get-Item -ArgumentList cert:
ein.
Typ: | Object[] |
Aliase: | Args |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Certificate
Gibt das Clientzertifikat an, das zum Signieren der Formatdateien (*. Format.ps1xml) oder Skriptmoduldateien (PSM1) im Modul, das Export-PSSession
erstellt. Geben Sie eine Variable ein, die ein Zertifikat oder einen Befehl oder Ausdruck enthält, der das Zertifikat abruft.
Um ein Zertifikat zu finden, verwenden Sie das cmdlet Get-PfxCertificate
, oder verwenden Sie das cmdlet Get-ChildItem
im Zertifikatlaufwerk (Cert:). Wenn das Zertifikat ungültig ist oder nicht über ausreichende Autorität verfügt, schlägt der Befehl fehl.
Typ: | X509Certificate2 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-CommandName
Exportiert nur die Befehle mit den angegebenen Namen oder Namensmustern. Wildcards sind zulässig. Verwenden Sie CommandName- oder ihren Alias Name.
Standardmäßig exportiert Export-PSSession
alle Befehle aus der PSSession mit Ausnahme von Befehlen mit denselben Namen wie Befehle in der aktuellen Sitzung. Dadurch wird verhindert, dass Befehle in der aktuellen Sitzung ausgeblendet oder ersetzt werden. Wenn Sie alle Befehle exportieren möchten, verwenden Sie auch diejenigen, die andere Befehle ausblenden oder ersetzen, den AllowClobber Parameter.
Wenn Sie den parameter CommandName verwenden, werden die Formatierungsdateien für die Befehle nicht exportiert, es sei denn, Sie verwenden den FormatTypeName Parameter. Wenn Sie auch den FormatTypeName Parameter verwenden, werden keine Befehle exportiert, es sei denn, Sie verwenden den parameter CommandName.
Typ: | String[] |
Aliase: | Name |
Position: | 2 |
Standardwert: | All commands in the session. |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | True |
-CommandType
Exportiert nur die angegebenen Typen von Befehlsobjekten. Verwenden Sie CommandType- oder ihren Alias Type.
Die zulässigen Werte für diesen Parameter sind wie folgt:
-
Alias
: Alle PowerShell-Aliase in der aktuellen Sitzung. -
All
: Alle Befehlstypen. Es entsprichtGet-Command -Name *
. -
Application
: Alle Dateien außer PowerShell-Dateien in Pfaden, die in der Umgebungsvariablen "Path" ($env:path
) aufgeführt sind, einschließlich .txt, .exeund .dll Dateien. -
Cmdlet
: Die Cmdlets in der aktuellen Sitzung. Cmdlet ist die Standardeinstellung. -
Configuration
: Eine PowerShell-Konfiguration. Weitere Informationen finden Sie unter about_Session_Configurations. -
ExternalScript
: Alle .ps1 Dateien in den Pfaden, die in der Umgebungsvariable "Pfad" aufgeführt sind ($env:path
). -
Filter
undFunction
: Alle PowerShell-Funktionen. -
Script
Skriptblöcke in der aktuellen Sitzung. -
Workflow
einen PowerShell-Workflow. Weitere Informationen finden Sie unter about_Workflows.
Diese Werte werden als flagbasierte Enumeration definiert. Sie können mehrere Werte kombinieren, um mehrere Flags mithilfe dieses Parameters festzulegen. Die Werte können als Array von Werten oder als kommagetrennte Zeichenfolge dieser Werte an den CommandType Parameter übergeben werden. Das Cmdlet kombiniert die Werte mithilfe eines Binary-OR-Vorgangs. Das Übergeben von Werten als Array ist die einfachste Option und ermöglicht ihnen auch die Verwendung des Tabstopps für die Werte.
Typ: | CommandTypes |
Aliase: | Type |
Zulässige Werte: | Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow |
Position: | Named |
Standardwert: | All commands in the session. |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Encoding
Gibt den Typ der Codierung für die Zieldatei an. Der Standardwert ist UTF8
.
Die zulässigen Werte für diesen Parameter sind wie folgt:
-
ASCII
: Verwendet ASCII-Zeichensatz (7-Bit). -
BigEndianUnicode
: Verwendet UTF-16 mit der Big-End-Byte-Reihenfolge. -
Default
; Verwendet die Codierung, die der aktiven Codeseite des Systems entspricht. -
OEM
: Verwendet die Codierung, die der aktuellen OEM-Codeseite des Systems entspricht. -
Unicode
: Verwendet UTF-16 mit der Little-End-Byte-Reihenfolge. -
UTF7
: Verwendet UTF-7. -
UTF8
: Verwendet UTF-8. -
UTF32
: Verwendet UTF-32 mit der Little-End-Byte-Reihenfolge.
Typ: | String |
Zulässige Werte: | ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32 |
Position: | Named |
Standardwert: | UTF8 |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Force
Überschreibt mindestens eine vorhandene Ausgabedatei, auch wenn die Datei über das schreibgeschützte Attribut verfügt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-FormatTypeName
Exportiert Formatierungsanweisungen nur für die angegebenen Microsoft .NET Framework-Typen. Geben Sie die Typnamen ein. Standardmäßig exportiert Export-PSSession
Formatierungsanweisungen für alle .NET Framework-Typen, die sich nicht im System.Management.Automation Namespace befinden.
Der Wert dieses Parameters muss der Name eines Typs sein, der von einem Get-FormatData
-Befehl in der Sitzung zurückgegeben wird, aus dem die Befehle importiert werden. Geben Sie *
ein, um alle Formatierungsdaten in der Remotesitzung abzurufen.
Wenn Sie den parameter FormatTypeName verwenden, werden keine Befehle exportiert, es sei denn, Sie verwenden den parameter CommandName.
Wenn Sie den parameter CommandName verwenden, werden die Formatierungsdateien für die Befehle nicht exportiert, es sei denn, Sie verwenden den FormatTypeName Parameter.
Typ: | String[] |
Position: | 3 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-FullyQualifiedModule
Der Wert kann ein Modulname, eine vollständige Modulspezifikation oder ein Pfad zu einer Moduldatei sein.
Wenn der Wert ein Pfad ist, kann der Pfad vollqualifizierte oder relativ sein. Ein relativer Pfad wird relativ zum Skript aufgelöst, das die using-Anweisung enthält.
Wenn es sich bei dem Wert um einen Namen oder eine Modulspezifikation handelt, durchsucht PowerShell die PSModulePath- nach dem angegebenen Modul.
Eine Modulspezifikation ist eine Hashtabelle mit den folgenden Schlüsseln.
-
ModuleName
- Erforderlicher Gibt den Modulnamen an. -
GUID
- Optionaler Gibt die GUID des Moduls an. - Außerdem Erforderlicher, um mindestens einen der drei folgenden Tasten anzugeben.
-
ModuleVersion
– Gibt eine akzeptable Mindestversion des Moduls an. -
MaximumVersion
– Gibt die maximal zulässige Version des Moduls an. -
RequiredVersion
– Gibt eine genaue, erforderliche Version des Moduls an. Dies kann nicht mit den anderen Versionsschlüsseln verwendet werden.
-
Sie können den parameter FullyQualifiedModule nicht im selben Befehl wie ein Module-Parameter angeben. die beiden Parameter schließen sich gegenseitig aus.
Typ: | ModuleSpecification[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Module
Exportiert nur die Befehle in den angegebenen PowerShell-Snap-Ins und -Modulen. Geben Sie die Snap-In- und Modulnamen ein. Wildcards sind nicht zulässig.
Weitere Informationen finden Sie unter Import-Module
und about_PSSnapins.
Typ: | String[] |
Aliase: | PSSnapin |
Position: | Named |
Standardwert: | All commands in the session. |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-OutputModule
Gibt einen optionalen Pfad und Namen für das von Export-PSSession
erstellte Modul an. Der Standardpfad ist $HOME\Documents\WindowsPowerShell\Modules
. Dieser Parameter ist erforderlich.
Wenn das Modulunterverzeichnis oder eine der Dateien, die Export-PSSession
erstellt, bereits vorhanden ist, schlägt der Befehl fehl. Verwenden Sie zum Überschreiben vorhandener Dateien den Parameter Force.
Typ: | String |
Aliase: | PSPath, ModuleName |
Position: | 1 |
Standardwert: | $HOME\Documents\WindowsPowerShell\Modules |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Session
Gibt die PSSession an, aus der die Befehle exportiert werden. Geben Sie eine Variable ein, die ein Sitzungsobjekt oder einen Befehl enthält, der ein Sitzungsobjekt abruft, z. B. einen Get-PSSession
-Befehl. Dieser Parameter ist erforderlich.
Typ: | PSSession |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
None
Sie können keine Objekte an dieses Cmdlet weiterleiten.
Ausgaben
Dieses Cmdlet gibt eine Liste von Dateien zurück, die das erstellte Modul umfassen.
Hinweise
Windows PowerShell enthält die folgenden Aliase für Export-PSSession
:
epsn
Export-PSSession
basiert auf der PowerShell-Remotinginfrastruktur. Um dieses Cmdlet zu verwenden, muss der Computer für remoting konfiguriert sein. Weitere Informationen finden Sie unter about_Remote_Requirements.
Sie können Export-PSSession
nicht zum Exportieren eines PowerShell-Anbieters verwenden.
Exportierte Befehle werden implizit in der PSSession ausgeführt, aus der sie exportiert wurden. Die Details der Remoteausführung der Befehle werden vollständig von PowerShell behandelt. Sie können die exportierten Befehle genauso ausführen wie lokale Befehle.
Export-ModuleMember
erfasst und speichert Informationen über die PSSession im von ihr exportierten Modul. Wenn die PSSession, aus der die Befehle exportiert wurden, beim Importieren des Moduls geschlossen wird und keine aktiven PSSessions auf demselben Computer vorhanden sind, versuchen die Befehle im Modul, die PSSession neu zu erstellen. Wenn versucht wird, die PSSession neu zu erstellen, werden die exportierten Befehle nicht ausgeführt.
Die Sitzungsinformationen, die Export-ModuleMember
im Modul erfasst und gespeichert werden, enthalten keine Sitzungsoptionen, z. B. die, die Sie in der $PSSessionOption
Einstellungsvariable angeben, oder mithilfe des SessionOption--Parameters des New-PSSession
, Enter-PSSession
oder Invoke-Command
Cmdlets. Wenn die ursprüngliche PSSession geschlossen wird, wenn Sie das Modul importieren, verwendet das Modul eine andere PSSession auf denselben Computer, falls vorhanden. Um die Ausführung der importierten Befehle in einer ordnungsgemäß konfigurierten Sitzung zu ermöglichen, erstellen Sie eine PSSession mit den gewünschten Optionen, bevor Sie das Modul importieren.
Um die zu exportierenden Befehle zu finden, verwendet Export-PSSession
das cmdlet Invoke-Command
, um einen Get-Command
Befehl in der PSSession auszuführen. Zum Abrufen und Speichern von Formatierungsdaten für die Befehle werden die cmdlets Get-FormatData
und Export-FormatData
verwendet. Möglicherweise werden Fehlermeldungen von Invoke-Command
, Get-Command
, Get-FormatData
und Export-FormatData
angezeigt, wenn Sie einen Export-PSSession
Befehl ausführen. Außerdem können Export-PSSession
keine Befehle aus einer Sitzung exportieren, die nicht die Cmdlets Get-Command
, Get-FormatData
, Select-Object
und Get-Help
enthält.
Export-PSSession
verwendet das Cmdlet Write-Progress
, um den Fortschritt des Befehls anzuzeigen. Möglicherweise wird die Statusleiste angezeigt, während der Befehl ausgeführt wird.
Exportierte Befehle haben dieselben Einschränkungen wie andere Remotebefehle, einschließlich der Unfähigkeit, ein Programm mit einer Benutzeroberfläche zu starten, z. B. Editor.
Da PowerShell-Profile nicht in PSSessions ausgeführt werden, sind die Befehle, die ein Profil zu einer Sitzung hinzufügt, nicht für Export-PSSession
verfügbar. Verwenden Sie zum Exportieren von Befehlen aus einem Profil einen Invoke-Command
Befehl, um das Profil in der PSSession manuell auszuführen, bevor Sie Befehle exportieren.
Das modul, das Export-PSSession
erstellt, kann eine Formatierungsdatei enthalten, auch wenn der Befehl keine Formatierungsdaten importiert. Wenn der Befehl keine Formatierungsdaten importiert, enthalten alle erstellten Formatierungsdateien keine Formatierungsdaten.