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 di komputer lain.

Receive-PSSessionbekerja 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 terhubung 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. Contohnya mendapatkan hasil perintah yang berjalan dalam sesi ITTask.

Karena perintah tidak menggunakan parameter OutTarget , hasilnya muncul di baris perintah.

Contoh 2: Mendapatkan hasil dari 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 mengarahkan Receive-PSSession untuk mengembalikan hasil sebagai pekerjaan. Parameter JobName menentukan nama untuk pekerjaan dalam sesi yang disambungkan kembali. Parameter Info masuk 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 tersambung 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 lama untuk menyelesaikan skrip. 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 sambungan terputus. Penting untuk mengatur batas waktu diam cukup lama sehingga perintah dapat diselesaikan dan Anda dapat terhubung kembali ke sesi. Anda hanya dapat mengatur IdleTimeout saat membuat PSSession dan mengubahnya hanya saat Anda memutuskan sambungannya. 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 berdasarkan 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 di 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 pemutusan 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 terhubung kembali ke sesi Uji di komputer Server01 dan menyimpan sesi dalam $s2 variabel.

Cmdlet Receive-PSSession 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.

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters: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
  • NegotiateWithImplicitCredential

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.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:Default
Accept pipeline input:False
Accept wildcard characters: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: .

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Aliases:Cn
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters: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 ditambahkan 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.

Type:String
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-Confirm

Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters: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 .

Type:Uri
Aliases:URI, CU
Position:0
Default value:http://localhost:5985/WSMAN
Accept pipeline input:True
Accept wildcard characters: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 mengetik 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?.

Type:PSCredential
Position:Named
Default value:Current user
Accept pipeline input:False
Accept wildcard characters: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.

Type:Int32
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters: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.

Type:Guid
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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 akan 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.

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

-Name

Menentukan nama yang mudah diingat dari sesi yang terputus.

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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 akan dikembalikan ke program host secara default.

Biasanya, program host menampilkan objek yang dikembalikan di baris perintah tanpa penundaan, tetapi perilaku ini dapat bervariasi.

Type:OutTarget
Accepted values:Default, Host, Job
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Port

Menentukan port jaringan komputer jarak jauh yang digunakan untuk menyambung kembali ke sesi. Untuk tersambung 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 di 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.

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

-Session

Menentukan sesi terputus. Masukkan variabel yang berisi PSSession atau perintah yang membuat atau mendapatkan PSSession, seperti Get-PSSession perintah.

Type:PSSession
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters: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 di mana 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.

Type:PSSessionOption
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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.

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

-WhatIf

Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Input

PSSession

Anda dapat menyalurkan objek sesi ke cmdlet ini, seperti objek yang dikembalikan oleh Get-PSSession cmdlet .

Int32

Anda dapat menyalurkan ID sesi ke cmdlet ini.

Guid

Anda dapat menyalurkan Id instans sesi cmdlet ini.

String

Anda dapat menyalurkan nama sesi ke cmdlet ini.

Output

System.Management.Automation.Job or PSObject

Cmdlet ini mengembalikan hasil perintah yang berjalan dalam sesi yang terputus, jika ada. Jika nilai atau nilai default parameter OutTarget adalah Pekerjaan, Receive-PSSession mengembalikan objek pekerjaan. Jika tidak, ia mengembalikan objek yang mewakili hasil perintah tersebut.

Catatan

Cmdlet ini hanya tersedia di platform Windows.

Receive-PSSession mendapatkan hasil hanya dari sesi yang terputus. Hanya sesi yang tersambung ke, atau dihentikan di, 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 buffer 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 SessionOptionReceive-PSSession mengambil 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 atau Invoke-Command , dan saat 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 di 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 di sesi asli tidak tersedia di 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 memutuskan 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 menyambungkan 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 tersambung ke sesi lain.
  • Untuk informasi selengkapnya tentang nilai properti Status sesi, lihat RunspaceState.
  • Untuk informasi selengkapnya tentang nilai properti Ketersediaan sesi, lihat RunspaceAvailability.