Dela via


Export-PSSession

Exporterar kommandon från en annan session och sparar dem i en 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>]

Description

Cmdleten Export-PSSession hämtar cmdletar, funktioner, alias och andra kommandotyper från en annan PowerShell-session (PSSession) på en lokal dator eller fjärrdator och sparar dem i en PowerShell-modul. Om du vill lägga till kommandona från modulen i den aktuella sessionen använder du cmdleten Import-Module.

Till skillnad från Import-PSSession, som importerar kommandon från en annan PSSession till den aktuella sessionen, sparar Export-PSSession kommandona i en modul. Kommandona importeras inte till den aktuella sessionen.

Om du vill exportera kommandon använder du cmdleten New-PSSession för att skapa en PSSession som har de kommandon som du vill exportera. Använd sedan cmdleten Export-PSSession för att exportera kommandona.

För att förhindra konflikter med kommandonamn är standardvärdet för Export-PSSession att exportera alla kommandon, förutom kommandon som finns i den aktuella sessionen. Du kan använda parametern CommandName för att ange vilka kommandon som ska exporteras.

Cmdleten Export-PSSession använder den implicita fjärrkommunikationsfunktionen i PowerShell. När du importerar kommandon till den aktuella sessionen körs de implicit i den ursprungliga sessionen eller i en liknande session på den ursprungliga datorn.

Exempel

Exempel 1: Exportera kommandon från en PSSession

Det här exemplet skapar en ny PSSession från den lokala datorn till Server01-datorn. Alla kommandon, förutom de som finns i den aktuella sessionen, exporteras till modulen Med namnet Server01 på den lokala datorn. Exporten innehåller formateringsdata för kommandona.

$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01

Kommandot New-PSSession skapar en PSSession på Server01-datorn. PSSession lagras i variabeln $S. Kommandot Export-PSSession exporterar $S-variabelns kommandon och formateringsdata till Server01-modulen.

Exempel 2: Exportera kommandona Hämta och Ange

I det här exemplet exporteras alla kommandon för Get och Set från en server.

$newSession = @{
    ConnectionUri = 'https://exchange.microsoft.com/mailbox'
    Credential = 'exchangeadmin01@hotmail.com'
    Authentication = 'Negotiate'
}
$S = New-PSSession @newSession

$exportSession = @{
    Session = $S
    Module = 'exch*'
    CommandName = 'Get-*', 'Set-*'
    FormatTypeName = '*'
    OutputModule = "$PSHOME\Modules\Exchange"
    Encoding = 'ASCII'
}

Export-PSSession @exportSession

Dessa kommandon exporterar kommandona Get och Set från snapin-modulen Microsoft Exchange Server på en fjärrdator till en Exchange-modul i katalogen $PSHOME\Modules på den lokala datorn. Om du placerar modulen i katalogen $PSHOME\Modules blir den tillgänglig för alla användare av datorn.

Exempel 3: Exportera kommandon från en fjärrdator

Det här exemplet exporterar cmdletar från en PSSession på en fjärrdator och sparar dem i en modul på den lokala datorn. Cmdletarna från modulen läggs till i den aktuella sessionen så att de kan användas.

$newSession = @{
    ComputerName = 'Server01'
    Credential = 'Server01\User01'
}
$S = New-PSSession @newSession

$exportSession = @{
    Session = $S
    OutputModule = 'TestCmdlets'
    Type = 'Cmdlet'
    CommandName = '*test*'
    FormatTypeName = '*'
}
Export-PSSession @exportSession

Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files

Kommandot New-PSSession skapar en PSSession på Server01-datorn och sparar den i variabeln $S. Kommandot Export-PSSession exporterar de cmdletar vars namn börjar med Test från PSSession i $S till modulen TestCmdlets på den lokala datorn.

Cmdleten Remove-PSSession tar bort PSSession i $S från den aktuella sessionen. Det här kommandot visar att PSSession inte behöver vara aktiv för att använda de kommandon som importerades från sessionen. Cmdleten Import-Module lägger till cmdletarna i modulen TestCmdlets i den aktuella sessionen. Kommandot kan köras i valfri session när som helst.

Cmdleten Get-Help får hjälp för cmdletar vars namn börjar med Test. När kommandona i en modul har lagts till i den aktuella sessionen kan du använda cmdletarna Get-Help och Get-Command för att lära dig mer om de importerade kommandona. Cmdleten Test-Files exporterades från Server01-datorn och lades till i sessionen. Cmdleten Test-Files körs i en fjärrsession på den dator som kommandot importerades från. PowerShell skapar en session med information som lagras i modulen TestCmdlets.

