Export-PSSession

Eksportuje polecenia z innej sesji i zapisuje je w module programu PowerShell.

Składnia

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>]

Opis

Polecenie Export-PSSession cmdlet pobiera polecenia cmdlet, funkcje, aliasy i inne typy poleceń z innej sesji programu PowerShell (PSSession) na komputerze lokalnym lub zdalnym i zapisuje je w module programu PowerShell. Aby dodać polecenia z modułu do bieżącej sesji, użyj Import-Module polecenia cmdlet .

W przeciwieństwie do Import-PSSessionmetody , która importuje polecenia z innej sesji PSSession do bieżącej sesji, Export-PSSession zapisuje polecenia w module. Polecenia nie są importowane do bieżącej sesji.

Aby wyeksportować polecenia, użyj New-PSSession polecenia cmdlet , aby utworzyć plik PSSession zawierający polecenia, które chcesz wyeksportować. Następnie użyj polecenia cmdlet , Export-PSSession aby wyeksportować polecenia .

Aby zapobiec konfliktom nazw poleceń, wartością domyślną jest Export-PSSession wyeksportowanie wszystkich poleceń, z wyjątkiem poleceń, które istnieją w bieżącej sesji. Możesz użyć parametru CommandName , aby określić polecenia do wyeksportowania.

Polecenie Export-PSSession cmdlet używa niejawnej funkcji komunikacji zdalnej programu PowerShell. Podczas importowania poleceń do bieżącej sesji są one uruchamiane niejawnie w oryginalnej sesji lub w podobnej sesji na komputerze źródłowym.

Przykłady

Przykład 1. Eksportowanie poleceń z programu PSSession

W tym przykładzie zostanie utworzona nowa usługa PSSession z komputera lokalnego na komputer Server01. Wszystkie polecenia, z wyjątkiem tych, które istnieją w bieżącej sesji, są eksportowane do modułu o nazwie Server01 na komputerze lokalnym. Eksport zawiera dane formatowania poleceń.

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

Polecenie New-PSSession tworzy pssession na komputerze Server01. Plik PSSession jest przechowywany w zmiennej $S . Polecenie Export-PSSession eksportuje polecenia zmiennej $S i formatuje dane do modułu Server01.

Przykład 2. Eksportowanie poleceń Get and Set

W tym przykładzie eksportuje wszystkie Get polecenia i Set z serwera.

$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

Te polecenia eksportują Get polecenia i Set z przystawki programu Microsoft Exchange Server na komputerze zdalnym do modułu programu Exchange w $PSHOME\Modules katalogu na komputerze lokalnym. Umieszczenie modułu $PSHOME\Modules w katalogu sprawia, że jest dostępny dla wszystkich użytkowników komputera.

Przykład 3. Eksportowanie poleceń z komputera zdalnego

Ten przykład eksportuje polecenia cmdlet z programu PSSession na komputerze zdalnym i zapisuje je w module na komputerze lokalnym. Polecenia cmdlet z modułu są dodawane do bieżącej sesji, aby można było ich używać.

$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

Polecenie New-PSSession tworzy pssession na komputerze Server01 i zapisuje go w zmiennej $S . Polecenie Export-PSSession eksportuje polecenia cmdlet, których nazwy zaczynają się od Testuj z programu PSSession do $S modułu TestCmdlets na komputerze lokalnym.

Polecenie Remove-PSSession cmdlet usuwa program PSSession z $S bieżącej sesji. To polecenie pokazuje, że sesja PSSession nie musi być aktywna, aby używać poleceń zaimportowanych z sesji. Polecenie Import-Module cmdlet dodaje polecenia cmdlet w module TestCmdlets do bieżącej sesji. Polecenie można uruchomić w dowolnej sesji w dowolnym momencie.

Polecenie Get-Help cmdlet otrzymuje pomoc dotyczącą poleceń cmdlet, których nazwy zaczynają się od testu. Po dodaniu poleceń w module do bieżącej sesji możesz użyć Get-Help poleceń cmdlet i Get-Command , aby dowiedzieć się więcej o zaimportowanych poleceniach. Polecenie Test-Files cmdlet zostało wyeksportowane z komputera Server01 i dodane do sesji. Polecenie Test-Files cmdlet jest uruchamiane w sesji zdalnej na komputerze, z którego zostało zaimportowane polecenie. Program PowerShell tworzy sesję na podstawie informacji przechowywanych w module TestCmdlets.

Przykład 4. Eksportowanie i klonowanie poleceń w bieżącej sesji

Ten przykład eksportuje polecenia przechowywane w zmiennej do bieżącej sesji.

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

