Bagikan melalui


Export-PSSession

Mengekspor perintah dari sesi lain dan menyimpannya dalam modul PowerShell.

Sintaks

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

Deskripsi

cmdlet Export-PSSession 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 cmdlet Import-Module.

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 cmdlet New-PSSession untuk membuat PSSession yang memiliki perintah yang ingin Anda ekspor. Kemudian gunakan cmdlet Export-PSSession untuk mengekspor perintah.

Untuk mencegah konflik nama perintah, default untuk 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.

Cmdlet Export-PSSession 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 variabel $S. Perintah Export-PSSession mengekspor perintah variabel $S dan memformat data ke dalam modul Server01.

Contoh 2: Mengekspor perintah Dapatkan dan Atur

Contoh ini mengekspor semua perintah Get dan Set dari server.

$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

Perintah ini mengekspor perintah Get dan Set dari snap-in Microsoft Exchange Server di komputer jarak jauh ke modul Exchange di direktori $PSHOME\Modules di komputer lokal. Menempatkan modul di direktori $PSHOME\Modules 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.

$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

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

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

cmdlet Get-Help mendapatkan bantuan untuk cmdlet yang namanya dimulai dengan Uji. Setelah perintah dalam modul ditambahkan ke sesi saat ini, Anda dapat menggunakan cmdlet Get-Help dan Get-Command untuk mempelajari tentang perintah yang diimpor. Cmdlet Test-Files diekspor dari komputer Server01 dan ditambahkan ke sesi. Cmdlet Test-Files 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 Export-PSSession ini mengekspor semua perintah dan semua data pemformatan dari PSSession dalam variabel $S 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. Gunakan cmdlet New-PSSession 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

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

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

Cmdlet New-PSSession membuat PSSession baru yang tersambung ke komputer Server01. Parameter SessionOption menggunakan objek yang disimpan di $Options. cmdlet Import-Module 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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-ArgumentList

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

Misalnya, untuk mengekspor varian perintah Get-Item di drive sertifikat (Cert:) di PSSession di $S, ketik Export-PSSession -Session $S -Command Get-Item -ArgumentList Cert:.

Properti parameter

Jenis:

Object[]

Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:Argumen

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Certificate

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

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

Properti parameter

Jenis:X509Certificate2
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-CommandName

Mengekspor hanya perintah dengan nama atau pola nama yang ditentukan. Kartu liar 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.

Properti parameter

Jenis:

String[]

Nilai default:All commands in the session.
Mendukung wildcard:True
DontShow:False
Alias:Nama

Kumpulan parameter

(All)
Position:2
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-CommandType

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

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 PATH ($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 PATH ($Env:PATH).
  • Filter dan Function: Semua fungsi PowerShell.
  • Script File skrip dapat diakses 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.

Properti parameter

Jenis:CommandTypes
Nilai default:All commands in the session.
Nilai yang diterima:Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow
Mendukung wildcard:False
DontShow:False
Alias:Tipe

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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: Mengenkripsi dalam format UTF-16 menggunakan urutan byte big-endian.
  • bigendianutf32: Mengenkode dalam format UTF-32 menggunakan urutan byte big-endian.
  • oem: Menggunakan pengkodean default untuk program MS-DOS dan program konsol.
  • unicode: Mengode 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 ) atau nama string halaman kode terdaftar (seperti ). Untuk informasi selengkapnya, lihat dokumentasi .NET untuk Encoding.CodePage.

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

Nota

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

Properti parameter

Jenis:Encoding
Nilai default:UTF8NoBOM
Nilai yang diterima:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Force

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

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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 perintah Get-FormatData 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.

Properti parameter

Jenis:

String[]

Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:3
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.
  • Ini juga Diperlukan 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.

Properti parameter

Jenis:

ModuleSpecification[]

Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:

String[]

Nilai default:All commands in the session.
Mendukung wildcard:False
DontShow:False
Alias:PSSnapin

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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 buat sudah ada, perintah gagal. Untuk menimpa file yang ada, gunakan parameter Force.

Properti parameter

Jenis:String
Nilai default:$HOME\Documents\WindowsPowerShell\Modules
Mendukung wildcard:False
DontShow:False
Alias:PSPath, ModuleName

Kumpulan parameter

(All)
Position:1
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Session

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

Properti parameter

Jenis:PSSession
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:0
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

CommonParameters

Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.

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 lebih lanjut, 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 variabel preferensi $PSSessionOption atau dengan menggunakan parameter SessionOption dari cmdlet New-PSSession, Enter-PSSession, atau 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 menggunakan cmdlet Invoke-Command untuk menjalankan perintah Get-Command di PSSession. Untuk mendapatkan dan menyimpan data pemformatan untuk perintah, ia menggunakan cmdlet Get-FormatData dan Export-FormatData. Anda mungkin melihat pesan kesalahan dari Invoke-Command, Get-Command, Get-FormatData, dan Export-FormatData saat Anda menjalankan perintah Export-PSSession. Selain itu, Export-PSSession tidak dapat mengekspor perintah dari sesi yang tidak menyertakan cmdlet Get-Command, Get-FormatData, Select-Object, dan Get-Help.

Export-PSSession menggunakan cmdlet Write-Progress 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 perintah Invoke-Command untuk menjalankan profil di PSSession secara manual sebelum mengekspor perintah.

Modul yang Export-PSSession buat 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.