Receive-PSSession
Mendapatkan hasil perintah dalam sesi yang terputus
Sintaks
Receive-PSSession
[-Session] <PSSession>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-Id] <Int32>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ComputerName] <String>
[-ApplicationName <String>]
[-ConfigurationName <String>]
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ComputerName] <String>
[-ApplicationName <String>]
[-ConfigurationName <String>]
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri>
[-AllowRedirection]
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri>
[-AllowRedirection]
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Deskripsi
Cmdlet ini hanya tersedia di platform Windows.
Receive-PSSession
Cmdlet mendapatkan hasil perintah yang berjalan dalam sesi PowerShell (PSSession) yang terputus. Jika sesi saat ini tersambung, Receive-PSSession
mendapatkan hasil perintah yang berjalan saat sesi terputus. Jika sesi masih terputus, Receive-PSSession
tersambung ke sesi, melanjutkan perintah apa pun yang ditangguhkan, dan mendapatkan hasil perintah yang berjalan dalam sesi.
Cmdlet ini diperkenalkan di PowerShell 3.0.
Anda dapat menggunakan Receive-PSSession
selain atau alih-alih Connect-PSSession
perintah.
Receive-PSSession
dapat tersambung ke sesi terputus atau tersambung kembali yang dimulai di sesi lain atau pada komputer lain.
Receive-PSSession
bekerja pada PSSessions yang terputus dengan sengaja menggunakan Disconnect-PSSession
cmdlet atau Invoke-Command
parameter InDisconnectedSession . Atau terputus secara tidak sengaja oleh gangguan jaringan.
Jika Anda menggunakan Receive-PSSession
cmdlet untuk menyambungkan ke sesi di mana tidak ada perintah yang berjalan atau ditangguhkan, Receive-PSSession
tersambung ke sesi, tetapi tidak mengembalikan output atau kesalahan.
Untuk informasi selengkapnya tentang fitur Sesi Terputus, lihat about_Remote_Disconnected_Sessions.
Beberapa contoh menggunakan splatting untuk mengurangi panjang garis dan meningkatkan keterbacaan. Untuk informasi selengkapnya, lihat about_Splatting.
Contoh
Contoh 1: Menyambungkan ke PSSession
Contoh ini tersambung ke sesi di komputer jarak jauh dan mendapatkan hasil perintah yang berjalan dalam sesi.
Receive-PSSession -ComputerName Server01 -Name ITTask
Receive-PSSession
menentukan komputer jarak jauh dengan parameter ComputerName. Parameter Nama mengidentifikasi sesi ITTask di komputer Server01. Contoh mendapatkan hasil perintah yang berjalan dalam sesi ITTask.
Karena perintah tidak menggunakan parameter OutTarget , hasilnya muncul di baris perintah.
Contoh 2: Dapatkan hasil semua perintah pada sesi yang terputus
Contoh ini mendapatkan hasil dari semua perintah yang berjalan di semua sesi yang terputus pada dua komputer jarak jauh.
Jika ada sesi yang tidak terputus atau tidak menjalankan perintah, Receive-PSSession
tidak tersambung ke sesi dan tidak mengembalikan output atau kesalahan apa pun.
Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession
Get-PSSession
menggunakan parameter ComputerName untuk menentukan komputer jarak jauh. Objek dikirim ke alur ke Receive-PSSession
.
Contoh 3: Mendapatkan hasil skrip yang berjalan dalam sesi
Contoh ini menggunakan Receive-PSSession
cmdlet untuk mendapatkan hasil skrip yang berjalan dalam sesi komputer jarak jauh.
$parms = @{
ComputerName = "Server01"
Name = "ITTask"
OutTarget = "Job"
JobName = "ITTaskJob01"
Credential = "Domain01\Admin01"
}
Receive-PSSession @parms
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 ITTaskJob01 Running True Server01
Perintah menggunakan parameter ComputerName dan Name untuk mengidentifikasi sesi yang terputus.
Ini menggunakan parameter OutTarget dengan nilai Pekerjaan untuk diarahkan Receive-PSSession
untuk mengembalikan hasil sebagai pekerjaan. Parameter JobName menentukan nama untuk pekerjaan dalam sesi yang disambungkan kembali.
Parameter Kredensial menjalankan Receive-PSSession
perintah menggunakan izin administrator domain.
Output menunjukkan bahwa Receive-PSSession
mengembalikan hasil sebagai pekerjaan dalam sesi saat ini. Untuk mendapatkan hasil pekerjaan, gunakan Receive-Job
perintah
Contoh 4: Dapatkan hasil setelah pemadaman jaringan
Contoh ini menggunakan Receive-PSSession
cmdlet untuk mendapatkan hasil pekerjaan setelah pemadaman jaringan mengganggu koneksi sesi. PowerShell secara otomatis mencoba menyambungkan kembali sesi sekali per detik selama empat menit ke depan dan meninggalkan upaya hanya jika semua upaya dalam interval empat menit gagal.
PS> $s = New-PSSession -ComputerName Server01 -Name AD -ConfigurationName ADEndpoint
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
8 AD Server01 Opened ADEndpoint Available
PS> Invoke-Command -Session $s -FilePath \\Server12\Scripts\SharedScripts\New-ADResolve.ps1
Running "New-ADResolve.ps1"
# Network outage
# Restart local computer
# Network access is not re-established within 4 minutes
PS> Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backup Server01 Disconnected Microsoft.PowerShell None
8 AD Server01 Disconnected ADEndpoint None
PS> Receive-PSSession -ComputerName Server01 -Name AD -OutTarget Job -JobName AD
Job Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 ADJob Running True Server01
PS> Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backup Server01 Disconnected Microsoft.PowerShell Busy
8 AD Server01 Opened ADEndpoint Available
New-PSSession
Cmdlet membuat sesi di komputer Server01 dan menyimpan sesi dalam $s
variabel. Variabel $s
menampilkan bahwa Status Dibuka dan Ketersediaan Tersedia. Nilai-nilai ini menunjukkan bahwa Anda tersambung ke sesi dan dapat menjalankan perintah dalam sesi.
Invoke-Command
Cmdlet menjalankan skrip dalam sesi dalam $s
variabel. Skrip mulai berjalan dan mengembalikan data, tetapi terjadi pemadaman jaringan yang mengganggu sesi. Pengguna harus keluar dari sesi dan memulai ulang komputer lokal.
Saat komputer dimulai ulang, pengguna memulai PowerShell dan menjalankan Get-PSSession
perintah untuk mendapatkan sesi di komputer Server01. Output menunjukkan bahwa sesi AD masih ada di komputer Server01. Status menunjukkan bahwa sesi AD terputus. Nilai Ketersediaan Tidak Ada, menunjukkan bahwa sesi tidak terhubung ke sesi klien apa pun.
Receive-PSSession
Cmdlet terhubung kembali ke sesi AD dan mendapatkan hasil skrip yang berjalan dalam sesi. Perintah menggunakan parameter OutTarget untuk meminta hasil dalam pekerjaan bernama ADJob. Perintah mengembalikan objek pekerjaan dan output menunjukkan bahwa skrip masih berjalan.
Get-PSSession
Cmdlet digunakan untuk memeriksa status pekerjaan. Output mengonfirmasi bahwa Receive-PSSession
cmdlet terhubung kembali ke sesi AD , yang sekarang terbuka dan tersedia untuk perintah. Dan, skrip melanjutkan eksekusi dan mendapatkan hasil skrip.
Contoh 5: Sambungkan kembali ke sesi yang terputus
Contoh ini menggunakan Receive-PSSession
cmdlet untuk terhubung kembali ke sesi yang sengaja terputus dan mendapatkan hasil pekerjaan yang berjalan dalam sesi.
PS> $parms = @{
InDisconnectedSession = $True
ComputerName = "Server01", "Server02", "Server30"
FilePath = "\\Server12\Scripts\SharedScripts\Get-BugStatus.ps1"
Name = "BugStatus"
SessionOption = @{IdleTimeout = 86400000}
ConfigurationName = "ITTasks"
}
PS> Invoke-Command @parms
PS> Exit
PS> $s = Get-PSSession -ComputerName Server01, Server02, Server30 -Name BugStatus
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
8 ITTask Server02 Disconnected ITTasks None
2 ITTask Server30 Disconnected ITTasks None
PS> $Results = Receive-PSSession -Session $s
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Opened ITTasks Available
8 ITTask Server02 Opened ITTasks Available
2 ITTask Server30 Opened ITTasks Available
PS> $Results
Bug Report - Domain 01
----------------------
ComputerName BugCount LastUpdated
-------------- --------- ------------
Server01 121 Friday, December 30, 2011 5:03:34 PM
Invoke-Command
Cmdlet menjalankan skrip pada tiga komputer jarak jauh. Karena skrip mengumpulkan dan meringkas data dari beberapa database, skrip sering kali membutuhkan waktu yang lama untuk diselesaikan. Perintah menggunakan parameter InDisconnectedSession yang memulai skrip dan kemudian segera memutuskan sesi. Parameter SessionOption memperluas nilai IdleTimeout dari sesi yang terputus. Sesi yang terputus dianggap menganggur sejak terputus. Penting untuk mengatur batas waktu diam cukup lama sehingga perintah dapat diselesaikan dan Anda dapat terhubung kembali ke sesi. Anda dapat mengatur IdleTimeout hanya saat membuat PSSession dan mengubahnya hanya saat Anda memutuskan sambungan darinya. Anda tidak dapat mengubah nilai IdleTimeout saat tersambung ke PSSession atau menerima hasilnya. Setelah menjalankan perintah, pengguna keluar dari PowerShell dan menutup komputer.
Keesokan harinya, pengguna melanjutkan Windows, memulai PowerShell, dan menggunakan Get-PSSession
untuk mendapatkan sesi tempat skrip berjalan. Perintah mengidentifikasi sesi dengan nama komputer, nama sesi, dan nama konfigurasi sesi dan menyimpan sesi dalam $s
variabel. Nilai $s
variabel ditampilkan dan menunjukkan bahwa sesi terputus, tetapi tidak sibuk.
Receive-PSSession
Cmdlet terhubung ke sesi dalam $s
variabel dan mendapatkan hasilnya.
Perintah menyimpan hasil dalam $Results
variabel. Variabel $s
ditampilkan dan menunjukkan bahwa sesi terhubung dan tersedia untuk perintah.
Hasil skrip dalam $Results
variabel ditampilkan di konsol PowerShell. Jika salah satu hasilnya tidak terduga, pengguna dapat menjalankan perintah dalam sesi untuk menyelidiki akar penyebabnya.
Contoh 6: Menjalankan pekerjaan dalam sesi yang terputus
Contoh ini menunjukkan apa yang terjadi pada pekerjaan yang berjalan dalam sesi yang terputus.
PS> $s = New-PSSession -ComputerName Server01 -Name Test
PS> $j = Invoke-Command -Session $s { 1..1500 | Foreach-Object {"Return $_"; sleep 30}} -AsJob
PS> $j
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 Job1 Running True Server01
PS> $s | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server01 Disconnected Microsoft.PowerShell None
PS> $j
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 Job1 Disconnected True Server01
PS> Receive-Job $j -Keep
Return 1
Return 2
PS> $s2 = Connect-PSSession -ComputerName Server01 -Name Test
PS> $j2 = Receive-PSSession -ComputerName Server01 -Name Test
PS> Receive-Job $j
Return 3
Return 4
New-PSSession
Cmdlet membuat sesi Uji di komputer Server01. Perintah menyimpan sesi dalam $s
variabel.
Invoke-Command
Cmdlet menjalankan perintah dalam sesi dalam $s
variabel. Perintah menggunakan parameter AsJob untuk menjalankan perintah sebagai pekerjaan dan membuat objek pekerjaan dalam sesi saat ini.
Perintah mengembalikan objek pekerjaan yang disimpan dalam $j
variabel. Variabel $j
menampilkan objek pekerjaan.
Objek sesi dalam $s
variabel dikirim ke alur Disconnect-PSSession
dan sesi terputus.
Variabel $j
ditampilkan dan menunjukkan efek memutus sambungan objek pekerjaan dalam $j
variabel. Status pekerjaan sekarang Terputus.
Receive-Job
dijalankan pada pekerjaan dalam $j
variabel . Output menunjukkan bahwa pekerjaan mulai mengembalikan output sebelum sesi dan pekerjaan terputus.
Connect-PSSession
Cmdlet dijalankan dalam sesi klien yang sama. Perintah tersambung kembali ke sesi Uji di komputer Server01 dan menyimpan sesi dalam $s2
variabel.
Receive-PSSession
Cmdlet mendapatkan hasil pekerjaan yang berjalan dalam sesi. Karena perintah dijalankan dalam sesi yang sama, Receive-PSSession
mengembalikan hasil sebagai pekerjaan secara default dan menggunakan kembali objek pekerjaan yang sama. Perintah menyimpan pekerjaan dalam $j2
variabel. Receive-Job
Cmdlet mendapatkan hasil pekerjaan dalam $j
variabel .
Parameter
-AllowRedirection
Menunjukkan bahwa cmdlet ini memungkinkan pengalihan koneksi ini ke Pengidentifikasi Sumber Daya Seragam (URI) alternatif.
Saat Anda menggunakan parameter ConnectionURI , tujuan jarak jauh dapat mengembalikan instruksi untuk mengalihkan ke URI yang berbeda. Secara default, PowerShell tidak mengalihkan koneksi, tetapi Anda dapat menggunakan parameter ini untuk mengaktifkannya untuk mengalihkan koneksi.
Anda juga dapat membatasi berapa kali koneksi dialihkan dengan mengubah nilai opsi sesi MaximumConnectionRedirectionCount . Gunakan parameter MaximumRedirection cmdlet New-PSSessionOption
atau atur properti MaximumConnectionRedirectionCount dari $PSSessionOption
variabel preferensi. Nilai defaultnya adalah 5.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-ApplicationName
Menentukan aplikasi. Cmdlet ini hanya terhubung ke sesi yang menggunakan aplikasi yang ditentukan.
Masukkan segmen nama aplikasi dari URI koneksi. Misalnya, dalam URI koneksi berikut, WSMan adalah nama aplikasi: http://localhost:5985/WSMAN
.
Nama aplikasi sesi disimpan di properti Runspace.ConnectionInfo.AppName sesi.
Nilai parameter digunakan untuk memilih dan memfilter sesi. Ini tidak mengubah aplikasi yang digunakan sesi.
Jenis: | String |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | True |
Terima karakter wildcard: | False |
-Authentication
Menentukan mekanisme yang digunakan untuk mengautentikasi kredensial pengguna dalam perintah untuk menyambungkan kembali ke sesi yang terputus. Nilai yang dapat diterima untuk parameter ini adalah:
- Default
- Dasar
- Credssp
- digest
- Kerberos
- Negosiasi
- NegosiasiWithImplicitCredential
Nilai default-nya adalah Default.
Untuk informasi selengkapnya tentang nilai parameter ini, lihat Enumerasi AuthenticationMechanism.
Perhatian
Autentikasi Penyedia Dukungan Keamanan Kredensial (CredSSP), di mana kredensial pengguna diteruskan ke komputer jarak jauh untuk diautentikasi, dirancang untuk perintah yang memerlukan autentikasi pada lebih dari satu sumber daya, seperti mengakses berbagi jaringan jarak jauh. Mekanisme ini meningkatkan risiko keamanan operasi jarak jauh. Jika komputer jarak jauh disusupi, kredensial yang diteruskan ke komputer jarak jauh dapat digunakan untuk mengontrol sesi jaringan.
Jenis: | AuthenticationMechanism |
Nilai yang diterima: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Nilai default: | Default |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-CertificateThumbprint
Menentukan sertifikat kunci publik digital (X509) dari akun pengguna yang memiliki izin untuk menyambungkan ke sesi yang terputus. Masukkan thumbprint sertifikat sertifikat.
Sertifikat digunakan dalam autentikasi berbasis sertifikat klien. Sertifikat hanya dapat dipetakan ke akun pengguna lokal, dan tidak berfungsi dengan akun domain.
Untuk mendapatkan thumbprint sertifikat, gunakan Get-Item
perintah atau Get-ChildItem
di drive PowerShell Cert:
.
Jenis: | String |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-ComputerName
Menentukan komputer tempat sesi terputus disimpan. Sesi disimpan di komputer yang berada di sisi server, atau menerima akhir koneksi. Defaultnya adalah komputer lokal.
Ketik nama NetBIOS, alamat IP, atau nama domain yang sepenuhnya memenuhi syarat (FQDN) dari satu komputer.
Karakter kartubebas tidak diizinkan. Untuk menentukan komputer lokal, ketik nama komputer, titik (.
), $env:COMPUTERNAME
, atau localhost.
Jenis: | String |
Alias: | Cn |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-ConfigurationName
Menentukan nama konfigurasi sesi. Cmdlet ini hanya tersambung ke sesi yang menggunakan konfigurasi sesi yang ditentukan.
Masukkan nama konfigurasi atau URI sumber daya yang sepenuhnya memenuhi syarat untuk konfigurasi sesi. Jika Anda hanya menentukan nama konfigurasi, URI skema berikut akan ditangguhkan sebelumnya:
http://schemas.microsoft.com/powershell
.
Nama konfigurasi sesi disimpan di properti ConfigurationName sesi.
Nilai parameter digunakan untuk memilih dan memfilter sesi. Ini tidak mengubah konfigurasi sesi yang digunakan sesi.
Untuk informasi selengkapnya tentang konfigurasi sesi, lihat about_Session_Configurations.
Jenis: | String |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | True |
Terima karakter wildcard: | False |
-Confirm
Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.
Jenis: | SwitchParameter |
Alias: | cf |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-ConnectionUri
Menentukan URI yang menentukan titik akhir koneksi yang digunakan untuk menyambungkan kembali ke sesi yang terputus.
URI harus sepenuhnya memenuhi syarat. Format string adalah sebagai berikut:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
Nilai defaultnya adalah sebagai berikut:
http://localhost:5985/WSMAN
Jika Anda tidak menentukan URI koneksi, Anda dapat menggunakan parameter UseSSL, ComputerName, Port, dan ApplicationName untuk menentukan nilai URI koneksi.
Nilai yang valid untuk segmen Transportasi URI adalah HTTP dan HTTPS. Jika Anda menentukan URI koneksi dengan segmen Transportasi, tetapi tidak menentukan port, sesi dibuat dengan port standar: 80 untuk HTTP dan 443 untuk HTTPS. Untuk menggunakan port default untuk remoting PowerShell, tentukan port 5985 untuk HTTP atau 5986 untuk HTTPS.
Jika komputer tujuan mengalihkan koneksi ke URI yang berbeda, PowerShell mencegah pengalihan kecuali Anda menggunakan parameter AllowRedirection dalam perintah.
Jenis: | Uri |
Alias: | URI, CU |
Position: | 0 |
Nilai default: | http://localhost:5985/WSMAN |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-Credential
Menentukan akun pengguna yang memiliki izin untuk menyambungkan ke sesi terputus. Defaultnya adalah pengguna saat ini.
Ketik nama pengguna, seperti User01 atau Domain01\User01, atau masukkan objek PSCredential yang dihasilkan oleh Get-Credential
cmdlet. Jika Anda mengetikkan nama pengguna, Anda akan diminta untuk memasukkan kata sandi.
Kredensial disimpan dalam objek PSCredential dan kata sandi disimpan sebagai SecureString.
Catatan
Untuk informasi selengkapnya tentang perlindungan data SecureString , lihat Seberapa aman SecureString?.
Jenis: | PSCredential |
Position: | Named |
Nilai default: | Current user |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Id
Menentukan ID sesi yang terputus. Parameter Id hanya berfungsi ketika sesi yang terputus sebelumnya tersambung ke sesi saat ini.
Parameter ini valid, tetapi tidak efektif, ketika sesi disimpan di komputer lokal, tetapi tidak tersambung ke sesi saat ini.
Jenis: | Int32 |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-InstanceId
Menentukan ID instans sesi yang terputus. ID instans adalah GUID yang secara unik mengidentifikasi PSSession di komputer lokal atau jarak jauh. ID instans disimpan di properti InstanceID dari PSSession.
Jenis: | Guid |
Position: | Named |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
-JobName
Menentukan nama yang mudah diingat untuk pekerjaan yang Receive-PSSession
dikembalikan.
Receive-PSSession
mengembalikan pekerjaan ketika nilai parameter OutTarget adalah Pekerjaan atau pekerjaan yang berjalan dalam sesi terputus dimulai dalam sesi saat ini.
Jika pekerjaan yang berjalan dalam sesi terputus dimulai dalam sesi saat ini, PowerShell menggunakan kembali objek pekerjaan asli dalam sesi dan mengabaikan nilai parameter JobName .
Jika pekerjaan yang berjalan dalam sesi terputus dimulai dalam sesi yang berbeda, PowerShell membuat objek pekerjaan baru. Ini menggunakan nama default, tetapi Anda dapat menggunakan parameter ini untuk mengubah nama.
Jika nilai default atau nilai eksplisit parameter OutTarget bukan Pekerjaan, perintah berhasil, tetapi parameter JobName tidak berpengaruh.
Jenis: | String |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Name
Menentukan nama yang mudah diingat dari sesi yang terputus.
Jenis: | String |
Position: | Named |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
-OutTarget
Menentukan bagaimana hasil sesi dikembalikan. Nilai yang dapat diterima untuk parameter ini adalah:
- Pekerjaan. Mengembalikan hasil secara asinkron dalam objek pekerjaan. Anda dapat menggunakan parameter JobName untuk menentukan nama atau nama baru untuk pekerjaan tersebut.
- Tuan rumah. Mengembalikan hasil ke baris perintah (secara sinkron). Jika perintah sedang dilanjutkan atau hasilnya terdiri dari sejumlah besar objek, respons mungkin tertunda.
Nilai default parameter OutTarget adalah Host. Jika perintah yang diterima dalam sesi terputus dimulai dalam sesi saat ini, nilai default parameter OutTarget adalah formulir di mana perintah dimulai. Jika perintah dimulai sebagai pekerjaan, secara default, perintah dikembalikan sebagai pekerjaan. Jika tidak, program tersebut dikembalikan ke program host secara default.
Biasanya, program host menampilkan objek yang dikembalikan di baris perintah tanpa penundaan, tetapi perilaku ini dapat bervariasi.
Jenis: | OutTarget |
Nilai yang diterima: | Default, Host, Job |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Port
Menentukan port jaringan komputer jarak jauh yang digunakan untuk menyambungkan kembali ke sesi. Untuk menyambungkan ke komputer jarak jauh, ia harus mendengarkan porta yang digunakan koneksi. Port default adalah 5985, yang merupakan port WinRM untuk HTTP, dan 5986, yang merupakan port WinRM untuk HTTPS.
Sebelum menggunakan port alternatif, Anda harus mengonfigurasi pendengar WinRM di komputer jarak jauh untuk mendengarkan port tersebut. Untuk mengonfigurasi pendengar, ketik dua perintah berikut pada prompt PowerShell:
Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>
Jangan gunakan parameter Port kecuali diperlukan. Port yang diatur dalam perintah berlaku untuk semua komputer atau sesi tempat perintah dijalankan. Pengaturan port alternatif mungkin mencegah perintah berjalan pada semua komputer.
Jenis: | Int32 |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Session
Menentukan sesi terputus. Masukkan variabel yang berisi PSSession atau perintah yang membuat atau mendapatkan PSSession, seperti Get-PSSession
perintah.
Jenis: | PSSession |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-SessionOption
Menentukan opsi tingkat lanjut untuk sesi tersebut. Masukkan objek SessionOption, seperti objek yang Anda buat dengan menggunakan New-PSSessionOption
cmdlet, atau tabel hash tempat kunci adalah nama opsi sesi dan nilainya adalah nilai opsi sesi.
Nilai default untuk opsi ditentukan oleh nilai $PSSessionOption
variabel preferensi, jika diatur. Jika tidak, nilai default ditetapkan oleh opsi yang diatur dalam konfigurasi sesi.
Nilai opsi sesi lebih diutamakan daripada nilai default untuk sesi yang diatur dalam $PSSessionOption
variabel preferensi dan dalam konfigurasi sesi. Namun, mereka tidak lebih diutamakan daripada nilai maksimum, kuota, atau batas yang ditetapkan dalam konfigurasi sesi.
Untuk deskripsi opsi sesi yang menyertakan nilai default, lihat New-PSSessionOption
. Untuk informasi tentang variabel preferensi $PSSessionOption , lihat about_Preference_Variables. Untuk informasi selengkapnya tentang konfigurasi sesi, lihat about_Session_Configurations.
Jenis: | PSSessionOption |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-UseSSL
Menunjukkan bahwa cmdlet ini menggunakan protokol Secure Sockets Layer (SSL) untuk menyambungkan ke sesi yang terputus. Secara default, SSL tidak digunakan.
WS-Management mengenkripsi semua konten PowerShell yang dikirimkan melalui jaringan. UseSSL adalah perlindungan tambahan yang mengirim data di seluruh koneksi HTTPS alih-alih koneksi HTTP.
Jika Anda menggunakan parameter ini dan SSL tidak tersedia pada port yang digunakan untuk perintah, perintah gagal.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-WhatIf
Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.
Jenis: | SwitchParameter |
Alias: | wi |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
Input
Anda dapat menyalurkan objek sesi ke cmdlet ini, seperti objek yang dikembalikan oleh Get-PSSession
cmdlet.
Anda dapat menyalurkan ID sesi ke cmdlet ini.
Anda dapat menyalurkan ID instans sesi cmdlet ini.
Anda dapat menyalurkan nama sesi ke cmdlet ini.
Output
Jika nilai atau nilai default parameter OutTarget adalah Job
, Receive-PSSession
mengembalikan objek pekerjaan.
Cmdlet ini mengembalikan hasil perintah yang berjalan dalam sesi terputus, jika ada.
Catatan
PowerShell menyertakan alias berikut untuk Receive-PSSession
:
- Semua platform:
rcsn
Cmdlet ini hanya tersedia di platform Windows.
Receive-PSSession
mendapatkan hasil hanya dari sesi yang terputus. Hanya sesi yang tersambung ke, atau dihentikan, komputer yang menjalankan PowerShell 3.0 atau versi yang lebih baru yang dapat diputus dan disambungkan kembali.
Jika perintah yang berjalan dalam sesi terputus tidak menghasilkan hasil atau jika hasilnya sudah dikembalikan ke sesi lain, Receive-PSSession
tidak menghasilkan output apa pun.
Mode buffering output sesi menentukan bagaimana perintah dalam sesi mengelola output saat sesi terputus. Ketika nilai opsi OutputBufferingMode dari sesi adalah Drop dan buffer output penuh, perintah mulai menghapus output. Receive-PSSession
tidak dapat memulihkan output ini. Untuk informasi selengkapnya tentang opsi mode buffering output, lihat artikel bantuan untuk cmdlet New-PSSessionOption dan New-PSTransportOption .
Anda tidak dapat mengubah nilai batas waktu diam PSSession saat Anda tersambung ke PSSession atau menerima hasil. Parameter SessionOption mengambil Receive-PSSession
objek SessionOption yang memiliki nilai IdleTimeout . Namun, nilai IdleTimeout dari objek SessionOption dan nilai IdleTimeout variabel $PSSessionOption
diabaikan saat terhubung ke PSSession atau menerima hasil.
- Anda dapat mengatur dan mengubah batas waktu diam PSSession saat membuat PSSession, dengan menggunakan
New-PSSession
cmdlet atauInvoke-Command
, dan ketika Anda memutuskan sambungan dari PSSession. - Properti IdleTimeout dari PSSession sangat penting untuk sesi yang terputus karena menentukan berapa lama sesi yang terputus dipertahankan di komputer jarak jauh. Sesi yang terputus dianggap menganggur sejak terputus, bahkan jika perintah berjalan dalam sesi yang terputus.
Jika Anda memulai pekerjaan dalam sesi jarak jauh dengan menggunakan parameter AsJob cmdlet Invoke-Command
, objek pekerjaan dibuat dalam sesi saat ini, meskipun pekerjaan berjalan di sesi jarak jauh. Jika Anda memutuskan sambungan sesi jarak jauh, objek pekerjaan dalam sesi saat ini terputus dari pekerjaan. Objek pekerjaan berisi hasil apa pun yang dikembalikan ke dalamnya, tetapi tidak menerima hasil baru dari pekerjaan dalam sesi yang terputus.
Jika klien yang berbeda terhubung ke sesi yang berisi pekerjaan yang sedang berjalan, hasil yang dikirimkan ke objek pekerjaan asli dalam sesi asli tidak tersedia dalam sesi yang baru tersambung. Hanya hasil yang tidak dikirimkan ke objek pekerjaan asli yang tersedia dalam sesi yang disambungkan kembali.
Demikian pula, jika Anda memulai skrip dalam sesi dan kemudian memutuskan sambungan dari sesi, hasil apa pun yang dikirimkan skrip ke sesi sebelum pemutusan sambungan tidak tersedia untuk klien lain yang terhubung ke sesi.
Untuk mencegah kehilangan data dalam sesi yang ingin Anda putuskan sambungannya , gunakan parameter InDisconnectedSession cmdlet Invoke-Command
. Karena parameter ini mencegah hasil dikembalikan ke sesi saat ini, semua hasil tersedia saat sesi disambungkan kembali.
Anda juga dapat mencegah kehilangan data dengan menggunakan Invoke-Command
cmdlet untuk menjalankan Start-Job
perintah di sesi jarak jauh. Dalam hal ini, objek pekerjaan dibuat dalam sesi jarak jauh. Anda tidak dapat menggunakan Receive-PSSession
cmdlet untuk mendapatkan hasil pekerjaan. Sebagai gantinya Connect-PSSession
, gunakan cmdlet untuk menyambungkan ke sesi lalu gunakan Invoke-Command
cmdlet untuk menjalankan Receive-Job
perintah dalam sesi.
Ketika sesi yang berisi pekerjaan yang sedang berjalan terputus dan kemudian disambungkan kembali, objek pekerjaan asli digunakan kembali hanya jika pekerjaan terputus dan terhubung kembali ke sesi yang sama, dan perintah untuk tersambung kembali tidak menentukan nama pekerjaan baru. Jika sesi disambungkan kembali ke sesi klien yang berbeda atau nama pekerjaan baru ditentukan, PowerShell membuat objek pekerjaan baru untuk sesi baru.
Saat Anda memutuskan sambungan PSSession, status sesi Terputus dan ketersediaannya Tidak Ada.
- Nilai properti Status relatif terhadap sesi saat ini. Nilai Terputus berarti bahwa PSSession tidak tersambung ke sesi saat ini. Namun, itu tidak berarti bahwa PSSession terputus dari semua sesi. Ini mungkin terhubung ke sesi yang berbeda. Untuk menentukan apakah Anda dapat menyambungkan atau menyambungkan kembali ke sesi, gunakan properti Ketersediaan .
- Nilai Ketersediaan Tidak Ada menunjukkan bahwa Anda dapat tersambung ke sesi. Nilai Sibuk menunjukkan bahwa Anda tidak dapat tersambung ke PSSession karena terhubung ke sesi lain.
- Untuk informasi selengkapnya tentang nilai properti Status sesi, lihat RunspaceState.
- Untuk informasi selengkapnya tentang nilai properti Ketersediaan sesi, lihat RunspaceAvailability.