Sdílet prostřednictvím


Export-PSSession

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

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

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-PSSessionpříkazu, 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 exportujte příkazy.

Chcete-li zabránit konfliktům názvů příkazů, výchozí možností Export-PSSession je exportovat všechny příkazy s výjimkou příkazů, které existují v aktuální relaci. Pomocí parametru CommandName můžete zadat příkazy k exportu.

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ří psSession na počítači Server01. PsSession je uložena v $S proměnné. Příkaz Export-PSSession exportuje $S příkazy proměnné a naformátuje data do modulu Server01.

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

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

$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

Tyto příkazy exportují Get příkazy Set z modulu snap-in Microsoft Exchange Server na vzdáleném počítači do modulu Exchange v $PSHOME\Modules adresáři na místním počítači. Umístěním modulu do $PSHOME\Modules adresáře 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.

$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

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

Rutina Remove-PSSession odstraní psSession z $S 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 v modulu TestCmdlets do aktuální relace. Příkaz lze kdykoli spustit v libovolné relaci.

Rutina Get-Help získá nápovědu pro rutiny, jejichž názvy začínají testem. Jakmile se příkazy v modulu přidají do aktuální relace, můžete použít Get-Help rutiny a Get-Command seznámit se s importovanými příkazy. Rutina Test-Files byla exportována z počítače Server01 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 Export-PSSession příkaz exportuje všechny příkazy a všechna formátovací data z psSession v $S proměnné 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 $Options proměnné. Příkaz New-PSSession vytvoří psSession na počítači Server01. Parametr SessionOption používá objekt uložený v $Options. Relace je uložena $S v proměnné.

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

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.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ArgumentList

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

Chcete-li například exportovat variantu Get-Item příkazu v jednotce certifikátu (Cert:) v psSession v $S, zadejte 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

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.

Type:X509Certificate2
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CommandName

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

Ve výchozím nastavení Export-PSSession exportuje 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é skryjí nebo nahrazují jiné příkazy, použijte parametr AllowClobber .

Pokud použijete parametr CommandName , formátovací soubory pro příkazy 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.

Type:String[]
Aliases:Name
Position:2
Default value:All commands in the session.
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-CommandType

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

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í Cesta ($env:path), včetně .txt, .exe a .dll souborů.
  • 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í postup PowerShellu Další informace najdete v tématu about_Workflows.

Tyto hodnoty jsou definovány jako výčet založený na příznaku. 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 použít pro hodnoty dokončování tabulátoru.

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

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 kódovou stránku ANSI aktuální jazykové verze. Tato možnost byla přidána v PowerShellu 7.4.
  • bigendianunicode: Kóduje ve formátu UTF-16 pomocí pořadí velkých bajtů.
  • bigendianutf32: Kóduje ve formátu UTF-32 pomocí pořadí velkých bajtů.
  • oem: Používá výchozí kódování pro MS-DOS a konzolové programy.
  • unicode: Kóduje ve formátu UTF-16 pomocí malého bajtového pořadí.
  • 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 Kódování také číselná ID registrovaných znakových stránek (jako -Encoding 1251) nebo názvy řetězců registrovaných znakových stránek (například -Encoding "windows-1251"). Další informace najdete v dokumentaci k .NET pro Encoding.CodePage.

Počínaje PowerShellem 7.4 můžete hodnotu parametru Encoding použít Ansi k předání číselného ID pro znakovou stránku ANSI aktuální jazykové verze, aniž byste ji museli zadávat ručně.

Poznámka:

UTF-7* se už nedoporučuje používat. Od PowerShellu 7.1 se při zadání parametru Encoding zapíše utf7 upozornění.

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

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 , formátovací soubory pro příkazy se neexportují, pokud nepoužíváte parametr FormatTypeName .

Type:String[]
Position:3
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 vyhledá zadaný modul v psModulePath .

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

  • ModuleName - Povinný argument Určuje název modulu.
  • GUID - Volitelné určuje identifikátor GUID modulu.
  • Je také povinné zadat aspoň jeden ze tří následujících 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 FullyQualifiedModule nelze zadat ve stejném příkazu jako parametr Module. oba parametry se vzájemně vylučují.

Type:ModuleSpecification[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String[]
Aliases:PSSnapin
Position:Named
Default value:All commands in the session.
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputModule

Určuje volitelnou cestu a název modulu vytvořeného modulem 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 už existují, příkaz selže. K přepsání existujících souborů použijte parametr 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

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 Get-PSSession příkaz. Tento parametr je povinný.

Type:PSSession
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Vstupy

None

Do této rutiny nemůžete roušit 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 najdete v tématu about_Remote_Requirements.

Nelze použít Export-PSSession k exportu zprostředkovatele PowerShellu.

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 $PSSessionOption proměnné předvoleb nebo pomocí parametru SessionOption parametru New-PSSession, Enter-PSSessionnebo Invoke-Command rutin. 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 pomocí Invoke-Command rutiny spustí Get-Command příkaz v psSession. K získání a uložení formátovacích dat pro příkazy se používají rutiny Get-FormatData a Export-FormatData rutiny. Při spuštění příkazu se můžou zobrazit chybové zprávy z Invoke-Command, Get-CommandGet-FormatData, a Export-FormatData když spustíte Export-PSSession příkaz. Nelze také exportovat příkazy z relace, Export-PSSession která neobsahuje Get-Commandrutiny , Get-FormatData, Select-Objecta Get-Help rutiny.

Export-PSSession používá rutinu Write-Progress k zobrazení průběhu 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 například Poznámkový blok.

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

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.