Sdílet prostřednictvím


Export-PSSession

Exportuje příkazy z jiné relace a uloží je do modulu PowerShellu.

Syntaxe

All

Export-PSSession
    [-OutputModule] <String>
    [[-CommandName] <String[]>]
    [[-FormatTypeName] <String[]>]
    [-Session] <PSSession>
    [-Force]
    [-Encoding <Encoding>]
    [-AllowClobber]
    [-ArgumentList <Object[]>]
    [-CommandType <CommandTypes>]
    [-Module <String[]>]
    [-FullyQualifiedModule <ModuleSpecification[]>]
    [-Certificate <X509Certificate2>]
    [<CommonParameters>]

Description

Rutina Export-PSSession získá rutiny, funkce, aliasy a další typy příkazů z jiné relace PowerShellu (PSSession) na místním nebo vzdáleném počítači a uloží je do modulu PowerShellu. Pokud chcete přidat příkazy z modulu do aktuální relace, použijte rutinu Import-Module.

Na rozdíl od Import-PSSession, který importuje příkazy z jiné psSession do aktuální relace, Export-PSSession uloží příkazy v modulu. Příkazy se neimportují do aktuální relace.

K exportu příkazů použijte rutinu New-PSSession k vytvoření psSession s příkazy, které chcete exportovat. Pak pomocí rutiny Export-PSSession příkazy exportujte.

Chcete-li zabránit konfliktům názvů příkazů, výchozí hodnota pro Export-PSSession je exportovat všechny příkazy s výjimkou příkazů, které existují v aktuální relaci. K určení příkazů k exportu můžete použít parametr CommandName.

Rutina Export-PSSession používá implicitní funkci vzdálené komunikace PowerShellu. Když importujete příkazy do aktuální relace, spustí se implicitně v původní relaci nebo v podobné relaci na původním počítači.

Příklady

Příklad 1: Export příkazů z psSession

Tento příklad vytvoří novou psSession z místního počítače do počítače Server01. Všechny příkazy kromě příkazů, které existují v aktuální relaci, se exportují do modulu s názvem Server01 na místním počítači. Export obsahuje formátovací data pro příkazy.

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

Příkaz New-PSSession vytvoří na počítači se serverem Server01 příkaz PSSession. PsSession je uložena v $S proměnné. Příkaz Export-PSSession exportuje příkazy $S proměnné a naformátuje data do modulu Server01.

Příklad 2: Export příkazů Get and Set

Tento příklad exportuje všechny příkazy Get a Set ze serveru.

$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

Tyto příkazy exportují příkazy Get a Set z modulu snap-in Microsoft Exchange Server na vzdáleném počítači do modulu Exchange v adresáři $PSHOME\Modules v místním počítači. Umístěním modulu do adresáře $PSHOME\Modules ho zpřístupníte všem uživatelům počítače.

Příklad 3: Export příkazů ze vzdáleného počítače

Tento příklad exportuje rutiny ze vzdáleného počítače ze vzdáleného počítače a uloží je do modulu na místním počítači. Rutiny z modulu se přidají do aktuální relace, aby je bylo možné použít.

$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

Příkaz New-PSSession vytvoří na počítači se serverem Server01 psSession a uloží ho do proměnné $S. Příkaz Export-PSSession exportuje rutiny, jejichž názvy začínají testem z psSession v $S do modulu TestCmdlets v místním počítači.

Rutina Remove-PSSession odstraní psSession v $S z aktuální relace. Tento příkaz ukazuje, že příkaz PSSession nemusí být aktivní, pokud chcete použít příkazy importované z relace. Rutina Import-Module přidá rutiny do aktuální relace v modulu TestCmdlets. Příkaz lze kdykoli spustit v libovolné relaci.

Rutina Get-Help získá nápovědu pro rutiny, jejichž názvy začínají testem. Po přidání příkazů v modulu do aktuální relace můžete k získání informací o importovaných příkazech použít Get-Help a Get-Command rutiny. Rutina Test-Files byla exportována z počítače Serveru01 a přidána do relace. Rutina Test-Files běží ve vzdálené relaci na počítači, ze kterého byl příkaz importován. PowerShell vytvoří relaci z informací uložených v modulu TestCmdlets.

Příklad 4: Export a clobber příkazy v aktuální relaci

Tento příklad exportuje příkazy uložené v proměnné do aktuální relace.

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

Tento příkaz Export-PSSession exportuje všechny příkazy a všechna formátovací data z psSession v proměnné $S do aktuální relace. Parametr AllowClobber obsahuje příkazy se stejnými názvy jako příkazy v aktuální relaci.

Příklad 5: Export příkazů z uzavřené psSession

Tento příklad ukazuje, jak spustit exportované příkazy se speciálními možnostmi při zavření psSession, která vytvořila exportované příkazy.

