Delen via


Export-PSSession

Hiermee exporteert u opdrachten uit een andere sessie en slaat u ze op in een PowerShell-module.

Syntaxis

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 van een andere PowerShell-sessie (PSSession) op een lokale of externe computer en slaat deze op in een PowerShell-module. Als u de opdrachten uit de module wilt toevoegen aan de huidige sessie, gebruikt u de cmdlet Import-Module.

In tegenstelling tot Import-PSSession, waarmee opdrachten uit een andere PSSession in de huidige sessie worden geïmporteerd, worden de opdrachten in een module opgeslagen Export-PSSession. De opdrachten worden niet geïmporteerd in de huidige sessie.

Als u opdrachten wilt exporteren, gebruikt u de cmdlet New-PSSession om een PSSession te maken met de opdrachten die u wilt exporteren. Gebruik vervolgens de cmdlet Export-PSSession om de opdrachten te exporteren.

Om conflicten met de opdrachtnaam 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 impliciete externe functie 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 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 opdracht New-PSSession maakt u een PSSession op de Server01-computer. De PSSession wordt opgeslagen in de $S variabele. Met de opdracht Export-PSSession worden de opdrachten en opmaakgegevens van de $S variabele geëxporteerd naar de Server01-module.

Voorbeeld 2: de opdrachten Ophalen en instellen exporteren

In dit voorbeeld worden alle Get en Set opdrachten van een server geëxporteerd.

$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 opdrachten Get en Set vanuit een Microsoft Exchange Server-module op een externe computer geëxporteerd naar een Exchange-module in de $PSHOME\Modules map op de lokale computer. Als u de module in de map $PSHOME\Modules plaatst, is deze toegankelijk voor alle gebruikers van de computer.

Voorbeeld 3: Opdrachten exporteren vanaf een externe computer

In dit voorbeeld worden cmdlets uit 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

De opdracht New-PSSession maakt een PSSession op de Server01-computer en slaat deze op in de variabele $S. De opdracht Export-PSSession exporteert de cmdlets waarvan de namen beginnen met Testen vanuit 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. Met deze opdracht ziet u dat de PSSession niet actief hoeft te zijn om de opdrachten te gebruiken die zijn geïmporteerd uit de sessie. Met de Import-Module-cmdlet worden de cmdlets in de module TestCmdlets toegevoegd 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 namen beginnen met Testen. Nadat de opdrachten in een module zijn toegevoegd aan de huidige sessie, kunt u de Get-Help en Get-Command cmdlets 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 voor exporteren en klonen in de huidige sessie

In dit voorbeeld worden opdrachten geëxporteerd die zijn opgeslagen in een variabele in de huidige sessie.

Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands

Met deze Export-PSSession opdracht worden alle opdrachten en alle opmaakgegevens uit de PSSession in de $S variabele naar de huidige sessie geëxporteerd. 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, wordt 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 op de oorspronkelijke computer is, wordt er een sessie hersteld.

Als u geëxporteerde opdrachten met speciale opties in een externe sessie wilt uitvoeren, moet u een externe sessie met deze opties maken voordat u de module importeert. Gebruik de cmdlet New-PSSession 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 cmdlet New-PSSessionOption maakt een PSSessionOption--object en slaat het object op in de $Options variabele. Met de opdracht New-PSSession 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 cmdlet Remove-PSSession 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

Hiermee exporteert u 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, verbergt of vervangt de geëxporteerde opdracht de oorspronkelijke opdrachten. Zie about_Command_Precedencevoor meer informatie.

Type:SwitchParameter
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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 opdracht Get-Item in het certificaatstation (Certificaat:) in de PSSession in $Swilt exporteren, typt u Export-PSSession -Session $S -Command Get-Item -ArgumentList cert:.

Type:Object[]
Aliassen:Args
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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 maakt. Voer een variabele in die een certificaat of een opdracht of expressie bevat die het certificaat ophaalt.