Exempel 4: Exportera och klona kommandon i den aktuella sessionen

I det här exemplet exporteras kommandon som lagras i en variabel till den aktuella sessionen.

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

Det här Export-PSSession kommandot exporterar alla kommandon och alla formateringsdata från PSSession i variabeln $S till den aktuella sessionen. Parametern AllowClobber innehåller kommandon med samma namn som kommandon i den aktuella sessionen.

Exempel 5: Exportera kommandon från en stängd PSSession

Det här exemplet visar hur du kör de exporterade kommandona med särskilda alternativ när PSSession som skapade de exporterade kommandona stängs.

Om den ursprungliga fjärrsessionen stängs när en modul importeras använder modulen alla öppna fjärrsessioner som ansluter till den ursprungliga datorn. Om det inte finns någon aktuell session på den ursprungliga datorn, kommer modulen att återupprätta en session.

Om du vill köra exporterade kommandon med särskilda alternativ i en fjärrsession måste du skapa en fjärrsession med dessa alternativ innan du importerar modulen. Använd cmdleten New-PSSession med parametern 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

Cmdleten New-PSSessionOption skapar ett PSSessionOption- objekt och sparar objektet i variabeln $Options. Kommandot New-PSSession skapar en PSSession på Server01-datorn. Parametern SessionOption använder objektet som lagras i $Options. Sessionen lagras i variabeln $S.

Cmdleten Export-PSSession exporterar kommandon från PSSession i $S till Server01-modulen. Cmdleten Remove-PSSession tar bort PSSession i variabeln $S.

Cmdleten New-PSSession skapar en ny PSSession som ansluter till Server01-datorn. Parametern SessionOption använder objektet som lagras i $Options. Cmdleten Import-Module importerar kommandona från Server01-modulen. Kommandona i modulen körs i PSSession på Server01-datorn.

Parametrar

-AllowClobber

Exporterar de angivna kommandona, även om de har samma namn som kommandon i den aktuella sessionen.

Om du exporterar ett kommando med samma namn som ett kommando i den aktuella sessionen döljer eller ersätter det exporterade kommandot de ursprungliga kommandona. Mer information finns i about_Command_Precedence.

Typ:SwitchParameter
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-ArgumentList

Exporterar varianten av kommandot som resulterar från att använda de angivna argumenten (parametervärden).

Om du till exempel vill exportera varianten av kommandot Get-Item i certifikatenheten (Cert:) i PSSession i $Sskriver du Export-PSSession -Session $S -Command Get-Item -ArgumentList cert:.

Typ:Object[]
Alias:Args
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Certificate

Anger det klientcertifikat som används för att signera formatfilerna (*. Format.ps1xml) eller skriptmodulfiler (.psm1) i modulen som Export-PSSession skapar. Ange en variabel som innehåller ett certifikat eller ett kommando eller uttryck som hämtar certifikatet.

Om du vill hitta ett certifikat använder du cmdleten Get-PfxCertificate eller använder cmdleten Get-ChildItem på certifikatenheten (Cert:). Om certifikatet inte är giltigt eller inte har tillräcklig behörighet misslyckas kommandot.

Typ:X509Certificate2
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-CommandName

Exporterar endast kommandona med de angivna namnen eller namnmönstren. Jokertecken tillåts. Använd CommandName eller dess alias, Name.

Som standard exporterar Export-PSSession alla kommandon från PSSession förutom kommandon som har samma namn som kommandon i den aktuella sessionen. Detta förhindrar att kommandon döljs eller ersätts av kommandon i den aktuella sessionen. Om du vill exportera alla kommandon, även de som döljer eller ersätter andra kommandon, använder du parametern AllowClobber.

Om du använder parametern CommandName exporteras inte formateringsfilerna för kommandona om du inte använder parametern FormatTypeName. Om du använder parametern FormatTypeName exporteras inga kommandon om du inte använder parametern CommandName.

Typ:String[]
Alias:Name
Position:2
Standardvärde:All commands in the session.
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:True

-CommandType

Exporterar endast de angivna typerna av kommandoobjekt. Använd CommandType eller dess alias Typ.

