Delen via


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 $Swilt 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 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 Pad ($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 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

Hiermee geeft u modules op met namen die zijn opgegeven in de vorm van ModuleSpecification-objecten . Zie de sectie Opmerkingen van ModuleSpecification Constructor (Hashtable).

De parameter FullyQualifiedModule accepteert bijvoorbeeld een modulenaam die is opgegeven in een van deze indelingen:

  • @{ModuleName = "modulename"; ModuleVersion = "version_number"}
  • @{ModuleName = "modulename"; ModuleVersion = "version_number"; Guid = "GUID"}

ModuleName en ModuleVersion zijn vereist, maar GUID is optioneel. 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 Export-PSSession.

Uitvoerwaarden

FileInfo

Export-PSSession retourneert een lijst met bestanden waaruit de module bestaat 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-PSSessioncmdlets , Enter-PSSessionof 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-FormatDataen Export-FormatData wanneer u een Export-PSSession opdracht uitvoert. Export-PSSession Kan ook geen opdrachten exporteren vanuit een sessie die de Get-Commandcmdlets , Get-FormatData, Select-Objecten 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.