Als u een certificaat wilt vinden, gebruikt u de Get-PfxCertificate-cmdlet of gebruikt u de Get-ChildItem-cmdlet in het certificaatstation (certificaat:). Als het certificaat niet geldig is of onvoldoende autoriteit heeft, mislukt de opdracht.

Type:X509Certificate2
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-CommandName

Hiermee exporteert u alleen de opdrachten met de opgegeven namen of naampatronen. Jokertekens zijn toegestaan. Gebruik CommandName of de alias Name.

Standaard exporteert Export-PSSession alle opdrachten uit de PSSession, met uitzondering van opdrachten met dezelfde namen als opdrachten in de huidige sessie. Hiermee voorkomt u 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 ook de parameter FormatTypeName gebruikt, worden er geen opdrachten geëxporteerd, tenzij u de parameter CommandName gebruikt.

Type:String[]
Aliassen:Name
Position:2
Default value:All commands in the session.
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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. Het is het equivalent van Get-Command -Name *.
  • Application: alle andere bestanden dan PowerShell-bestanden in paden die worden vermeld in de omgevingsvariabele Path ($env:path), inclusief .txt, .exeen .dll bestanden.
  • Cmdlet: de cmdlets in de huidige sessie. Cmdlet is de standaardinstelling.
  • Configuration: een PowerShell-configuratie. Zie about_Session_Configurationsvoor meer informatie.
  • ExternalScript: alle .ps1 bestanden in de paden die worden vermeld in de omgevingsvariabele Path ($env:path).
  • Filter en Function: alle PowerShell-functies.
  • Script scriptblokken in de huidige sessie.
  • Workflow een PowerShell-werkstroom. Zie about_Workflowsvoor meer informatie.

Deze waarden worden gedefinieerd als een opsomming op basis van vlaggen. 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 met waarden of als een door komma's gescheiden tekenreeks van deze waarden. De cmdlet combineert de waarden met behulp van een binaire OF-bewerking. Het doorgeven van waarden als een matrix is de eenvoudigste optie en u kunt ook tabvoltooiing gebruiken voor de waarden.

Type:CommandTypes
Aliassen:Type
Geaccepteerde waarden:Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow
Position:Named
Default value:All commands in the session.
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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: maakt gebruik van de codering voor de ASCII-tekenset (7-bits).
  • ansi: gebruikt de codering voor de ANSI-codepagina van de huidige cultuur. Deze optie is toegevoegd in PowerShell 7.4.
  • 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: maakt gebruik van de standaardcodering voor MS-DOS- en consoleprogramma's.
  • unicode: Codeert in UTF-16-indeling met 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 parameter Coderings- 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.CodePagevoor meer informatie.

Vanaf PowerShell 7.4 kunt u de Ansi waarde voor de -coderingsparameter gebruiken om de numerieke id voor de ANSI-codepagina van de huidige cultuur door te geven zonder deze handmatig op te geven.

Notitie

UTF-7* wordt niet meer aanbevolen om te gebruiken. Vanaf PowerShell 7.1 wordt een waarschuwing geschreven als u utf7 opgeeft voor de parameter codering.

Type:Encoding
Geaccepteerde waarden:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Force

Overschrijft een of meer bestaande uitvoerbestanden, zelfs als het bestand het kenmerk Alleen-lezen heeft.

Type:SwitchParameter
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-FormatTypeName

Hiermee exporteert u alleen opmaakinstructies voor de opgegeven Microsoft .NET Framework-typen. Voer de typenamen in. Standaard exporteert Export-PSSession opmaakinstructies voor alle .NET Framework-typen die zich niet in de System.Management.Automation- naamruimte 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
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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 of relatief zijn. Een relatief pad wordt omgezet ten opzichte van het script dat de using-instructie bevat.

Wanneer de waarde een naam of modulespecificatie is, zoekt PowerShell naar de PSModulePath- voor de opgegeven module.