Godkända värden för den här parametern är följande:

  • Alias: Alla PowerShell-alias i den aktuella sessionen.
  • All: Alla kommandotyper. Det motsvarar Get-Command -Name *.
  • Application: Alla filer förutom PowerShell-filer i sökvägar som anges i variabeln Sökvägsmiljö ($env:path), inklusive .txt, .exeoch .dll filer.
  • Cmdlet: Cmdletarna i den aktuella sessionen. Cmdlet är standardvärdet.
  • Configuration: En PowerShell-konfiguration. Mer information finns i about_Session_Configurations.
  • ExternalScript: Alla .ps1 filer i sökvägarna som anges i variabeln Sökvägsmiljö ($env:path).
  • Filter och Function: Alla PowerShell-funktioner.
  • Script Skriptblock i den aktuella sessionen.
  • Workflow Ett PowerShell-arbetsflöde. Mer information finns i about_Workflows.

Dessa värden definieras som en flaggbaserad uppräkning. Du kan kombinera flera värden för att ange flera flaggor med hjälp av den här parametern. Värdena kan skickas till parametern CommandType som en matris med värden eller som en kommaavgränsad sträng av dessa värden. Cmdleten kombinerar värdena med hjälp av en binär-OR-åtgärd. Att skicka värden som en matris är det enklaste alternativet och du kan även använda tab-completion på värdena.

Typ:CommandTypes
Alias:Type
Godkända värden:Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow
Position:Named
Standardvärde:All commands in the session.
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Encoding

Anger typen av kodning för målfilen. Standardvärdet är utf8NoBOM.

Godkända värden för den här parametern är följande:

  • ascii: Använder kodningen för ASCII-teckenuppsättningen (7-bitars).
  • ansi: Använder kodningen för för den aktuella kulturens ANSI-kodsida. Det här alternativet lades till i PowerShell 7.4.
  • bigendianunicode: Kodar i UTF-16-format med hjälp av storslutsbyteordningen.
  • bigendianutf32: Kodar i UTF-32-format med hjälp av storslutsbyteordningen.
  • oem: Använder standardkodning för MS-DOS- och konsolprogram.
  • unicode: Kodar i UTF-16-format med hjälp av lite endiansk byteordning.
  • utf7: Kodar i UTF-7-format.
  • utf8: Kodar i UTF-8-format.
  • utf8BOM: Kodar i UTF-8-format med Byte Order Mark (BOM)
  • utf8NoBOM: Kodar i UTF-8-format utan Byte Order Mark (BOM)
  • utf32: Kodar i UTF-32-format.

Från och med PowerShell 6.2 tillåter parametern Kodning även numeriska ID:n för registrerade kodsidor (till exempel -Encoding 1251) eller strängnamn för registrerade kodsidor (till exempel -Encoding "windows-1251"). Mer information finns i .NET-dokumentationen för Encoding.CodePage.

Från och med PowerShell 7.4 kan du använda värdet Ansi för parametern Kodning för att skicka det numeriska ID:t för den aktuella kulturens ANSI-kodsida utan att behöva ange det manuellt.

Not

UTF-7* rekommenderas inte längre att användas. Från och med PowerShell 7.1 skrivs en varning om du anger utf7 för parametern Kodning.

Typ:Encoding
Godkända värden:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Standardvärde:UTF8NoBOM
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Force

Skriver över en eller flera befintliga utdatafiler, även om filen har det skrivskyddade attributet.

Typ:SwitchParameter
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-FormatTypeName

Exporterar endast formateringsinstruktioner för de angivna Microsoft .NET Framework-typerna. Ange typnamnen. Som standard exporterar Export-PSSession formateringsinstruktioner för alla .NET Framework-typer som inte finns i namnområdet System.Management.Automation.

Värdet för den här parametern måste vara namnet på en typ som returneras av ett Get-FormatData kommando i sessionen som kommandona importeras från. Om du vill hämta alla formateringsdata i fjärrsessionen skriver du *.

Om du använder parametern FormatTypeName exporteras inga kommandon om du inte använder parametern CommandName.

Om du använder parametern CommandName exporteras inte formateringsfilerna för kommandona om du inte använder parametern FormatTypeName.

Typ:String[]
Position:3
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-FullyQualifiedModule

Värdet kan vara ett modulnamn, en fullständig modulspecifikation eller en sökväg till en modulfil.

När värdet är en sökväg kan sökvägen vara fullständigt kvalificerad eller relativ. En relativ sökväg matchas i förhållande till skriptet som innehåller instruktionen using.

När värdet är ett namn eller en modulspecifikation söker PowerShell efter den angivna modulen i PSModulePath-.

En modulspecifikation är en hashtable som har följande nycklar.

  • ModuleName - Obligatoriskt Anger modulnamnet.
  • GUID - Valfri Anger GUID för modulen.
  • Det är också Krävs för att ange minst en av de tre nycklarna nedan.
    • ModuleVersion – Anger en lägsta godtagbar version av modulen.
    • MaximumVersion – Anger den maximala godkända versionen av modulen.
    • RequiredVersion – Anger en exakt, nödvändig version av modulen. Detta kan inte användas med de andra versionsnycklarna.

