Export-PSSession

Mengekspor perintah dari sesi lain dan menyimpannya dalam modul PowerShell.

Sintaks

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

Deskripsi

Export-PSSession Cmdlet mendapatkan cmdlet, fungsi, alias, dan jenis perintah lainnya dari sesi PowerShell lain (PSSession) di komputer lokal atau jarak jauh dan menyimpannya dalam modul PowerShell. Untuk menambahkan perintah dari modul ke sesi saat ini, gunakan Import-Module cmdlet.

Tidak seperti Import-PSSession, yang mengimpor perintah dari PSSession lain ke sesi saat ini, Export-PSSession menyimpan perintah dalam modul. Perintah tidak diimpor ke sesi saat ini.

Untuk mengekspor perintah, gunakan New-PSSession cmdlet untuk membuat PSSession yang memiliki perintah yang ingin Anda ekspor. Kemudian gunakan Export-PSSession cmdlet untuk mengekspor perintah.

Untuk mencegah konflik nama perintah, defaultnya Export-PSSession adalah mengekspor semua perintah, kecuali untuk perintah yang ada di sesi saat ini. Anda dapat menggunakan parameter CommandName untuk menentukan perintah yang akan diekspor.

Export-PSSession Cmdlet menggunakan fitur jarak jauh implisit PowerShell. Saat Anda mengimpor perintah ke sesi saat ini, perintah berjalan secara implisit dalam sesi asli atau dalam sesi serupa pada komputer asal.

Contoh

Contoh 1: Mengekspor perintah dari PSSession

Contoh ini membuat PSSession baru dari komputer lokal ke komputer Server01. Semua perintah, kecuali yang ada dalam sesi saat ini, diekspor ke modul bernama Server01 di komputer lokal. Ekspor menyertakan data pemformatan untuk perintah.

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

Perintah New-PSSession membuat PSSession di komputer Server01. PSSession disimpan dalam $S variabel . Perintah Export-PSSession mengekspor $S perintah variabel dan memformat data ke dalam modul Server01.

Contoh 2: Mengekspor perintah Dapatkan dan Atur

Contoh ini mengekspor semua Get perintah dan Set dari server.

$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

Perintah ini mengekspor Get perintah dan Set dari Microsoft Server Exchange snap-in di komputer jarak jauh ke modul Exchange di $PSHOME\Modules direktori di komputer lokal. Menempatkan modul di $PSHOME\Modules direktori membuatnya dapat diakses oleh semua pengguna komputer.

Contoh 3: Mengekspor perintah dari komputer jarak jauh

Contoh ini mengekspor cmdlet dari PSSession di komputer jarak jauh dan menyimpannya dalam modul di komputer lokal. Cmdlet dari modul ditambahkan ke sesi saat ini sehingga dapat digunakan.

$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

Perintah New-PSSession membuat PSSession di komputer Server01 dan menyimpannya dalam $S variabel. Perintah Export-PSSession mengekspor cmdlet yang namanya dimulai dengan Uji dari PSSession ke $S modul TestCmdlets di komputer lokal.

Remove-PSSession Cmdlet menghapus PSSession dari $S sesi saat ini. Perintah ini menunjukkan bahwa PSSession tidak perlu aktif untuk menggunakan perintah yang diimpor dari sesi. Import-Module Cmdlet menambahkan cmdlet dalam modul TestCmdlets ke sesi saat ini. Perintah dapat dijalankan dalam sesi apa pun kapan saja.

Get-Help Cmdlet mendapatkan bantuan untuk cmdlet yang namanya dimulai dengan Test. Setelah perintah dalam modul ditambahkan ke sesi saat ini, Anda dapat menggunakan Get-Help cmdlet dan Get-Command untuk mempelajari tentang perintah yang diimpor. Test-Files Cmdlet diekspor dari komputer Server01 dan ditambahkan ke sesi. Test-Files Cmdlet berjalan dalam sesi jarak jauh pada komputer tempat perintah diimpor. PowerShell membuat sesi dari informasi yang disimpan dalam modul TestCmdlets.

Contoh 4: Perintah ekspor dan kloning dalam sesi saat ini

Contoh ini mengekspor perintah yang disimpan dalam variabel ke dalam sesi saat ini.

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

Perintah ini Export-PSSession mengekspor semua perintah dan semua data pemformatan dari PSSession dalam $S variabel ke dalam sesi saat ini. Parameter AllowClobber menyertakan perintah dengan nama yang sama dengan perintah dalam sesi saat ini.

Contoh 5: Mengekspor perintah dari PSSession tertutup

Contoh ini menunjukkan cara menjalankan perintah yang diekspor dengan opsi khusus saat PSSession yang membuat perintah yang diekspor ditutup.