Een modulespecificatie is een hashtabel met de volgende sleutels.

  • ModuleName - Vereist Geeft de modulenaam op.
  • GUID - Optionele Geeft de GUID van de module aan.
  • Het is ook Vereist om ten minste een van de drie onderstaande sleutels op te geven.
    • ModuleVersion - Hiermee geeft u een minimaal acceptabele versie van de module op.
    • MaximumVersion - Hiermee geeft u de maximaal acceptabele versie van de module.
    • 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 parameter Module. de twee parameters sluiten elkaar wederzijds uit.

Type:ModuleSpecification[]
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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 Import-Module en about_PSSnapinsvoor meer informatie.

Type:String[]
Aliassen:PSSnapin
Position:Named
Default value:All commands in the session.
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-OutputModule

Hiermee geeft u een optioneel pad en een naam op voor de module die door Export-PSSessionis gemaakt. 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 maakt, al bestaat, mislukt de opdracht. Als u bestaande bestanden wilt overschrijven, gebruikt u de parameter Force.

Type:String
Aliassen:PSPath, ModuleName
Position:1
Default value:$HOME\Documents\WindowsPowerShell\Modules
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Session

Hiermee geeft u de PSSession waaruit de opdrachten worden geëxporteerd. Voer een variabele in die een sessieobject of een opdracht bevat waarmee een sessieobject wordt opgehaald, zoals een Get-PSSession opdracht. Deze parameter is vereist.

Type:PSSession
Position:0
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

Invoerwaarden

None

U kunt geen objecten doorsluisen naar deze cmdlet.

Uitvoerwaarden

FileInfo

Deze cmdlet retourneert een lijst met bestanden die deel uitmaken van de module die deze heeft gemaakt.

Notities

Export-PSSession is afhankelijk van de externe infrastructuur van PowerShell. Als u deze cmdlet wilt gebruiken, moet de computer worden geconfigureerd voor externe communicatie. Zie about_Remote_Requirementsvoor meer informatie.

U kunt Export-PSSession niet gebruiken om een PowerShell-provider te exporteren.

Geëxporteerde opdrachten worden impliciet uitgevoerd in de PSSession 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 uitvoeren, net zoals u lokale opdrachten zou uitvoeren.

Export-ModuleMember informatie over de PSSession vastlegt en opslaat in de module die wordt geëxporteerd. Als de PSSession van waaruit de opdrachten zijn geëxporteerd, wordt gesloten wanneer u de module importeert en er geen actieve PSSessions zijn op dezelfde computer, proberen de opdrachten in de module 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 vastleggen en opslaan in de module bevatten geen sessieopties, zoals de sessieopties die u opgeeft in de $PSSessionOption voorkeursvariabele of met behulp van de parameter SessionOption van de New-PSSession, Enter-PSSessionof Invoke-Command cmdlets. 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 in een correct geconfigureerde sessie kunnen worden uitgevoerd, maakt u een PSSession met de gewenste opties voordat u de module importeert.

Voor het vinden van de opdrachten die u wilt exporteren, gebruikt Export-PSSession de Invoke-Command cmdlet om een Get-Command opdracht uit te voeren in de PSSession. Als u opmaakgegevens voor de opdrachten wilt ophalen en opslaan, worden de cmdlets Get-FormatData en Export-FormatData gebruikt. Mogelijk ziet u foutberichten van Invoke-Command, Get-Command, Get-FormatDataen Export-FormatData wanneer u een Export-PSSession opdracht uitvoert. Bovendien kunnen Export-PSSession geen opdrachten exporteren uit een sessie die niet de Get-Command, Get-FormatData, Select-Objecten Get-Help cmdlets 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 handmatig uit te voeren in de PSSession voordat u opdrachten exporteert.

De module die Export-PSSession maakt, kan een opmaakbestand bevatten, zelfs als de opdracht geen opmaakgegevens importeert. Als de opdracht geen opmaakgegevens importeert, bevatten alle gemaakte opmaakbestanden geen opmaakgegevens.