To Export-PSSession polecenie eksportuje wszystkie polecenia i wszystkie dane formatowania z psSession w zmiennej $S do bieżącej sesji. Parametr AllowClobber zawiera polecenia o takich samych nazwach jak polecenia w bieżącej sesji.

Przykład 5. Eksportowanie poleceń z zamkniętego programu PSSession

W tym przykładzie pokazano, jak uruchomić wyeksportowane polecenia z opcjami specjalnymi, gdy program PSSession, który utworzył wyeksportowane polecenia, zostanie zamknięty.

Jeśli oryginalna sesja zdalna zostanie zamknięta po zaimportowaniu modułu, moduł użyje dowolnej otwartej sesji zdalnej łączącej się z komputerem źródłowym. Jeśli nie ma bieżącej sesji na komputerze źródłowym, moduł ponownie opublikuje sesję.

Aby uruchomić wyeksportowane polecenia z opcjami specjalnymi w sesji zdalnej, należy utworzyć sesję zdalną z tymi opcjami przed zaimportowanie modułu. New-PSSession Używanie polecenia cmdlet z 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

Polecenie New-PSSessionOption cmdlet tworzy obiekt PSSessionOption i zapisuje obiekt w zmiennej $Options . Polecenie New-PSSession tworzy pssession na komputerze Server01. Parametr SessionOption używa obiektu przechowywanego w pliku $Options. Sesja jest przechowywana w zmiennej $S .

Polecenie Export-PSSession cmdlet eksportuje polecenia z programu PSSession do $S modułu Server01. Polecenie Remove-PSSession cmdlet usuwa plik PSSession w zmiennej $S .

Polecenie New-PSSession cmdlet tworzy nową konsolę PSSession łączącą się z komputerem Server01. Parametr SessionOption używa obiektu przechowywanego w pliku $Options. Polecenie Import-Module cmdlet importuje polecenia z modułu Server01. Polecenia w module są uruchamiane w programie PSSession na komputerze Server01.

Parametry

-AllowClobber

Eksportuje określone polecenia, nawet jeśli mają takie same nazwy jak polecenia w bieżącej sesji.

Jeśli eksportujesz polecenie o takiej samej nazwie jak polecenie w bieżącej sesji, wyeksportowane polecenie ukrywa lub zastępuje oryginalne polecenia. Aby uzyskać więcej informacji, zobacz about_Command_Precedence.

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

-ArgumentList

Eksportuje wariant polecenia, który wynika z używania określonych argumentów (wartości parametrów).

Aby na przykład wyeksportować wariant Get-Item polecenia na dysku certyfikatu (Cert:) w programie PSSession w pliku $S, wpisz 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

Określa certyfikat klienta używany do podpisywania plików formatu (*). Format.ps1xml) lub pliki modułów skryptu (psm1) w utworzonym module Export-PSSession . Wprowadź zmienną zawierającą certyfikat lub polecenie lub wyrażenie, które pobiera certyfikat.

Aby znaleźć certyfikat, użyj Get-PfxCertificate polecenia cmdlet lub użyj Get-ChildItem polecenia cmdlet na dysku Certyfikat (Cert:). Jeśli certyfikat jest nieprawidłowy lub nie ma wystarczającego urzędu, polecenie kończy się niepowodzeniem.

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

-CommandName

Eksportuje tylko polecenia z określonymi nazwami lub wzorcami nazw. Dozwolone są symbole wieloznaczne. Użyj polecenia CommandName lub jego aliasu, Name.

Domyślnie Export-PSSession eksportuje wszystkie polecenia z psSession z wyjątkiem poleceń, które mają takie same nazwy jak polecenia w bieżącej sesji. Zapobiega to ukrywaniu lub zastępowaniu poleceń w bieżącej sesji. Aby wyeksportować wszystkie polecenia, nawet te, które ukrywają lub zastępują inne polecenia, użyj parametru AllowClobber .

Jeśli używasz parametru CommandName, pliki formatowania dla poleceń nie zostaną wyeksportowane, chyba że zostanie użyty parametr FormatTypeName. Podobnie, jeśli używasz parametru FormatTypeName , żadne polecenia nie są eksportowane, chyba że używasz parametru 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

Eksportuje tylko określone typy obiektów poleceń. Użyj parametru CommandType lub jego aliasu, Wpisz.

