Delen via


Export-PSSession

Hiermee exporteert u opdrachten uit een andere sessie en slaat u ze 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 van een andere PowerShell-sessie (PSSession) op een lokale of externe computer en slaat deze op in een PowerShell-module. Gebruik de Import-Module cmdlet om de opdrachten uit de module toe te voegen aan de huidige sessie.

In tegenstelling tot Import-PSSession, waardoor opdrachten uit een andere PSSession in de huidige sessie worden geïmporteerd, Export-PSSession worden de opdrachten in een module opgeslagen. 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 de opdrachtnaam te voorkomen, is het standaard om Export-PSSession alle opdrachten te exporteren, met uitzondering van opdrachten die aanwezig zijn in de huidige sessie. U kunt de parameter CommandName gebruiken om de opdrachten op te geven die u wilt exporteren.

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 New-PSSession opdracht maakt u een PSSession op de Server01-computer. De PSSession wordt opgeslagen in de $S variabele. Met Export-PSSession de opdracht 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 exporteert u de Get en Set opdrachten 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 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

Met New-PSSession de opdracht maakt u een PSSession op de Server01-computer en slaat u deze op in de $S variabele. Met Export-PSSession de opdracht worden de cmdlets geëxporteerd 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 uit $S 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 Import-Module de 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 om meer te weten te komen 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 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, 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. 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 naar $S 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

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_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 (Certificaat:) wilt exporteren in de PSSession in $S, typt Export-PSSession -Session $S -Command Get-Item -ArgumentList cert:u .

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 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
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 alias, Name.

Standaard exporteert u alle opdrachten uit de PSSession, Export-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 de parameter FormatTypeName gebruikt, worden er ook 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. Het is het equivalent van Get-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 Path ($env:path).
  • Filter en Function: 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 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
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).
  • 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 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.

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 opgeeft utf7 voor de coderingsparameter .

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

Overschrijft 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 Microsoft .NET Framework-typen. Voer de typenamen in. Export-PSSession Standaard exporteert 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 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 : hiermee geeft u de modulenaam op.
  • GUID - Optioneel : hiermee geeft u de GUID van de module op.
  • Het is ook vereist om ten minste één van de drie onderstaande sleutels op te geven.
    • ModuleVersion - Hiermee geeft u een minimaal acceptabele versie van de module.
    • MaximumVersion - Hiermee geeft u de maximaal aanvaardbare versie van de module.
    • RequiredVersion - Hiermee geeft u een exacte, vereiste versie van de module. 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 wederzijds 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 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 al worden gemaakt, 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 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
Required:True
Accept pipeline input:False
Accept wildcard characters: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_Requirements voor meer informatie.

U kunt een PowerShell-provider niet Export-PSSession 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 legt informatie over de PSSession vast en slaat deze op 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 in de module worden vastgelegd en opgeslagen, 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.

Als u wilt zoeken naar de opdrachten die u wilt exporteren, Export-PSSession gebruikt u de Invoke-Command cmdlet om een Get-Command opdracht uit te voeren in de PSSession. Voor het ophalen en opslaan van opmaakgegevens voor de opdrachten worden de Get-FormatData en Export-FormatData cmdlets gebruikt. Mogelijk ziet u foutberichten vanInvoke-Command, Get-Commanden Get-FormatDataExport-FormatData wanneer u een Export-PSSession opdracht uitvoert. Export-PSSession U kunt ook geen opdrachten exporteren uit een sessie die de , Get-FormatDataen Select-ObjectGet-Help cmdlets niet bevatGet-Command.

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 wordt gemaakt, kan een opmaakbestand bevatten, zelfs als de opdracht geen opmaakgegevens importeert. Als de opdracht geen opmaakgegevens importeert, bevatten alle gemaakte opmaakbestanden geen opmaakgegevens.