Jika sesi jarak jauh asli ditutup ketika modul diimpor, modul akan menggunakan sesi jarak jauh terbuka yang terhubung ke komputer asal. Jika tidak ada sesi saat ini ke komputer asal, modul akan membangun kembali sesi.

Untuk menjalankan perintah yang diekspor dengan opsi khusus dalam sesi jarak jauh, Anda harus membuat sesi jarak jauh dengan opsi tersebut sebelum mengimpor modul. New-PSSession Gunakan cmdlet dengan parameter 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

New-PSSessionOption Cmdlet membuat objek PSSessionOption, dan menyimpan objek dalam $Options variabel. Perintah New-PSSession membuat PSSession di komputer Server01. Parameter SessionOption menggunakan objek yang disimpan di $Options. Sesi disimpan dalam $S variabel.

Export-PSSession Cmdlet mengekspor perintah dari PSSession $S ke modul Server01. Remove-PSSession Cmdlet menghapus PSSession dalam $S variabel.

New-PSSession Cmdlet membuat PSSession baru yang tersambung ke komputer Server01. Parameter SessionOption menggunakan objek yang disimpan di $Options. Import-Module Cmdlet mengimpor perintah dari modul Server01. Perintah dalam modul dijalankan di PSSession di komputer Server01.

Parameter

-AllowClobber

Mengekspor perintah yang ditentukan, bahkan jika mereka memiliki nama yang sama dengan perintah dalam sesi saat ini.

Jika Anda mengekspor perintah dengan nama yang sama dengan perintah dalam sesi saat ini, perintah yang diekspor menyembunyikan atau mengganti perintah asli. Untuk informasi selengkapnya, lihat about_Command_Precedence.

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

-ArgumentList

Mengekspor varian perintah yang dihasilkan dari menggunakan argumen yang ditentukan (nilai parameter).

Misalnya, untuk mengekspor varian Get-Item perintah dalam drive sertifikat (Cert:) di PSSession di $S, ketik 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

Menentukan sertifikat klien yang digunakan untuk menandatangani file format (*. Format.ps1xml) atau file modul skrip (.psm1) dalam modul yang Export-PSSession dibuat. Masukkan variabel yang berisi sertifikat atau perintah atau ekspresi yang mendapatkan sertifikat.

Untuk menemukan sertifikat, gunakan Get-PfxCertificate cmdlet atau gunakan Get-ChildItem cmdlet di drive Sertifikat (Cert:). Jika sertifikat tidak valid atau tidak memiliki otoritas yang memadai, perintah gagal.

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

-CommandName

Mengekspor hanya perintah dengan nama atau pola nama yang ditentukan. Kartubebas diizinkan. Gunakan CommandName atau aliasnya, Nama.

Secara default, Export-PSSession mengekspor semua perintah dari PSSession kecuali untuk perintah yang memiliki nama yang sama dengan perintah dalam sesi saat ini. Ini mencegah perintah disembunyikan atau digantikan oleh perintah dalam sesi saat ini. Untuk mengekspor semua perintah, bahkan perintah yang menyembunyikan atau mengganti perintah lain, gunakan parameter AllowClobber .

Jika Anda menggunakan parameter CommandName , file pemformatan untuk perintah tidak diekspor kecuali Anda menggunakan parameter FormatTypeName . Demikian pula, jika Anda menggunakan parameter FormatTypeName , tidak ada perintah yang diekspor kecuali Anda menggunakan parameter 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

Mengekspor hanya jenis objek perintah yang ditentukan. Gunakan CommandType atau aliasnya, Ketik.

Nilai yang dapat diterima untuk parameter ini adalah sebagai berikut:

  • Alias: Semua alias PowerShell dalam sesi saat ini.
  • All: Semua jenis perintah. Ini setara dengan Get-Command -Name *.
  • Application: Semua file selain file PowerShell di jalur yang tercantum dalam variabel lingkungan Jalur ($env:path), termasuk file .txt, .exe, dan .dll.
  • Cmdlet: Cmdlet dalam sesi saat ini. Cmdlet adalah default.
  • Configuration: Konfigurasi PowerShell. Untuk informasi selengkapnya, lihat about_Session_Configurations.
  • ExternalScript: Semua file .ps1 di jalur yang tercantum dalam variabel lingkungan Jalur ($env:path).
  • Filter dan Function: Semua fungsi PowerShell.
  • Script Blok skrip dalam sesi saat ini.
  • Workflow Alur kerja PowerShell. Untuk informasi selengkapnya, lihat about_Workflows.