Dopuszczalne wartości tego parametru są następujące:

  • Alias: wszystkie aliasy programu PowerShell w bieżącej sesji.
  • All: wszystkie typy poleceń. Jest to odpowiednik .Get-Command -Name *
  • Application: wszystkie pliki inne niż pliki programu PowerShell w ścieżkach wymienionych w zmiennej środowiskowej Path ($env:path), w tym .txt, .exe i .dll plików.
  • Cmdlet: polecenia cmdlet w bieżącej sesji. Polecenie cmdlet jest wartością domyślną.
  • Configuration: Konfiguracja programu PowerShell. Aby uzyskać więcej informacji, zobacz about_Session_Configurations.
  • ExternalScript: Wszystkie pliki .ps1 w ścieżkach wymienionych w zmiennej środowiskowej Path ($env:path).
  • Filter i Function: Wszystkie funkcje programu PowerShell.
  • Script Bloki skryptu w bieżącej sesji.
  • Workflow Przepływ pracy programu PowerShell. Aby uzyskać więcej informacji, zobacz about_Workflows.

Te wartości są definiowane jako wyliczenie oparte na flagach. Możesz połączyć wiele wartości ze sobą, aby ustawić wiele flag przy użyciu tego parametru. Wartości można przekazać do parametru CommandType jako tablicę wartości lub jako ciąg rozdzielany przecinkami tych wartości. Polecenie cmdlet połączy wartości przy użyciu operacji binary-OR. Przekazywanie wartości jako tablicy jest najprostszą opcją, a także umożliwia użycie uzupełniania tabulatorów na wartościach.

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

Określa typ kodowania dla pliku docelowego. Domyślna wartość to utf8NoBOM.

Dopuszczalne wartości tego parametru są następujące:

  • ascii: używa kodowania dla zestawu znaków ASCII (7-bitowych).
  • bigendianunicode: Koduje w formacie UTF-16 przy użyciu kolejności bajtów big-endian.
  • bigendianutf32: Koduje w formacie UTF-32 przy użyciu kolejności bajtów big-endian.
  • oem: używa domyślnego kodowania dla programów MS-DOS i konsoli.
  • unicode: Koduje w formacie UTF-16 przy użyciu kolejności bajtów little-endian.
  • utf7: Koduje w formacie UTF-7.
  • utf8: Koduje w formacie UTF-8.
  • utf8BOM: Koduje w formacie UTF-8 za pomocą języka Byte Order Mark (BOM)
  • utf8NoBOM: Koduje w formacie UTF-8 bez znaku kolejności bajtów (BOM)
  • utf32: Koduje w formacie UTF-32.

Począwszy od programu PowerShell 6.2, parametr Kodowanie umożliwia również numeryczne identyfikatory zarejestrowanych stron kodu (takich jak ) lub nazwy ciągów zarejestrowanych stron kodu (na przykład -Encoding 1251-Encoding "windows-1251"). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą pliku Encoding.CodePage.

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

Zastępuje co najmniej jeden istniejący plik wyjściowy, nawet jeśli plik ma atrybut tylko do odczytu.

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

-FormatTypeName

Eksportuje instrukcje formatowania tylko dla określonych typów programu Microsoft .NET Framework. Wprowadź nazwy typów. Domyślnie Export-PSSession eksportuje instrukcje formatowania dla wszystkich typów programu .NET Framework, które nie znajdują się w przestrzeni nazw System.Management.Automation .

Wartość tego parametru musi być nazwą typu zwracanego przez Get-FormatData polecenie w sesji, z której importowane są polecenia. Aby pobrać wszystkie dane formatowania w sesji zdalnej, wpisz *.

Jeśli używasz parametru FormatTypeName , żadne polecenia nie są eksportowane, chyba że używasz parametru CommandName .

Jeśli używasz parametru CommandName, pliki formatowania dla poleceń nie zostaną wyeksportowane, chyba że zostanie użyty parametr FormatTypeName.

Type:String[]
Position:3
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FullyQualifiedModule

Wartość może być nazwą modułu, pełną specyfikacją modułu lub ścieżką do pliku modułu.

Gdy wartość jest ścieżką, ścieżka może być w pełni kwalifikowana lub względna. Ścieżka względna jest rozpoznawana względem skryptu zawierającego instrukcję using.

Gdy wartość jest nazwą lub specyfikacją modułu, program PowerShell przeszukuje element PSModulePath dla określonego modułu.

Specyfikacja modułu to tabela skrótu zawierająca następujące klucze.

  • ModuleName - Required Określa nazwę modułu.
  • GUID - Opcjonalnie Określa identyfikator GUID modułu.
  • Wymagane jest również określenie co najmniej jednego z trzech poniższych kluczy.
    • ModuleVersion - Określa minimalną akceptowalną wersję modułu.
    • MaximumVersion - Określa maksymalną akceptowalną wersję modułu.
    • RequiredVersion - Określa dokładną, wymaganą wersję modułu. Nie można tego używać z innymi kluczami wersji.

Nie można określić parametru FullyQualifiedModule w tym samym poleceniu co parametr modułu. te dwa parametry wykluczają się wzajemnie.

