Export-PSSession
Hiermee exporteert u opdrachten uit een andere sessie en slaat u deze op in een PowerShell-module.
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>]
Description
De Export-PSSession
cmdlet haalt cmdlets, functies, aliassen en andere opdrachttypen op uit een andere PowerShell-sessie (PSSession) op een lokale of externe computer en slaat deze op in een PowerShell-module. Gebruik de cmdlet om de opdrachten van de module toe te voegen aan de Import-Module
huidige sessie.
In tegenstelling tot Import-PSSession
, waarmee opdrachten uit een andere PSSession in de huidige sessie worden geïmporteerd, Export-PSSession
worden de opdrachten opgeslagen in een module. De opdrachten worden niet geïmporteerd in de huidige sessie.
Als u opdrachten wilt exporteren, gebruikt u de New-PSSession
cmdlet om een PSSession te maken met de opdrachten die u wilt exporteren. Gebruik vervolgens de Export-PSSession
cmdlet om de opdrachten te exporteren.
Om conflicten met opdrachtnamen te voorkomen, is de standaardinstelling voor Export-PSSession
het exporteren van alle opdrachten, met uitzondering van opdrachten die aanwezig zijn in de huidige sessie. U kunt de parameter CommandName gebruiken om de opdrachten op te geven die moeten worden geëxporteerd.
De Export-PSSession
cmdlet maakt gebruik van de functie voor impliciete externe communicatie van PowerShell. Wanneer u opdrachten in de huidige sessie importeert, worden ze impliciet uitgevoerd in de oorspronkelijke sessie of in een vergelijkbare sessie op de oorspronkelijke computer.
Voorbeelden
Voorbeeld 1: Opdrachten exporteren vanuit een PSSession
In dit voorbeeld wordt een nieuwe PSSession gemaakt van de lokale computer naar de Server01-computer. Alle opdrachten, met uitzondering van de opdrachten die aanwezig zijn in de huidige sessie, worden geëxporteerd naar de module server01 op de lokale computer. De export bevat de opmaakgegevens voor de opdrachten.
$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01
Met de New-PSSession
opdracht maakt u een PSSession op de Server01-computer. De PSSession wordt opgeslagen in de $S
variabele. De Export-PSSession
opdracht exporteert de opdrachten en opmaakgegevens van de $S
variabele naar de server01-module.
Voorbeeld 2: de opdrachten Ophalen en Instellen exporteren
In dit voorbeeld worden alle Get
opdrachten en Set
geëxporteerd van een server.
$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
Met deze opdrachten worden de Get
opdrachten en Set
geëxporteerd van een Microsoft Exchange Server-module op een externe computer naar een Exchange-module in de $PSHOME\Modules
map op de lokale computer.
Als u de module in de $PSHOME\Modules
map plaatst, is deze toegankelijk voor alle gebruikers van de computer.
Voorbeeld 3: Opdrachten exporteren vanaf een externe computer
In dit voorbeeld worden cmdlets van een PSSession op een externe computer geëxporteerd en opgeslagen in een module op de lokale computer. De cmdlets uit de module worden toegevoegd aan de huidige sessie, zodat ze kunnen worden gebruikt.
$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
Met de New-PSSession
opdracht maakt u een PSSession op de Server01-computer en slaat u deze op in de $S
variabele. De Export-PSSession
opdracht exporteert de cmdlets waarvan de naam begint met Test van de PSSession in $S
naar de module TestCmdlets op de lokale computer.
De Remove-PSSession
cmdlet verwijdert de PSSession in $S
uit de huidige sessie. Deze opdracht geeft aan dat de PSSession niet actief hoeft te zijn om de opdrachten te gebruiken die zijn geïmporteerd uit de sessie. De Import-Module
cmdlet voegt de cmdlets in de module TestCmdlets toe aan de huidige sessie. De opdracht kan op elk gewenst moment in elke sessie worden uitgevoerd.
De Get-Help
cmdlet krijgt hulp voor cmdlets waarvan de naam begint met Testen. Nadat de opdrachten in een module zijn toegevoegd aan de huidige sessie, kunt u de Get-Help
cmdlets en Get-Command
gebruiken voor meer informatie over de geïmporteerde opdrachten. De Test-Files
cmdlet is geëxporteerd van de Server01-computer en toegevoegd aan de sessie. De Test-Files
cmdlet wordt uitgevoerd in een externe sessie op de computer van waaruit de opdracht is geïmporteerd. PowerShell maakt een sessie op basis van informatie die is opgeslagen in de module TestCmdlets.
Voorbeeld 4: opdrachten exporteren en clobberen in de huidige sessie
In dit voorbeeld worden opdrachten die zijn opgeslagen in een variabele, geëxporteerd naar de huidige sessie.
Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands
Met deze Export-PSSession
opdracht worden alle opdrachten en opmaakgegevens van de PSSession in de $S
variabele geëxporteerd naar de huidige sessie. De parameter AllowClobber bevat opdrachten met dezelfde namen als opdrachten in de huidige sessie.
Voorbeeld 5: Opdrachten exporteren vanuit een gesloten PSSession
In dit voorbeeld ziet u hoe u de geëxporteerde opdrachten met speciale opties uitvoert wanneer de PSSession waarmee de geëxporteerde opdrachten zijn gemaakt, is gesloten.
Als de oorspronkelijke externe sessie wordt gesloten wanneer een module wordt geïmporteerd, gebruikt de module elke geopende externe sessie die verbinding maakt met de oorspronkelijke computer. Als er geen huidige sessie met de oorspronkelijke computer is, wordt er opnieuw een sessie tot stand gebracht.
Als u geëxporteerde opdrachten met speciale opties wilt uitvoeren in een externe sessie, moet u een externe sessie met deze opties maken voordat u de module importeert. New-PSSession
De cmdlet gebruiken met de 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
De New-PSSessionOption
cmdlet maakt een PSSessionOption-object en slaat het object op in de $Options
variabele. Met de New-PSSession
opdracht maakt u een PSSession op de Server01-computer.
De parameter SessionOption maakt gebruik van het object dat is opgeslagen in $Options
. De sessie wordt opgeslagen in de $S
variabele.
De Export-PSSession
cmdlet exporteert opdrachten van de PSSession in $S
naar de Server01-module.
De Remove-PSSession
cmdlet verwijdert de PSSession in de $S
variabele.
De New-PSSession
cmdlet maakt een nieuwe PSSession die verbinding maakt met de Server01-computer. De parameter SessionOption maakt gebruik van het object dat is opgeslagen in $Options
. De Import-Module
cmdlet importeert de opdrachten uit de server01-module. De opdrachten in de module worden uitgevoerd in de PSSession op de Server01-computer.
Parameters
-AllowClobber
Exporteert de opgegeven opdrachten, zelfs als ze dezelfde namen hebben als opdrachten in de huidige sessie.
Als u een opdracht exporteert met dezelfde naam als een opdracht in de huidige sessie, worden de oorspronkelijke opdrachten verborgen of vervangen door de geëxporteerde opdracht. Zie about_Command_Precedence voor meer informatie.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ArgumentList
Hiermee exporteert u de variant van de opdracht die het resultaat is van het gebruik van de opgegeven argumenten (parameterwaarden).
Als u bijvoorbeeld de variant van de Get-Item
opdracht in het certificaatstation (Cert:) in de PSSession in $S
wilt exporteren, typt u 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
Hiermee geeft u het clientcertificaat op dat wordt gebruikt voor het ondertekenen van de indelingsbestanden (*. Format.ps1xml) of scriptmodulebestanden (.psm1) in de module die Export-PSSession
wordt gemaakt. Voer een variabele in die een certificaat bevat of een opdracht of expressie waarmee het certificaat wordt ophaalt.
Als u een certificaat wilt zoeken, gebruikt u de Get-PfxCertificate
cmdlet of gebruikt u de Get-ChildItem
cmdlet in het certificaatstation (Cert:). Als het certificaat niet geldig is of onvoldoende autoriteit heeft, mislukt de opdracht.
Type: | X509Certificate2 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CommandName
Hiermee exporteert u alleen de opdrachten met de opgegeven namen of naampatronen. Jokertekens zijn toegestaan. Gebruik CommandName of de bijbehorende alias Name.
Standaard exporteert u alle opdrachten uit de PSSession, Export-PSSession
met uitzondering van opdrachten die dezelfde namen hebben als opdrachten in de huidige sessie. Dit voorkomt dat opdrachten worden verborgen of vervangen door opdrachten in de huidige sessie. Als u alle opdrachten wilt exporteren, zelfs opdrachten die andere opdrachten verbergen of vervangen, gebruikt u de parameter AllowClobber .
Als u de parameter CommandName gebruikt, worden de opmaakbestanden voor de opdrachten niet geëxporteerd, tenzij u de parameter FormatTypeName gebruikt. Als u de parameter FormatTypeName gebruikt, worden er geen opdrachten geëxporteerd, tenzij u de parameter CommandName gebruikt.
Type: | String[] |
Aliases: | Name |
Position: | 2 |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-CommandType
Hiermee exporteert u alleen de opgegeven typen opdrachtobjecten. Gebruik CommandType of de alias Type.
De acceptabele waarden voor deze parameter zijn als volgt:
Alias
: Alle PowerShell-aliassen in de huidige sessie.All
: Alle opdrachttypen. Dit is het equivalent vanGet-Command -Name *
.Application
: Alle andere bestanden dan PowerShell-bestanden in paden die worden vermeld in de omgevingsvariabele Pad ($env:path
), inclusief .txt-, .exe- en .dll-bestanden.Cmdlet
: de cmdlets in de huidige sessie. Cmdlet is de standaardinstelling.Configuration
: Een PowerShell-configuratie. Zie about_Session_Configurations voor meer informatie.ExternalScript
: alle .ps1-bestanden in de paden die worden vermeld in de omgevingsvariabele Pad ($env:path
).Filter
enFunction
: alle PowerShell-functies.Script
Scriptblokken in de huidige sessie.Workflow
Een PowerShell-werkstroom. Zie about_Workflows voor meer informatie.
Deze waarden worden gedefinieerd als een opsomming op basis van een vlag. U kunt meerdere waarden combineren om meerdere vlaggen in te stellen met behulp van deze parameter. De waarden kunnen worden doorgegeven aan de parameter CommandType als een matrix van waarden of als een door komma's gescheiden tekenreeks van deze waarden. De cmdlet combineert de waarden met behulp van een binaire-OR-bewerking. Het doorgeven van waarden als een matrix is de eenvoudigste optie en stelt u ook in staat om tab-voltooiing te gebruiken voor de waarden.
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
Hiermee geeft u het type codering voor het doelbestand. De standaardwaarde is utf8NoBOM
.
De acceptabele waarden voor deze parameter zijn als volgt:
ascii
: Gebruikt de codering voor de ASCII-tekenset (7-bits).bigendianunicode
: Codeert in UTF-16-indeling met behulp van de bytevolgorde big-endian.bigendianutf32
: Codeert in UTF-32-indeling met behulp van de bytevolgorde big-endian.oem
: Gebruikt de standaardcodering voor MS-DOS en consoleprogramma's.unicode
: Codeert in UTF-16-indeling met behulp van de bytevolgorde little-endian.utf7
: Codeert in UTF-7-indeling.utf8
: Codeert in UTF-8-indeling.utf8BOM
: Codeert in UTF-8-indeling met Byte Order Mark (BOM)utf8NoBOM
: Codeert in UTF-8-indeling zonder Byte Order Mark (BOM)utf32
: Codeert in UTF-32-indeling.
Vanaf PowerShell 6.2 staat de coderingsparameter ook numerieke id's toe van geregistreerde codepagina's (zoals -Encoding 1251
) of tekenreeksnamen van geregistreerde codepagina's (zoals -Encoding "windows-1251"
). Zie de .NET-documentatie voor Encoding.CodePage voor meer informatie.
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
Hiermee overschrijft u een of meer bestaande uitvoerbestanden, zelfs als het bestand het kenmerk Alleen-lezen heeft.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FormatTypeName
Hiermee exporteert u alleen opmaakinstructies voor de opgegeven typen Microsoft .NET Framework. Voer de typenamen in. Standaard exporteert Export-PSSession
u opmaakinstructies voor alle .NET Framework typen die zich niet in de naamruimte System.Management.Automation bevinden.
De waarde van deze parameter moet de naam zijn van een type dat wordt geretourneerd door een Get-FormatData
opdracht in de sessie waaruit de opdrachten worden geïmporteerd. Als u alle opmaakgegevens in de externe sessie wilt ophalen, typt *
u .
Als u de parameter FormatTypeName gebruikt, worden er geen opdrachten geëxporteerd, tenzij u de parameter CommandName gebruikt.
Als u de parameter CommandName gebruikt, worden de opmaakbestanden voor de opdrachten niet geëxporteerd, tenzij u de parameter FormatTypeName gebruikt.
Type: | String[] |
Position: | 3 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FullyQualifiedModule
De waarde kan een modulenaam, een volledige modulespecificatie of een pad naar een modulebestand zijn.
Wanneer de waarde een pad is, kan het pad volledig gekwalificeerd of relatief zijn. Een relatief pad wordt opgelost ten opzichte van het script dat de using-instructie bevat.
Wanneer de waarde een naam of modulespecificatie is, zoekt PowerShell in het PSModulePath naar de opgegeven module.
Een modulespecificatie is een hashtabel met de volgende sleutels.
ModuleName
- Vereist Hiermee geeft u de modulenaam op.GUID
- Optionele Hiermee geeft u de GUID van de module.- Het is ook vereist om ten minste een van de drie onderstaande sleutels op te geven.
ModuleVersion
- Hiermee geeft u een minimaal aanvaardbare versie van de module op.MaximumVersion
- Hiermee geeft u de maximaal aanvaardbare versie van de module op.RequiredVersion
- Hiermee geeft u een exacte, vereiste versie van de module op. Dit kan niet worden gebruikt met de andere versiesleutels.
U kunt de parameter FullyQualifiedModule niet opgeven in dezelfde opdracht als een moduleparameter . de twee parameters sluiten elkaar uit.
Type: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Module
Hiermee exporteert u alleen de opdrachten in de opgegeven PowerShell-modules en -modules. Voer de module- en modulenamen in. Jokertekens zijn niet toegestaan.
Zie en about_PSSnapins voor meer informatieImport-Module
.
Type: | String[] |
Aliases: | PSSnapin |
Position: | Named |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutputModule
Hiermee geeft u een optioneel pad en een naam op voor de module die is gemaakt door Export-PSSession
. Het standaardpad is $HOME\Documents\WindowsPowerShell\Modules
. Deze parameter is vereist.
Als de submap van de module of een van de bestanden die Export-PSSession
worden gemaakt al bestaat, mislukt de opdracht. Als u bestaande bestanden wilt overschrijven, gebruikt u de parameter Force .
Type: | String |
Aliases: | PSPath, ModuleName |
Position: | 1 |
Default value: | $HOME\Documents\WindowsPowerShell\Modules |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
Hiermee geeft u de PSSession waaruit de opdrachten worden geëxporteerd. Voer een variabele in die een sessieobject bevat of een opdracht waarmee een sessieobject wordt opgehaald, zoals een Get-PSSession
opdracht. Deze parameter is vereist.
Type: | PSSession |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Invoerwaarden
None
U kunt geen objecten doorsnijden naar deze cmdlet.
Uitvoerwaarden
Deze cmdlet retourneert een lijst met bestanden die de module vormen die is gemaakt.
Notities
Export-PSSession
is afhankelijk van de externe infrastructuur van PowerShell. Als u deze cmdlet wilt gebruiken, moet de computer zijn geconfigureerd voor externe communicatie. Zie about_Remote_Requirements voor meer informatie.
U kunt niet gebruiken Export-PSSession
om een PowerShell-provider te exporteren.
Geëxporteerde opdrachten worden impliciet uitgevoerd in de PSSession van waaruit ze zijn geëxporteerd. De details van het extern uitvoeren van de opdrachten worden volledig verwerkt door PowerShell. U kunt de geëxporteerde opdrachten net zo uitvoeren als lokale opdrachten.
Export-ModuleMember
legt informatie over de PSSession vast en slaat deze op in de module die wordt geëxporteerd. Als de PSSession waarvan de opdrachten zijn geëxporteerd, wordt gesloten wanneer u de module importeert en er geen actieve PSSessions op dezelfde computer zijn, wordt met de opdrachten in de module geprobeerd de PSSession opnieuw te maken. Als pogingen om de PSSession opnieuw te maken mislukken, worden de geëxporteerde opdrachten niet uitgevoerd.
De sessiegegevens die Export-ModuleMember
in de module worden vastgelegd en opgeslagen, bevatten geen sessieopties, zoals de opties die u opgeeft in de $PSSessionOption
voorkeursvariabele of met behulp van de parameter SessionOption van de New-PSSession
cmdlets , Enter-PSSession
of Invoke-Command
. Als de oorspronkelijke PSSession wordt gesloten wanneer u de module importeert, gebruikt de module een andere PSSession op dezelfde computer, indien beschikbaar. Als u wilt dat de geïmporteerde opdrachten worden uitgevoerd in een correct geconfigureerde sessie, maakt u een PSSession met de gewenste opties voordat u de module importeert.
Als u de opdrachten wilt vinden die u wilt exporteren, Export-PSSession
gebruikt u de Invoke-Command
cmdlet om een Get-Command
opdracht uit te voeren in de PSSession. Om opmaakgegevens voor de opdrachten op te halen en op te slaan, worden de Get-FormatData
cmdlets en Export-FormatData
gebruikt. U ziet mogelijk foutberichten van Invoke-Command
, Get-Command
, Get-FormatData
en Export-FormatData
wanneer u een Export-PSSession
opdracht uitvoert. Export-PSSession
Kan ook geen opdrachten exporteren vanuit een sessie die de Get-Command
cmdlets , Get-FormatData
, Select-Object
en Get-Help
niet bevat.
Export-PSSession
gebruikt de Write-Progress
cmdlet om de voortgang van de opdracht weer te geven. Mogelijk ziet u de voortgangsbalk terwijl de opdracht wordt uitgevoerd.
Geëxporteerde opdrachten hebben dezelfde beperkingen als andere externe opdrachten, waaronder het niet kunnen starten van een programma met een gebruikersinterface, zoals Kladblok.
Omdat PowerShell-profielen niet worden uitgevoerd in PSSessions, zijn de opdrachten die een profiel toevoegt aan een sessie niet beschikbaar voor Export-PSSession
. Als u opdrachten uit een profiel wilt exporteren, gebruikt u een Invoke-Command
opdracht om het profiel in de PSSession handmatig uit te voeren voordat u opdrachten exporteert.
De module die Export-PSSession
wordt gemaakt, bevat mogelijk een opmaakbestand, zelfs als de opdracht geen opmaakgegevens importeert. Als de opdracht geen opmaakgegevens importeert, bevatten de opmaakbestanden die worden gemaakt geen opmaakgegevens.