Nilai-nilai ini didefinisikan sebagai enumerasi berbasis bendera. Anda dapat menggabungkan beberapa nilai bersama-sama untuk mengatur beberapa bendera menggunakan parameter ini. Nilai dapat diteruskan ke parameter CommandType sebagai array nilai atau sebagai string yang dipisahkan koma dari nilai tersebut. Cmdlet akan menggabungkan nilai menggunakan operasi biner-OR. Meneruskan nilai sebagai array adalah opsi paling sederhana dan juga memungkinkan Anda menggunakan penyelesaian tab pada nilai.

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

Menentukan jenis pengodean untuk file target. Nilai defaultnya adalah utf8NoBOM.

Nilai yang dapat diterima untuk parameter ini adalah sebagai berikut:

  • ascii: Menggunakan pengodean untuk set karakter ASCII (7-bit).
  • ansi: Menggunakan pengodean untuk halaman kode ANSI budaya saat ini. Opsi ini ditambahkan di PowerShell 7.4.
  • bigendianunicode: Mengodekan dalam format UTF-16 menggunakan urutan byte big-endian.
  • bigendianutf32: Mengodekan dalam format UTF-32 menggunakan urutan byte big-endian.
  • oem: Menggunakan pengodean default untuk MS-DOS dan program konsol.
  • unicode: Mengodekan dalam format UTF-16 menggunakan urutan byte little-endian.
  • utf7: Mengodekan dalam format UTF-7.
  • utf8: Mengodekan dalam format UTF-8.
  • utf8BOM: Mengodekan dalam format UTF-8 dengan Byte Order Mark (BOM)
  • utf8NoBOM: Mengodekan dalam format UTF-8 tanpa Byte Order Mark (BOM)
  • utf32: Mengodekan dalam format UTF-32.

Dimulai dengan PowerShell 6.2, parameter Pengodean juga memungkinkan ID numerik halaman kode terdaftar (seperti -Encoding 1251) atau nama string halaman kode terdaftar (seperti -Encoding "windows-1251"). Untuk informasi selengkapnya, lihat dokumentasi .NET untuk Encoding.CodePage.

Dimulai dengan PowerShell 7.4, Anda dapat menggunakan Ansi nilai untuk parameter Pengodean untuk meneruskan ID numerik untuk halaman kode ANSI budaya saat ini tanpa harus menentukannya secara manual.

Catatan

UTF-7* tidak lagi disarankan untuk digunakan. Pada PowerShell 7.1, peringatan ditulis jika Anda menentukan utf7 untuk parameter Pengodean .

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

Menimpa satu atau beberapa file output yang ada, bahkan jika file memiliki atribut baca-saja.

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

-FormatTypeName

Mengekspor instruksi pemformatan hanya untuk jenis Microsoft .NET Framework yang ditentukan. Masukkan nama jenis. Secara default, Export-PSSession mengekspor instruksi pemformatan untuk semua jenis .NET Framework yang tidak ada di namespace System.Management.Automation .

Nilai parameter ini harus berupa nama jenis yang dikembalikan oleh Get-FormatData perintah dalam sesi tempat perintah diimpor. Untuk mendapatkan semua data pemformatan dalam sesi jarak jauh, ketik *.

Jika Anda menggunakan parameter FormatTypeName , tidak ada perintah yang diekspor kecuali Anda menggunakan parameter CommandName .

Jika Anda menggunakan parameter CommandName , file pemformatan untuk perintah tidak diekspor kecuali Anda menggunakan parameter FormatTypeName .

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

-FullyQualifiedModule

Nilainya dapat berupa nama modul, spesifikasi modul lengkap, atau jalur ke file modul.

Ketika nilai adalah jalur, jalur dapat sepenuhnya memenuhi syarat atau relatif. Jalur relatif diselesaikan relatif terhadap skrip yang berisi pernyataan penggunaan.

Saat nilainya adalah spesifikasi nama atau modul, PowerShell mencari PSModulePath untuk modul yang ditentukan.

Spesifikasi modul adalah hashtable yang memiliki kunci berikut.

  • ModuleName - Diperlukan Menentukan nama modul.
  • GUID - Opsional Menentukan GUID modul.
  • Diperlukan juga untuk menentukan setidaknya salah satu dari tiga kunci di bawah ini.
    • ModuleVersion - Menentukan versi minimum modul yang dapat diterima.
    • MaximumVersion - Menentukan versi maksimum modul yang dapat diterima.
    • RequiredVersion - Menentukan versi modul yang tepat dan diperlukan. Ini tidak dapat digunakan dengan kunci Versi lainnya.

Anda tidak dapat menentukan parameter FullyQualifiedModule dalam perintah yang sama dengan parameter Modul . dua parameter saling eksklusif.

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