Type:ModuleSpecification[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Module

Eksportuje tylko polecenia w określonych przystawkach i modułach programu PowerShell. Wprowadź nazwy przystawki i modułów. Symbole wieloznaczne nie są dozwolone.

Aby uzyskać więcej informacji, zobacz Import-Module i 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

Określa opcjonalną ścieżkę i nazwę modułu utworzonego przez Export-PSSessionprogram . Domyślna ścieżka to $HOME\Documents\WindowsPowerShell\Modules. Ten parametr jest wymagany.

Jeśli podkatalog modułu lub którykolwiek z plików, które Export-PSSession już istnieją, polecenie zakończy się niepowodzeniem. Aby zastąpić istniejące pliki, użyj parametru 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

Określa pssession, z którego polecenia są eksportowane. Wprowadź zmienną zawierającą obiekt sesji lub polecenie, które pobiera obiekt sesji, na przykład Get-PSSession polecenie. Ten parametr jest wymagany.

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

Dane wejściowe

None

Nie można potokować obiektów do tego polecenia cmdlet.

Dane wyjściowe

FileInfo

To polecenie cmdlet zwraca listę plików składających się na utworzony moduł.

Uwagi

Export-PSSession korzysta z infrastruktury komunikacji zdalnej programu PowerShell. Aby użyć tego polecenia cmdlet, komputer musi być skonfigurowany do komunikacji zdalnie. Aby uzyskać więcej informacji, zobacz about_Remote_Requirements.

Nie można użyć Export-PSSession polecenia , aby wyeksportować dostawcę programu PowerShell.

Wyeksportowane polecenia są uruchamiane niejawnie w programie PSSession, z którego zostały wyeksportowane. Szczegóły uruchamiania poleceń zdalnie są obsługiwane w całości przez program PowerShell. Wyeksportowane polecenia można uruchamiać tak samo, jak w przypadku uruchamiania poleceń lokalnych.

Export-ModuleMember przechwytuje i zapisuje informacje o psSession w module, który eksportuje. Jeśli moduł PSSession, z którego wyeksportowano polecenia, zostanie zamknięty podczas importowania modułu i nie ma żadnych aktywnych psSessions na tym samym komputerze, polecenia w module próbują ponownie utworzyć psSession. Jeśli próba ponownego utworzenia pliku PSSession zakończy się niepowodzeniem, wyeksportowane polecenia nie zostaną uruchomione.

Informacje o sesji, które Export-ModuleMember przechwytują i zapisuje w module, nie zawierają opcji sesji, takich jak te określone w $PSSessionOption zmiennej preferencji lub przy użyciu parametru New-PSSessionSessionOption polecenia cmdlet , Enter-PSSessionlub Invoke-Command . Jeśli oryginalne narzędzie PSSession zostanie zamknięte podczas importowania modułu, moduł użyje innego programu PSSession na tym samym komputerze, jeśli jest dostępny. Aby włączyć zaimportowane polecenia do uruchamiania w poprawnie skonfigurowanej sesji, utwórz sesję PSSession z opcjami, które chcesz wykonać przed zaimportowaniem modułu.

Aby znaleźć polecenia do wyeksportowania, Export-PSSession użyj Invoke-Command polecenia cmdlet , aby uruchomić Get-Command polecenie w programie PSSession. Aby pobrać i zapisać dane formatowania dla poleceń, używa poleceń Get-FormatData cmdlet i Export-FormatData . Podczas uruchamiania polecenia mogą być wyświetlane komunikaty o błędach z Invoke-Commandpoleceń , Get-Command, Get-FormatDatai Export-FormatData .Export-PSSession Export-PSSession Ponadto nie można wyeksportować poleceń z sesji, która nie zawiera Get-Commandpoleceń cmdlet , Get-FormatData, Select-Objecti Get-Help .

Export-PSSessionWrite-Progress używa polecenia cmdlet do wyświetlania postępu polecenia . Może zostać wyświetlony pasek postępu, gdy polecenie jest uruchomione.

Wyeksportowane polecenia mają takie same ograniczenia jak inne polecenia zdalne, w tym brak możliwości uruchomienia programu za pomocą interfejsu użytkownika, na przykład Notatnik.

Ponieważ profile programu PowerShell nie są uruchamiane w programie PSSessions, polecenia, które dodaje profil do sesji, nie są dostępne dla Export-PSSessionprogramu . Aby wyeksportować polecenia z profilu, użyj Invoke-Command polecenia , aby uruchomić profil w programie PSSession ręcznie przed wyeksportowaniem poleceń.

Utworzony moduł Export-PSSession może zawierać plik formatowania, nawet jeśli polecenie nie importuje danych formatowania. Jeśli polecenie nie importuje danych formatowania, żadne utworzone pliki formatowania nie będą zawierać danych formatowania.