Export-PSSession
Exportiert Befehle aus einer anderen Sitzung und speichert sie in einem PowerShell-Modul.
Syntax
Export-PSSession
[-OutputModule] <String>
[-Force]
[-Encoding <Encoding>]
[[-CommandName] <String[]>]
[-AllowClobber]
[-ArgumentList <Object[]>]
[-CommandType <CommandTypes>]
[-Module <String[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[[-FormatTypeName] <String[]>]
[-Certificate <X509Certificate2>]
[-Session] <PSSession>
[<CommonParameters>]
Beschreibung
Das Export-PSSession
Cmdlet 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. Verwenden Sie das Import-Module
Cmdlet, um die Befehle aus dem Modul zur aktuellen Sitzung hinzuzufügen.
Anders als Import-PSSession
beim Importieren von Befehlen aus einer anderen PSSession in die aktuelle Sitzung werden Export-PSSession
die Befehle in einem Modul gespeichert. Die Befehle werden nicht in die aktuelle Sitzung importiert.
Verwenden Sie zum Exportieren von Befehlen das New-PSSession
Cmdlet, um eine PSSession mit den Befehlen zu erstellen, die Sie exportieren möchten. Verwenden Sie dann das Export-PSSession
Cmdlet, um die Befehle zu exportieren.
Um Befehlsnamenkonflikte zu verhindern, besteht die Standardeinstellung darin Export-PSSession
, alle Befehle zu exportieren, mit Ausnahme von Befehlen, die in der aktuellen Sitzung vorhanden sind. Sie können den CommandName-Parameter verwenden, um die zu exportierenden Befehle anzugeben.
Das Export-PSSession
Cmdlet verwendet das implizite Remoting-Feature von PowerShell. Wenn Sie Befehle in die aktuelle Sitzung importieren, werden sie implizit in der ursprünglichen Sitzung oder einer ähnlichen Sitzung auf dem Quellcomputer 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 New-PSSession
Befehl erstellt eine PSSession auf dem Server01-Computer. Die PSSession wird in der $S
Variablen gespeichert. Der Export-PSSession
Befehl 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
Befehle 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
Mit diesen Befehlen werden die Get
Befehle Set
aus einem Microsoft Exchange Server-Snap-In auf einem Remotecomputer in ein Exchange-Modul im $PSHOME\Modules
Verzeichnis auf dem lokalen Computer exportiert.
Wenn Sie das Modul im $PSHOME\Modules
Verzeichnis 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 New-PSSession
Befehl erstellt eine PSSession auf dem Server01-Computer und speichert sie in der $S
Variablen. Der Export-PSSession
Befehl exportiert die Cmdlets, deren Namen mit "Test" aus der PSSession $S
beginnen, in das Modul "TestCmdlets" auf dem lokalen Computer.
Das Remove-PSSession
Cmdlet löscht die PSSession aus $S
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 Import-Module
Cmdlet fügt die Cmdlets im Modul "TestCmdlets" zur aktuellen Sitzung hinzu. Der Befehl kann jederzeit in jeder Sitzung ausgeführt werden.
Das Get-Help
Cmdlet 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
importierten Befehle und Get-Command
Cmdlets verwenden. Das Test-Files
Cmdlet wurde vom Server01-Computer exportiert und der Sitzung hinzugefügt. Das Test-Files
Cmdlet 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 $S
Variablen in die aktuelle Sitzung exportiert. Der Parameter AllowClobber 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 New-PSSession
Cmdlets 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 New-PSSessionOption
Cmdlet erstellt ein PSSessionOption-Objekt und speichert das Objekt in der $Options
Variablen. Der New-PSSession
Befehl erstellt eine PSSession auf dem Server01-Computer.
Der Parameter SessionOption verwendet das in $Options
. Die Sitzung wird in der $S
Variablen gespeichert.
Das Export-PSSession
Cmdlet exportiert Befehle aus der PSSession in $S
das Server01-Modul.
Das Remove-PSSession
Cmdlet löscht die PSSession in der $S
Variablen.
Das New-PSSession
Cmdlet erstellt eine neue PSSession, die eine Verbindung mit dem Server01-Computer herstellt. Der Parameter SessionOption verwendet das in $Options
. Das Import-Module
Cmdlet 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 denselben Namen wie die 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ArgumentList
Exportiert die Variante des Befehls, die sich aus der Verwendung der angegebenen Argumente (Parameterwerte) ergibt.
Wenn Sie beispielsweise die Variante des Get-Item
Befehls im Zertifikatlaufwerk (Cert:) in der PSSession $S
exportieren möchten, geben Sie folgendes ein Export-PSSession -Session $S -Command Get-Item -ArgumentList cert:
.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Certificate
Gibt das Clientzertifikat an, das zum Signieren der Formatdateien (*. Format.ps1xml) oder Skriptmoduldateien (PSM1) im erstellten Modul Export-PSSession
. Geben Sie eine Variable ein, die ein Zertifikat, einen Befehl oder einen Ausdruck enthält, durch die das Zertifikat abgerufen wird.
Um ein Zertifikat zu finden, verwenden Sie das Get-PfxCertificate
Cmdlet, oder verwenden Sie das Get-ChildItem
Cmdlet im Zertifikatlaufwerk (Cert:). Wenn das Zertifikat ungültig ist oder keine qualifizierte Zertifizierungsstelle aufweist, verursacht der Befehl einen Fehler.
Type: | X509Certificate2 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CommandName
Exportiert nur die Befehle mit den angegebenen Namen oder Namensmustern. Platzhalter sind zulässig. Verwenden Sie "CommandName" oder den Alias "Name".
Exportiert standardmäßig 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 Parameter AllowClobber .
Wenn Sie den Parameter CommandName verwenden, werden die Formatierungsdateien für die Befehle nur exportiert, wenn Sie den Parameter FormatTypeName verwenden. Ebenso werden bei Verwendung des FormatTypeName-Parameters keine Befehle exportiert, es sei denn, Sie verwenden den CommandName-Parameter .
Type: | String[] |
Aliases: | Name |
Position: | 2 |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-CommandType
Exportiert nur die angegebenen Typen von Befehlsobjekten. Verwenden Sie CommandType oder deren Aliastyp.
Die zulässigen Werte für diesen Parameter sind wie folgt:
Alias
: Alle PowerShell-Aliase in der aktuellen Sitzung.All
: Alle Befehlstypen. Es ist das Äquivalent vonGet-Command -Name *
.Application
: Alle Dateien außer PowerShell-Dateien in Pfaden, die in der Pfadumgebungsvariable ($env:path
), einschließlich .txt, .exe und .dll Dateien aufgeführt sind.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 Path-Umgebungsvariable ($env:path
) aufgeführt sind.Filter
undFunction
: Alle PowerShell-Funktionen.Script
Skriptblöcke in der aktuellen Sitzung.Workflow
Ein 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.
Type: | CommandTypes |
Aliases: | Type |
Accepted values: | Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow |
Position: | Named |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Gibt den Typ der Codierung für die Zieldatei an. Der Standardwert ist utf8NoBOM
.
Die zulässigen Werte für diesen Parameter sind wie folgt:
ascii
: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit).ansi
: Verwendet die Codierung für die ANSI-Codeseite der aktuellen Kultur. Diese Option wurde in PowerShell 7.4 hinzugefügt.bigendianunicode
: Codiert im UTF-16-Format mit der Big-End-Byte-Reihenfolge.bigendianutf32
: Codiert im UTF-32-Format mithilfe der Big-End-Byte-Reihenfolge.oem
: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.unicode
: Codiert im UTF-16-Format mithilfe der Little-Endian-Bytereihenfolge.utf7
: Codiert im UTF-7-Format.utf8
: Codiert im UTF-8-Format.utf8BOM
: Codiert im UTF-8-Format mit Bytereihenfolgezeichen (BOM)utf8NoBOM
: Codiert im UTF-8-Format ohne Byte Order Mark (BOM)utf32
: Codiert im UTF-32-Format.
Ab PowerShell 6.2 ermöglicht der Encoding-Parameter auch numerische IDs registrierter Codeseiten (z -Encoding 1251
. B. ) oder Zeichenfolgennamen registrierter Codeseiten (z -Encoding "windows-1251"
. B. ). Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage.
Ab PowerShell 7.4 können Sie den Ansi
Wert für den Codierungsparameter verwenden, um die numerische ID für die ANSI-Codeseite der aktuellen Kultur zu übergeben, ohne sie manuell angeben zu müssen.
Hinweis
UTF-7* wird nicht mehr empfohlen, zu verwenden. Ab PowerShell 7.1 wird eine Warnung geschrieben, wenn Sie für den Codierungsparameter angebenutf7
.
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Überschreibt eine oder mehrere vorhandene Ausgabedateien, auch wenn die Datei das Schreibschutzattribut aufweist.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FormatTypeName
Exportiert Formatierungsanweisungen nur für die angegebenen Microsoft .NET Framework-Typen. Geben Sie die Typnamen ein. Exportiert standardmäßig Formatierungsanweisungen für alle .NET Framework-Typen, Export-PSSession
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. Wenn Sie alle Formatierungsdaten in der Remotesitzung abrufen möchten, geben Sie folgendes ein *
.
Wenn Sie den Parameter FormatTypeName verwenden, werden keine Befehle exportiert, es sei denn, Sie verwenden den CommandName-Parameter .
Wenn Sie den Parameter CommandName verwenden, werden die Formatierungsdateien für die Befehle nur exportiert, wenn Sie den Parameter FormatTypeName verwenden.
Type: | String[] |
Position: | 3 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 den PSModulePath nach dem angegebenen Modul.
Eine Modulspezifikation ist eine Hashtabelle mit den folgenden Schlüsseln.
ModuleName
- Erforderlich . Gibt den Modulnamen an.GUID
- Optional Gibt die GUID des Moduls an.- Es ist auch erforderlich , mindestens eine der drei folgenden Tasten anzugeben.
ModuleVersion
- Gibt eine mindestens akzeptable Version 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 einen Modulparameter angeben. die beiden Parameter schließen sich gegenseitig aus.
Type: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Module
Exportiert nur die Befehle in den angegebenen PowerShell-Snap-Ins und -Modulen. Geben Sie die Snap-In- und Modulnamen ein. Platzhalter sind nicht zulässig.
Weitere Informationen finden Sie unter Import-Module
und about_PSSnapins.
Type: | String[] |
Aliases: | PSSnapin |
Position: | Named |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutputModule
Gibt einen optionalen Pfad und Namen für das modul an, das von Export-PSSession
. Der Standardpfad lautet $HOME\Documents\WindowsPowerShell\Modules
. Dieser Parameter ist erforderlich.
Wenn das Modulunterverzeichnis oder eine der bereits erstellten Dateien Export-PSSession
vorhanden ist, schlägt der Befehl fehl. Verwenden Sie den Parameter Force , um vorhandene Dateien zu überschreiben.
Type: | String |
Aliases: | PSPath, ModuleName |
Position: | 1 |
Default value: | $HOME\Documents\WindowsPowerShell\Modules |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
Gibt die PSSession an, aus der die Befehle ausgeführt 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.
Type: | PSSession |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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
Export-PSSession
basiert auf der PowerShell-Remotinginfrastruktur. Um dieses Cmdlet zu verwenden, muss der Computer für Remoting konfiguriert werden. Weitere Informationen finden Sie unter about_Remote_Requirements.
Sie können keinen Export-PSSession
PowerShell-Anbieter exportieren.
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 genau so ausführen, wie Sie lokale Befehle ausführen würden.
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 gespeichert werden, enthalten keine Sitzungsoptionen, z. B. die, die Sie in der $PSSessionOption
Einstellungsvariable oder mithilfe des SessionOption-Parameters der New-PSSession
, Enter-PSSession
oder Invoke-Command
Cmdlets angeben. Wenn die ursprüngliche PSSession geschlossen ist, wenn Sie das Modul importieren, verwendet das Modul eine andere PSSession auf dem gleichen Computer, falls verfügbar. Damit die importierten Befehle in einer korrekt konfigurierten Sitzung ausgeführt werden können, erstellen Sie eine PSSession mit den gewünschten Optionen, bevor Sie das Modul importieren.
Um die zu exportierenden Befehle zu finden, Export-PSSession
verwendet das Invoke-Command
Cmdlet, um einen Get-Command
Befehl in der PSSession auszuführen. Um Formatierungsdaten für die Befehle abzurufen und zu speichern, werden die Get-FormatData
Befehle und Export-FormatData
Cmdlets verwendet. Möglicherweise werden Fehlermeldungen von Invoke-Command
, Get-Command
, , Get-FormatData
und Export-FormatData
wenn Sie einen Export-PSSession
Befehl ausführen. Befehle können auch nicht aus einer Sitzung exportiert werden, Export-PSSession
die nicht die Get-Command
Cmdlets , Get-FormatData
, Select-Object
und Get-Help
dies enthält.
Export-PSSession
verwendet das Write-Progress
Cmdlet, um den Fortschritt des Befehls anzuzeigen. Während der Befehlsausführung wird u. U. die Statusanzeige angezeigt.
Exportierte Befehle unterliegen denselben Einschränkungen wie andere Remotebefehle, z. B. die Unfähigkeit, ein Programm mit einer Benutzeroberfläche, wie z. B. Editor, zu starten.
Da PowerShell-Profile in PSSessions nicht ausgeführt werden, stehen die Befehle, die ein Profil zu einer Sitzung hinzufügt, nicht zur Verfügung Export-PSSession
. Um Befehle aus einem Profil zu exportieren, verwenden Sie einen Invoke-Command
Befehl, um das Profil in der PSSession manuell auszuführen, bevor Sie Befehle exportieren.
Das modul, das erstellt wird Export-PSSession
, kann eine Formatierungsdatei enthalten, auch wenn der Befehl keine Formatierungsdaten importiert. Wenn durch den Befehl keine Formatierungsdaten importiert werden, enthält keine der erstellten Formatierungsdateien Formatierungsdaten.