-Module

Mengekspor hanya perintah dalam snap-in dan modul PowerShell yang ditentukan. Masukkan nama snap-in dan modul. Kartubebas tidak diizinkan.

Untuk informasi selengkapnya, lihat Import-Module dan 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

Menentukan jalur dan nama opsional untuk modul yang dibuat oleh Export-PSSession. Jalur default adalah $HOME\Documents\WindowsPowerShell\Modules. Parameter ini diperlukan.

Jika subdirektori modul atau file apa pun yang Export-PSSession membuat sudah ada, perintah gagal. Untuk menimpa file yang ada, gunakan parameter Paksa .

Type:String
Aliases:PSPath, ModuleName
Position:1
Default value:$HOME\Documents\WindowsPowerShell\Modules
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Session

Menentukan PSSession tempat perintah diekspor. Masukkan variabel yang berisi objek sesi atau perintah yang mendapatkan objek sesi, seperti Get-PSSession perintah. Parameter ini diperlukan.

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

Input

None

Anda tidak dapat menyalurkan objek ke cmdlet ini.

Output

FileInfo

Cmdlet ini mengembalikan daftar file yang terdiri dari modul yang dibuatnya.

Catatan

Export-PSSession bergantung pada infrastruktur jarak jauh PowerShell. Untuk menggunakan cmdlet ini, komputer harus dikonfigurasi untuk jarak jauh. Untuk informasi selengkapnya, lihat about_Remote_Requirements.

Anda tidak dapat menggunakan Export-PSSession untuk mengekspor penyedia PowerShell.

Perintah yang diekspor berjalan secara implisit dalam PSSession tempat perintah tersebut diekspor. Detail menjalankan perintah dari jarak jauh ditangani sepenuhnya oleh PowerShell. Anda dapat menjalankan perintah yang diekspor sama seperti anda akan menjalankan perintah lokal.

Export-ModuleMember menangkap dan menyimpan informasi tentang PSSession dalam modul yang diekspornya. Jika PSSession tempat perintah diekspor ditutup saat Anda mengimpor modul, dan tidak ada PSSessions aktif ke komputer yang sama, perintah dalam modul mencoba membuat ulang PSSession. Jika upaya untuk membuat ulang PSSession gagal, perintah yang diekspor tidak akan berjalan.

Informasi sesi yang Export-ModuleMember menangkap dan menyimpan dalam modul tidak menyertakan opsi sesi, seperti yang Anda tentukan dalam $PSSessionOption variabel preferensi atau dengan menggunakan parameter SessionOption dari New-PSSessioncmdlet , , Enter-PSSessionatau Invoke-Command . Jika PSSession asli ditutup saat Anda mengimpor modul, modul akan menggunakan PSSession lain ke komputer yang sama, jika tersedia. Untuk mengaktifkan perintah yang diimpor agar berjalan dalam sesi yang dikonfigurasi dengan benar, buat PSSession dengan opsi yang Anda inginkan sebelum mengimpor modul.

Untuk menemukan perintah yang akan diekspor, Export-PSSession gunakan Invoke-Command cmdlet untuk menjalankan Get-Command perintah di PSSession. Untuk mendapatkan dan menyimpan data pemformatan untuk perintah, ia menggunakan Get-FormatData cmdlet dan Export-FormatData . Anda mungkin melihat pesan kesalahan dari Invoke-Command, Get-Command, Get-FormatData, dan Export-FormatData saat Anda menjalankan Export-PSSession perintah. Selain itu, Export-PSSession tidak dapat mengekspor perintah dari sesi yang tidak menyertakan Get-Commandcmdlet , , Get-FormatDataSelect-Object, dan Get-Help .

Export-PSSessionWrite-Progress menggunakan cmdlet untuk menampilkan kemajuan perintah. Anda mungkin melihat bilah kemajuan saat perintah sedang berjalan.

Perintah yang diekspor memiliki batasan yang sama dengan perintah jarak jauh lainnya, termasuk ketidakmampuan untuk memulai program dengan antarmuka pengguna, seperti Notepad.

Karena profil PowerShell tidak dijalankan di PSSessions, perintah yang ditambahkan profil ke sesi tidak tersedia untuk Export-PSSession. Untuk mengekspor perintah dari profil, gunakan Invoke-Command perintah untuk menjalankan profil di PSSession secara manual sebelum mengekspor perintah.

Modul yang Export-PSSession dibuat mungkin menyertakan file pemformatan, meskipun perintah tidak mengimpor data pemformatan. Jika perintah tidak mengimpor data pemformatan, file pemformatan apa pun yang dibuat tidak akan berisi data pemformatan.