Du kan inte ange parametern FullyQualifiedModule i samma kommando som parametern Module. de två parametrarna är ömsesidigt uteslutande.

Typ:ModuleSpecification[]
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Module

Exporterar endast kommandona i de angivna PowerShell-snapin-modulerna och modulerna. Ange snapin-modulnamnen och modulnamnen. Jokertecken är inte tillåtna.

Mer information finns i Import-Module och about_PSSnapins.

Typ:String[]
Alias:PSSnapin
Position:Named
Standardvärde:All commands in the session.
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-OutputModule

Anger en valfri sökväg och ett namn för modulen som skapats av Export-PSSession. Standardsökvägen är $HOME\Documents\WindowsPowerShell\Modules. Den här parametern krävs.

Om modulunderkatalogen eller någon av de filer som Export-PSSession skapar redan finns, misslyckas kommandot. Om du vill skriva över befintliga filer använder du parametern Force.

Typ:String
Alias:PSPath, ModuleName
Position:1
Standardvärde:$HOME\Documents\WindowsPowerShell\Modules
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Session

Anger PSSession som kommandona exporteras från. Ange en variabel som innehåller ett sessionsobjekt eller ett kommando som hämtar ett sessionsobjekt, till exempel ett Get-PSSession kommando. Den här parametern krävs.

Typ:PSSession
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:False

Indata

None

Du kan inte skicka objekt till den här cmdleten.

Utdata

FileInfo

Den här cmdleten returnerar en lista över filer som utgör modulen som den skapade.

Kommentarer

Export-PSSession förlitar sig på PowerShell-fjärrkommunikationsinfrastrukturen. Om du vill använda den här cmdleten måste datorn konfigureras för fjärrkommunikation. Mer information finns i about_Remote_Requirements.

Du kan inte använda Export-PSSession för att exportera en PowerShell-provider.

Exporterade kommandon körs implicit i PSSession som de exporterades från. Information om hur du kör kommandona via fjärranslutning hanteras helt av PowerShell. Du kan köra de exporterade kommandona precis som du skulle köra lokala kommandon.

Export-ModuleMember samlar in och sparar information om PSSession i modulen som den exporterar. Om PSSession som kommandona exporterades från stängs när du importerar modulen, och det inte finns några aktiva PSSessioner till samma dator, försöker kommandona i modulen återskapa PSSession. Om försöken att återskapa PSSession misslyckas körs inte de exporterade kommandona.

Sessionsinformationen som Export-ModuleMember samlar in och sparar i modulen innehåller inte sessionsalternativ, till exempel de som du anger i $PSSessionOption-inställningsvariabeln eller med hjälp av parametern SessionOption för New-PSSession, Enter-PSSessioneller Invoke-Command cmdletar. Om den ursprungliga PSSessionen stängs när du importerar modulen använder modulen en annan PSSession till samma dator, om en är tillgänglig. Om du vill att de importerade kommandona ska köras i en korrekt konfigurerad session skapar du en PSSession med de alternativ som du vill använda innan du importerar modulen.

För att hitta de kommandon som ska exporteras använder Export-PSSession cmdleten Invoke-Command för att köra ett Get-Command kommando i PSSession. För att hämta och spara formateringsdata för kommandona använder den cmdletarna Get-FormatData och Export-FormatData. Du kan se felmeddelanden från Invoke-Command, Get-Command, Get-FormatDataoch Export-FormatData när du kör ett Export-PSSession kommando. Dessutom kan Export-PSSession inte exportera kommandon från en session som inte innehåller cmdletarna Get-Command, Get-FormatData, Select-Objectoch Get-Help.

Export-PSSession använder cmdleten Write-Progress för att visa kommandots förlopp. Du kan se förloppsindikatorn medan kommandot körs.

Exporterade kommandon har samma begränsningar som andra fjärrkommandon, inklusive oförmågan att starta ett program med ett användargränssnitt, till exempel Anteckningar.

Eftersom PowerShell-profiler inte körs i PSSessioner är kommandona som en profil lägger till i en session inte tillgängliga för Export-PSSession. Om du vill exportera kommandon från en profil använder du ett Invoke-Command-kommando för att köra profilen i PSSession manuellt innan du exporterar kommandon.

Modulen som Export-PSSession skapar kan innehålla en formateringsfil, även om kommandot inte importerar formateringsdata. Om kommandot inte importerar formateringsdata innehåller formateringsfiler som skapas inte formateringsdata.