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 cmdlet Export-PSSession
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 polecenia cmdlet Import-Module
.
W przeciwieństwie do Import-PSSession
, który 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 polecenia cmdlet New-PSSession
, 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ą dla Export-PSSession
jest wyeksportowanie wszystkich poleceń, z wyjątkiem poleceń, które istnieją w bieżącej sesji. Aby określić polecenia do wyeksportowania, można użyć parametru CommandName.
Polecenie cmdlet Export-PSSession
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 $S
zmiennej i formatuje dane do modułu Server01.
Przykład 2. Eksportowanie poleceń Get and Set
W tym przykładzie eksportuje wszystkie polecenia Get
i Set
z serwera.
$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
Te polecenia eksportują polecenia Get
i Set
z przystawki programu Microsoft Exchange Server na komputerze zdalnym do modułu programu Exchange w katalogu $PSHOME\Modules
na komputerze lokalnym.
Umieszczenie modułu w katalogu $PSHOME\Modules
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ć.
$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
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 testu z programu PSSession w $S
do modułu TestCmdlets na komputerze lokalnym.
Polecenie cmdlet Remove-PSSession
usuwa program PSSession w $S
z bieżącej sesji. To polecenie pokazuje, że sesja PSSession nie musi być aktywna, aby używać poleceń zaimportowanych z sesji. Polecenie cmdlet Import-Module
dodaje polecenia cmdlet w module TestCmdlets do bieżącej sesji. Polecenie można uruchomić w dowolnej sesji w dowolnym momencie.
Polecenie cmdlet Get-Help
otrzymuje pomoc dotyczącą poleceń cmdlet, których nazwy zaczynają się od testu. Po dodaniu poleceń w module do bieżącej sesji można użyć poleceń cmdlet Get-Help
i Get-Command
, aby dowiedzieć się więcej o zaimportowanych poleceniach. Polecenie cmdlet Test-Files
zostało wyeksportowane z komputera Server01 i dodane do sesji. Polecenie cmdlet Test-Files
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 polecenie Export-PSSession
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. Użyj polecenia cmdlet New-PSSession
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 cmdlet New-PSSessionOption
tworzy obiekt PSSessionOption i zapisuje obiekt w zmiennej $Options
. Polecenie New-PSSession
tworzy pssession na komputerze Server01.
Parametr SessionOption używa obiektu przechowywanego w $Options
. Sesja jest przechowywana w zmiennej $S
.
Polecenie cmdlet Export-PSSession
eksportuje polecenia z programu PSSession w $S
do modułu Server01.
Polecenie cmdlet Remove-PSSession
usuwa plik PSSession w zmiennej $S
.
Polecenie cmdlet New-PSSession
tworzy nową konsolę PSSession łączącą się z komputerem Server01. Parametr SessionOption używa obiektu przechowywanego w $Options
. Polecenie cmdlet Import-Module
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.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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 polecenia Get-Item
na dysku certyfikatu (Cert:) w programie PSSession w $S
, wpisz Export-PSSession -Session $S -Command Get-Item -ArgumentList cert:
.
Typ: | Object[] |
Aliasy: | Args |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Certificate
Określa certyfikat klienta używany do podpisywania plików formatu (*). Format.ps1xml) lub pliki modułów skryptu (psm1) w module, który Export-PSSession
tworzy. Wprowadź zmienną zawierającą certyfikat lub polecenie lub wyrażenie, które pobiera certyfikat.
Aby znaleźć certyfikat, użyj polecenia cmdlet Get-PfxCertificate
lub użyj polecenia cmdlet Get-ChildItem
na dysku Certyfikat (Cert:). Jeśli certyfikat jest nieprawidłowy lub nie ma wystarczającego urzędu, polecenie kończy się niepowodzeniem.
Typ: | X509Certificate2 |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-CommandName
Eksportuje tylko polecenia z określonymi nazwami lub wzorcami nazw. Dozwolone są symbole wieloznaczne. Użyj CommandName lub aliasu Nazwa.
Domyślnie Export-PSSession
eksportuje wszystkie polecenia z psSession z wyjątkiem poleceń o takich samych nazwach 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 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.
Typ: | String[] |
Aliasy: | Name |
Position: | 2 |
Domyślna wartość: | All commands in the session. |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | True |
-CommandType
Eksportuje tylko określone typy obiektów poleceń. Użyj CommandType lub jego aliasu, typ.
Dopuszczalne wartości tego parametru są następujące:
-
Alias
: wszystkie aliasy programu PowerShell w bieżącej sesji. -
All
: wszystkie typy poleceń. Jest to odpowiednikGet-Command -Name *
. -
Application
: wszystkie pliki inne niż pliki programu PowerShell w ścieżkach wymienionych w zmiennej środowiskowej Path ($env:path
), w tym .txt, .exei .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
iFunction
: 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 tablicy 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.
Typ: | CommandTypes |
Aliasy: | Type |
Dopuszczalne wartości: | Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow |
Position: | Named |
Domyślna wartość: | All commands in the session. |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Encoding
Określa typ kodowania dla pliku docelowego. Wartość domyślna to utf8NoBOM
.
Dopuszczalne wartości tego parametru są następujące:
-
ascii
: używa kodowania zestawu znaków ASCII (7-bitowych). -
ansi
: używa kodowania dla strony kodowej ANSI bieżącej kultury. Ta opcja została dodana w programie PowerShell 7.4. -
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ą znacznika kolejności bajtów (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, Kodowanie parametr umożliwia również numeryczne identyfikatory zarejestrowanych stron kodu (na przykład -Encoding 1251
) lub nazwy ciągów zarejestrowanych stron kodu (na przykład -Encoding "windows-1251"
). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą Encoding.CodePage.
Począwszy od programu PowerShell 7.4, można użyć wartości Ansi
parametru kodowania, aby przekazać identyfikator liczbowy dla strony kodowej ANSI bieżącej kultury bez konieczności ręcznego określania go.
Nuta
UTF-7 * nie jest już zalecane. Zgodnie z programem PowerShell 7.1 ostrzeżenie jest zapisywane, jeśli określisz utf7
dla parametru kodowania.
Typ: | Encoding |
Dopuszczalne wartości: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Domyślna wartość: | UTF8NoBOM |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Force
Zastępuje co najmniej jeden istniejący plik wyjściowy, nawet jeśli plik ma atrybut tylko do odczytu.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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 polecenie Get-FormatData
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 poleceń nie zostaną wyeksportowane, chyba że zostanie użyty parametr FormatTypeName.
Typ: | String[] |
Position: | 3 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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 PSModulePath dla określonego modułu.
Specyfikacja modułu to tabela skrótu zawierająca następujące klucze.
-
ModuleName
- Wymagane Określa nazwę modułu. -
GUID
- Opcjonalne Określa identyfikator GUID modułu. - Jest to również wymagane, aby określić co najmniej jeden 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 Module. te dwa parametry wykluczają się wzajemnie.
Typ: | ModuleSpecification[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | String[] |
Aliasy: | PSSnapin |
Position: | Named |
Domyślna wartość: | All commands in the session. |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-OutputModule
Określa opcjonalną ścieżkę i nazwę modułu utworzonego przez Export-PSSession
. Ścieżka domyślna 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.
Typ: | String |
Aliasy: | PSPath, ModuleName |
Position: | 1 |
Domyślna wartość: | $HOME\Documents\WindowsPowerShell\Modules |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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 polecenie Get-PSSession
. Ten parametr jest wymagany.
Typ: | PSSession |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
None
Nie można potokować obiektów do tego polecenia cmdlet.
Dane wyjściowe
To polecenie cmdlet zwraca listę plików składających się na utworzony moduł.
Uwagi
Export-PSSession
opiera się na infrastrukturze 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
do wyeksportowania dostawcy 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
przechwytuje i zapisuje w module, nie zawierają opcji sesji, takich jak te określone w zmiennej preferencji $PSSessionOption
lub przy użyciu parametru SessionOptionNew-PSSession
, Enter-PSSession
lub Invoke-Command
poleceń cmdlet. 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żywa polecenia cmdlet Invoke-Command
do uruchomienia polecenia Get-Command
w programie PSSession. Aby pobrać i zapisać dane formatowania dla poleceń, używa Get-FormatData
i Export-FormatData
poleceń cmdlet. Podczas uruchamiania polecenia Invoke-Command
mogą zostać wyświetlone komunikaty o błędach z Get-Command
, Get-FormatData
, Export-FormatData
i Export-PSSession
. Ponadto Export-PSSession
nie może eksportować poleceń z sesji, która nie zawiera poleceń cmdlet Get-Command
, Get-FormatData
, Select-Object
i Get-Help
.
Export-PSSession
używa polecenia cmdlet Write-Progress
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, takiego jak Notatnik.
Ponieważ profile programu PowerShell nie są uruchamiane w programie PSSessions, polecenia, które dodaje profil do sesji, nie są dostępne dla Export-PSSession
. Aby wyeksportować polecenia z profilu, przed wyeksportowaniem poleceń użyj polecenia Invoke-Command
, aby uruchomić profil w programie PSSession ręcznie.
Moduł, który Export-PSSession
tworzy, 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.