Pokud se původní vzdálená relace při importu modulu zavře, použije modul libovolnou otevřenou vzdálenou relaci, která se připojí k původnímu počítači. Pokud k původnímu počítači neexistuje žádná aktuální relace, modul znovu vytvoří relaci.

Pokud chcete spouštět exportované příkazy se speciálními možnostmi ve vzdálené relaci, musíte před importem modulu vytvořit vzdálenou relaci s těmito možnostmi. Použití rutiny New-PSSession s parametrem 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

Rutina New-PSSessionOption vytvoří objekt PSSessionOption a uloží objekt do proměnné $Options. Příkaz New-PSSession vytvoří na počítači se serverem Server01 příkaz PSSession. Parametr SessionOption používá objekt uložený v $Options. Relace je uložena v proměnné $S.

Rutina Export-PSSession exportuje příkazy z psSession v $S do modulu Server01. Rutina Remove-PSSession odstraní psSession v proměnné $S.

Rutina New-PSSession vytvoří novou psSession, která se připojí k počítači Server01. Parametr SessionOption používá objekt uložený v $Options. Rutina Import-Module importuje příkazy z modulu Server01. Příkazy v modulu jsou spouštěny v psSession na počítači Server01.

Parametry

-AllowClobber

Exportuje zadané příkazy, i když mají stejné názvy jako příkazy v aktuální relaci.

Pokud exportujete příkaz se stejným názvem jako příkaz v aktuální relaci, exportovaný příkaz skryje nebo nahradí původní příkazy. Další informace najdete v tématu about_Command_Precedence.

Vlastnosti parametru

Typ:SwitchParameter
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-ArgumentList

Exportuje variantu příkazu, která je výsledkem použití zadaných argumentů (hodnot parametrů).

Pokud chcete například exportovat variantu příkazu Get-Item v jednotce certifikátu (Cert:) v psSession v $S, zadejte Export-PSSession -Session $S -Command Get-Item -ArgumentList Cert:.

Vlastnosti parametru

Typ:

Object[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False
Aliasy:Argumenty

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Certificate

Určuje klientský certifikát, který se používá k podepsání souborů formátu (*. Format.ps1xml) nebo soubory modulu skriptu (.psm1) v modulu, který Export-PSSession vytvoří. Zadejte proměnnou obsahující certifikát nebo příkaz nebo výraz, který certifikát získá.

Pokud chcete najít certifikát, použijte rutinu Get-PfxCertificate nebo použijte rutinu Get-ChildItem na jednotce Certificate (Cert:). Pokud certifikát není platný nebo nemá dostatečnou autoritu, příkaz selže.

Vlastnosti parametru

Typ:X509Certificate2
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-CommandName

Exportuje pouze příkazy se zadanými názvy nebo vzory názvů. Jsou povoleny zástupné symboly. Použijte CommandName nebo jeho alias, Název.

Ve výchozím nastavení Export-PSSession exportují všechny příkazy z psSession s výjimkou příkazů se stejnými názvy jako příkazy v aktuální relaci. Tím zabráníte skrytí nebo nahrazení příkazů v aktuální relaci. Pokud chcete exportovat všechny příkazy, i ty, které skrývají nebo nahrazují jiné příkazy, použijte parametr AllowClobber.

Pokud použijete parametr CommandName, soubory formátování příkazů se neexportují, pokud nepoužíváte parametr FormatTypeName. Podobně pokud použijete parametr FormatTypeName, nebudou exportovány žádné příkazy, pokud nepoužíváte parametr CommandName.

Vlastnosti parametru

Typ:

String[]

Default value:All commands in the session.
Podporuje zástupné znaky:True
DontShow:False
Aliasy:Název

Sady parametrů

(All)
Position:2
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-CommandType

Exportuje pouze zadané typy objektů příkazů. Použijte CommandType nebo jeho alias, Typ.

Přijatelné hodnoty pro tento parametr jsou následující:

  • Alias: Všechny aliasy PowerShellu v aktuální relaci.
  • All: Všechny typy příkazů. Je to ekvivalent Get-Command -Name *.
  • Application: Všechny jiné soubory než soubory PowerShellu v cestách uvedených v proměnné prostředí PATH ($Env:PATH), včetně .txt, .exea souborů .dll.
  • Cmdlet: Rutiny v aktuální relaci. Rutina je výchozí.
  • Configuration: Konfigurace PowerShellu. Další informace najdete v tématu about_Session_Configurations.
  • ExternalScript: Všechny soubory .ps1 v cestách uvedených v proměnné prostředí PATH ($Env:PATH).
  • Filter a Function: Všechny funkce PowerShellu
  • Script bloky skriptu v aktuální relaci.
  • Workflow pracovního postupu PowerShellu. Další informace najdete v tématu about_Workflows.

Tyto hodnoty jsou definovány jako výčtové hodnoty na bázi příznaků. Pomocí tohoto parametru můžete zkombinovat více hodnot a nastavit více příznaků. Hodnoty lze předat parametru CommandType jako pole hodnot nebo jako řetězec oddělený čárkami těchto hodnot. Rutina zkombinuje hodnoty pomocí binární operace OR. Předání hodnot jako pole je nejjednodušší možností a také umožňuje využít automatické doplňování pomocí klávesy Tab pro hodnoty.

Vlastnosti parametru

Typ:CommandTypes
Default value:All commands in the session.
Přípustné hodnoty:Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow
Podporuje zástupné znaky:False
DontShow:False
Aliasy:Typ

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Encoding

Určuje typ kódování cílového souboru. Výchozí hodnota je utf8NoBOM.

Přijatelné hodnoty pro tento parametr jsou následující:

  • ascii: Používá kódování znakové sady ASCII (7bitová).
  • ansi: Používá kódování pro znakovou stránku ANSI aktuální kultury. Tato možnost byla přidána v PowerShellu 7.4.
  • bigendianunicode: Kóduje ve formátu UTF-16 s použitím pořadí bajtů big-endian.
  • bigendianutf32: Kóduje ve formátu UTF-32 s použitím big-endian bajtového pořadí.
  • oem: Používá výchozí kódování pro MS-DOS a konzolové programy.
  • unicode: Kóduje ve formátu UTF-16 pomocí pořadí malých bajtů.
  • utf7: Kóduje ve formátu UTF-7.
  • utf8: Kóduje ve formátu UTF-8.
  • utf8BOM: Kódování ve formátu UTF-8 pomocí značky pořadí bajtů (BOM)
  • utf8NoBOM: Kódování ve formátu UTF-8 bez značky pořadí bajtů (BOM)
  • utf32: Kóduje ve formátu UTF-32.

Počínaje PowerShellem 6.2 umožňuje parametr Encoding také číselné ID registrovaných znakových stránek (například -Encoding 1251) nebo názvy řetězců registrovaných znakových stránek (například -Encoding "windows-1251"). Další informace naleznete v dokumentaci .NET pro Encoding.CodePage.

Od verze PowerShell 7.4 můžete použít hodnotu Ansi parametru Encoding a předat číselné ID pro znakovou stránku ANSI aktuální kultury, aniž by bylo nutné ji zadávat ručně.

Poznámka:

UTF-7* se už nedoporučuje používat. Od PowerShellu 7.1 se zapíše upozornění, pokud pro parametr utf7 zadáte .

Vlastnosti parametru

Typ:Encoding
Default value:UTF8NoBOM
Přípustné hodnoty:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Force

Přepíše jeden nebo více existujících výstupních souborů, i když má soubor atribut jen pro čtení.

Vlastnosti parametru

Typ:SwitchParameter
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-FormatTypeName

Exportuje pokyny k formátování pouze pro zadané typy rozhraní Microsoft .NET Framework. Zadejte názvy typů. Ve výchozím nastavení Export-PSSession exportuje pokyny k formátování pro všechny typy rozhraní .NET Framework, které nejsou v oboru názvů System.Management. Automation.

Hodnota tohoto parametru musí být název typu, který je vrácen příkazem Get-FormatData v relaci, ze které se příkazy importují. Chcete-li získat všechna formátovací data ve vzdálené relaci, zadejte *.

Pokud použijete parametr FormatTypeName, nebudou exportovány žádné příkazy, pokud nepoužíváte parametr CommandName.

Pokud použijete parametr CommandName, soubory formátování příkazů se neexportují, pokud nepoužíváte parametr FormatTypeName.

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:3
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-FullyQualifiedModule

Hodnota může být název modulu, úplná specifikace modulu nebo cesta k souboru modulu.

Pokud je hodnota cesta, může být cesta plně kvalifikovaná nebo relativní. Relativní cesta je vyřešena vzhledem ke skriptu, který obsahuje příkaz using.

Pokud je hodnota název nebo specifikace modulu, PowerShell prohledá PSModulePath zadaného modulu.

Specifikace modulu je hashovatelná tabulka s následujícími klíči.

  • ModuleName - Povinný Určuje název modulu.
  • GUID - Volitelné Určuje identifikátor GUID modulu.
  • Je také Povinné zadat aspoň jeden z následujících tří klíčů.
    • ModuleVersion – Určuje minimální přijatelnou verzi modulu.
    • MaximumVersion – Určuje maximální přijatelnou verzi modulu.
    • RequiredVersion – Určuje přesnou požadovanou verzi modulu. Tuto možnost nelze použít s jinými klíči verze.

Parametr FullyQualifiedMod ule nemůžete zadat ve stejném příkazu jako parametr Module. oba parametry se vzájemně vylučují.

Vlastnosti parametru

Typ:

ModuleSpecification[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Module

Exportuje pouze příkazy v zadaných modulech a modulech PowerShellu. Zadejte názvy modulů a modulů. Zástupné dokumentace nejsou povoleny.

Další informace najdete v tématu Import-Module a about_PSSnapins.

Vlastnosti parametru

Typ:

String[]

Default value:All commands in the session.
Podporuje zástupné znaky:False
DontShow:False
Aliasy:PSSnapin

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-OutputModule

Určuje volitelnou cestu a název modulu vytvořeného Export-PSSession. Výchozí cesta je $HOME\Documents\WindowsPowerShell\Modules. Tento parametr je povinný.

Pokud podadresář modulu nebo některý ze souborů, které Export-PSSession již existují, příkaz selže. K přepsání existujících souborů použijte parametr Force.

Vlastnosti parametru

Typ:String
Default value:$HOME\Documents\WindowsPowerShell\Modules
Podporuje zástupné znaky:False
DontShow:False
Aliasy:PSPath, ModuleName

Sady parametrů

(All)
Position:1
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Session

Určuje psSession, ze které se příkazy exportují. Zadejte proměnnou obsahující objekt relace nebo příkaz, který získá objekt relace, například příkaz Get-PSSession. Tento parametr je povinný.

Vlastnosti parametru

Typ:PSSession
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

CommonParameters

Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.

Vstupy

None

Do tohoto cmdletu nemůžete předávat objekty.

Výstupy

FileInfo

Tato rutina vrátí seznam souborů, které tvoří modul, který vytvořil.

Poznámky

Export-PSSession spoléhá na infrastrukturu vzdálené komunikace PowerShellu. Pokud chcete tuto rutinu použít, musí být počítač nakonfigurovaný pro vzdálené komunikace. Další informace naleznete v tématu about_Remote_Requirements.

K exportu zprostředkovatele PowerShellu nemůžete použít Export-PSSession.

Exportované příkazy se spouští implicitně v psSession, ze které byly exportovány. Podrobnosti o vzdáleném spuštění příkazů se zpracovávají výhradně pomocí PowerShellu. Exportované příkazy můžete spustit stejně jako místní příkazy.

Export-ModuleMember zaznamenává a ukládá informace o psSession v modulu, který exportuje. Pokud při importu modulu dojde k zavření psSession, ze které byly příkazy exportovány, a neexistují žádné aktivní psSessions do stejného počítače, příkazy v modulu se pokusí znovu vytvořit psSession. Pokud se pokusí znovu vytvořit příkaz PSSession, exportované příkazy se nespustí.

Informace o relaci, které Export-ModuleMember zachytí a uloží v modulu, nezahrnují možnosti relace, například ty, které zadáte v proměnné předvoleb $PSSessionOption nebo pomocí parametru SessionOption rutin New-PSSession, Enter-PSSessionnebo Invoke-Command. Pokud při importu modulu dojde k zavření původní psSession, modul použije jinou psSession do stejného počítače, pokud je k dispozici. Pokud chcete povolit spuštění importovaných příkazů v správně nakonfigurované relaci, vytvořte před importem modulu příkaz PSSession s požadovanými možnostmi.

Pokud chcete najít příkazy k exportu, Export-PSSession používá rutinu Invoke-Command ke spuštění příkazu Get-Command v příkazu PSSession. K získání a uložení formátovacích dat pro příkazy se používají rutiny Get-FormatData a Export-FormatData. Při spuštění příkazu Invoke-Command se můžou zobrazovat chybové zprávy z Get-Command, Get-FormatData, Export-FormatDataa Export-PSSession. Export-PSSession také nelze exportovat příkazy z relace, která neobsahuje rutiny Get-Command, Get-FormatData, Select-Objecta Get-Help.

Export-PSSession pomocí rutiny Write-Progress zobrazí průběh příkazu. Během spuštění příkazu se může zobrazit indikátor průběhu.

Exportované příkazy mají stejná omezení jako jiné vzdálené příkazy, včetně nemožnosti spustit program s uživatelským rozhraním, jako je Třeba Poznámkový blok.

Vzhledem k tomu, že profily PowerShellu nejsou spuštěny v psSessions, příkazy, které profil přidá do relace, nejsou k dispozici pro Export-PSSession. Pokud chcete exportovat příkazy z profilu, před exportem příkazů použijte příkaz Invoke-Command ke spuštění profilu v psSession ručně.

Modul, který Export-PSSession vytvoří, může obsahovat formátovací soubor, i když příkaz neimportuje formátovaná data. Pokud příkaz neimportuje formátovací data, nebudou žádné vytvořené soubory formátování obsahovat formátovací data.