about_Remote_Disconnected_Sessions
Deskripsi singkat
Menjelaskan cara memutuskan dan menyambungkan kembali ke Sesi PowerShell (PSSession).
Deskripsi panjang
Dimulai di PowerShell 3.0, Anda dapat memutuskan sambungan dari PSSession dan menyambungkan kembali ke PSSession dari komputer yang sama atau komputer lain. Status sesi dipertahankan dan perintah dalam PSSession terus berjalan saat sesi terputus.
Fitur Sesi Terputus memungkinkan Anda menutup sesi di mana PSSession dibuat dan mematikan komputer tanpa mengganggu perintah yang berjalan di PSSession jarak jauh. Sesi terputus berguna untuk menjalankan perintah yang membutuhkan waktu lama untuk diselesaikan.
Anda tidak dapat memutuskan sambungan dari sesi interaktif yang mulai menggunakan Enter-PSSession
cmdlet.
Anda dapat menggunakan sesi yang terputus untuk mengelola PSSessions yang terputus secara tidak sengaja sebagai akibat dari pemadaman komputer atau jaringan.
Cmdlet sesi terputus
Cmdlet berikut mendukung fitur Sesi Terputus:
Connect-PSSession
: Menyambungkan ke PSSession yang terputus.Disconnect-PSSession
: Memutuskan sambungan PSSession.Get-PSSession
: Mendapatkan PSSessions di komputer lokal atau di komputer jarak jauh.Receive-PSSession
: Mendapatkan hasil perintah yang berjalan dalam sesi yang terputus.Invoke-Command
: Parameter InDisconnectedSession membuat PSSession dan segera memutuskan sambungan.
Cara kerja fitur Sesi Terputus
Dimulai di PowerShell 3.0, PSSessions independen dari sesi tempat sesi dibuat. PSSessions aktif dipertahankan di komputer jarak jauh atau sisi server koneksi, bahkan jika komputer sisi klien dimatikan atau terputus dari jaringan.
Di PowerShell 2.0, PSSession dihapus dari komputer jarak jauh ketika terputus dari sesi asal atau sesi tempat sesi dibuat berakhir.
Ketika Anda memutuskan sambungan PSSession, PSSession tetap aktif dan dipertahankan di komputer jarak jauh. Status sesi berubah dari Berjalan menjadi Terputus. Anda dapat menyambungkan kembali ke PSSession yang terputus dari
- Sesi saat ini pada komputer yang sama
- Sesi berbeda pada komputer yang sama
- Dari sesi di komputer lain
Komputer jarak jauh yang mempertahankan sesi harus berjalan dan tersambung ke jaringan.
Perintah dalam PSSession yang terputus terus berjalan tanpa gangguan pada komputer jarak jauh hingga perintah selesai atau buffer output terisi. Untuk mencegah buffer output penuh menangguhkan perintah, gunakan parameter OutputBufferingMode dari Disconnect-PSSession
cmdlet , , New-PSSessionOption
atau New-PSTransportOption
.
Sesi terputus dipertahankan dalam status terputus pada komputer jarak jauh. Mereka tersedia bagi Anda untuk terhubung kembali sampai Anda menghapus PSSession, seperti dengan menggunakan Remove-PSSession
cmdlet, atau sampai batas waktu diam PSSession kedaluwarsa. Anda dapat menyesuaikan batas waktu diam PSSession dengan menggunakan parameter IdleTimeoutSec atau IdleTimeout dari Disconnect-PSSession
cmdlet , , New-PSSessionOption
atau New-PSTransportOption
.
Pengguna lain dapat terhubung ke PSSessions yang Anda buat, tetapi hanya jika mereka dapat memberikan kredensial yang digunakan untuk membuat sesi, atau menggunakan RunAs
kredensial konfigurasi sesi.
Cara mendapatkan PSSessions
Dimulai di PowerShell 3.0, Get-PSSession
cmdlet mendapatkan PSSessions di komputer lokal dan komputer jarak jauh. Ini juga bisa mendapatkan PSSessions yang dibuat dalam sesi saat ini.
Untuk mendapatkan PSSessions di komputer lokal atau komputer jarak jauh, gunakan parameter ComputerName atau ConnectionUri . Tanpa parameter, Get-PSSession
mendapatkan PSSession yang dibuat dalam sesi lokal, terlepas dari di mana mereka berakhir.
Contoh berikut menunjukkan cara menggunakan Get-PSSession
.
New-PSSession
membuat sesi ke komputer Server01. Sesi berada di komputer Server01.
New-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Opened Microsoft.PowerShell Available
Untuk mendapatkan sesi dari Server01, gunakan parameter ComputerName untuk menentukan target Get-PSSession
.
Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Opened Microsoft.PowerShell Available
Jika nilai parameter ComputerName adalah Get-PSSession
localhost, Get-PSSession
mendapatkan PSSessions yang berakhir pada dan dipertahankan di komputer lokal. Ini tidak mendapatkan PSSessions di komputer Server01, bahkan jika mereka dimulai di komputer lokal.
Get-PSSession -ComputerName localhost
Untuk mendapatkan sesi yang dibuat dalam sesi saat ini, gunakan Get-PSSession
cmdlet tanpa parameter. Dalam contoh ini, Get-PSSession
mendapatkan PSSession yang dibuat dalam sesi saat ini dan tersambung ke komputer Server01.
Get-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Opened Microsoft.PowerShell Available
Cara memutuskan sesi
Disconnect-PSSession
Gunakan cmdlet untuk memutuskan sambungan sesi. Untuk mengidentifikasi PSSession, gunakan parameter Sesi , atau pipa objek PSSession dari New-PSSession
cmdlet atau Get-PSSession
ke Disconnect-PSSession
.
Perintah berikut memutuskan sambungan PSSession ke komputer Server01. Perhatikan bahwa nilai properti Status Terputus dan Ketersediaannya Tidak Ada.
Get-PSSession -ComputerName Server01 | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Disconnected Microsoft.PowerShell None
Untuk membuat sesi terputus, gunakan parameter InDisconnectedSession cmdlet Invoke-Command
. Ini membuat sesi, memulai perintah, dan segera terputus, sebelum perintah dapat mengembalikan output apa pun.
Perintah berikut menjalankan Get-WinEvent
perintah dalam sesi terputus pada komputer jarak jauh Server02.
Invoke-Command -ComputerName Server02 -InDisconnectedSession -ScriptBlock {
Get-WinEvent -LogName "*PowerShell*" }
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
4 Session3 Server02 Disconnected Microsoft.PowerShell None
Cara menyambungkan ke sesi yang terputus
Untuk menyambungkan sesi yang terputus, gunakan Connect-PSSession
cmdlet dengan parameter ComputerName atau ConnectionUri . Atau, Anda dapat menyalurkan output Get-PSSession
ke Connect-PSSession
.
Contoh berikut mendapatkan sesi di komputer Server02. Output mencakup dua sesi yang terputus.
Get-PSSession -ComputerName Server02
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 juneb-srv8320 Disconnected Microsoft.PowerShell None
4 Session3 juneb-srv8320 Disconnected Microsoft.PowerShell None
Perintah berikut tersambung ke Sesi2. PSSession sekarang terbuka dan tersedia.
Connect-PSSession -ComputerName Server02 -Name Session2
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 juneb-srv8320 Opened Microsoft.PowerShell Available
Cara mendapatkan hasilnya
Untuk mendapatkan hasil perintah yang berjalan dalam PSSession yang terputus, gunakan Receive-PSSession
cmdlet .
Anda dapat menggunakan Receive-PSSession
daripada menggunakan Connect-PSSession
cmdlet. Jika sesi sudah tersambung kembali, Receive-PSSession
mendapatkan hasil perintah yang berjalan saat sesi terputus. Jika PSSession masih terputus, Receive-PSSession
menyambungkannya dan kemudian mendapatkan hasil perintah yang berjalan saat terputus.
Receive-PSSession
dapat mengembalikan hasil dalam pekerjaan (secara asinkron) atau ke program host (sinkron). Gunakan parameter OutTarget untuk memilih Pekerjaan atau Host. Nilai defaultnya adalah Host. Namun, jika perintah yang diterima dimulai dalam sesi saat ini sebagai Pekerjaan, perintah dikembalikan sebagai Pekerjaan secara default.
Contoh berikut menggunakan Receive-PSSession
cmdlet untuk menyambungkan kembali ke sesi di Server02 dan mendapatkan hasil Get-WinEvent
perintah. Parameter OutTarget digunakan untuk mendapatkan hasil dalam Pekerjaan.
Receive-PSSession -ComputerName Server02 -Name Session3 -OutTarget Job
Id Name PSJobTypeName State HasMoreData Location
-- ---- ------------- ----- ----------- --------
3 Job3 RemoteJob Running True Server02
Untuk mendapatkan hasil pekerjaan, gunakan Receive-Job
cmdlet .
Get-Job | Receive-Job -Keep
ProviderName: PowerShell
TimeCreated Id LevelDisplayName Message PSComputerName
----------- -- ---------------- ------- --------------
5/14/2012 7:26:04 PM 400 Information Engine stat Server02
5/14/2012 7:26:03 PM 600 Information Provider "W Server02
5/14/2012 7:26:03 PM 600 Information Provider "C Server02
5/14/2012 7:26:03 PM 600 Information Provider "V Server02
Properti Status dan Ketersediaan
Properti Status dan Ketersediaan PSSession yang terputus memberi tahu Anda apakah sesi tersedia untuk Anda sambungkan kembali.
Ketika PSSession tersambung ke sesi saat ini, statusnya Dibuka dan ketersediaannya Tersedia. Ketika Anda memutuskan sambungan dari PSSession, status PSSession Terputus dan ketersediaannya tidak ada.
Nilai properti Status relatif terhadap sesi saat ini. Nilai Terputus berarti bahwa PSSession tidak tersambung ke sesi saat ini. Tapi, bukan berarti PSSession terputus dari semua sesi. Ini mungkin terhubung ke sesi yang berbeda.
Untuk menentukan apakah Anda dapat menyambungkan atau menyambungkan kembali ke PSSession, gunakan properti Ketersediaan . Nilai Tidak Ada menunjukkan bahwa Anda dapat tersambung ke sesi. Nilai Sibuk menunjukkan bahwa Anda tidak dapat tersambung ke PSSession karena terhubung ke sesi lain.
Contoh berikut dijalankan dalam dua sesi PowerShell di komputer yang sama. Perhatikan perubahan nilai properti Status dan Ketersediaan di setiap sesi karena PSSession terputus dan tersambung kembali.
# Session 1
New-PSSession -ComputerName Server30 -Name Test
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server30 Opened Microsoft.PowerShell Available
# Session 2
Get-PSSession -ComputerName Server30 -Name Test
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server30 Disconnected Microsoft.PowerShell Busy
# Session 1
Get-PSSession -ComputerName Server30 -Name Test | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server30 Disconnected Microsoft.PowerShell None
# Session 2
Get-PSSession -ComputerName Server30
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server30 Disconnected Microsoft.PowerShell None
# Session 2
Connect-PSSession -ComputerName Server30 -Name Test
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
3 Test Server30 Opened Microsoft.PowerShell Available
# Session 1
Get-PSSession -ComputerName Server30
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server30 Disconnected Microsoft.PowerShell Busy
Sesi terputus dipertahankan pada komputer jarak jauh hingga Anda menghapusnya, seperti dengan menggunakan Remove-PSSession
cmdlet, atau waktu habis. Properti IdleTimeout dari PSSession menentukan berapa lama sesi yang terputus dipertahankan sebelum dihapus.
Nilai batas waktu diam
PSSessions menganggur ketika utas heartbeat tidak menerima respons. Memutuskan sambungan sesi membuatnya menganggur dan memulai jam IdleTimeout , bahkan jika perintah masih berjalan dalam sesi yang terputus. PowerShell menganggap sesi yang terputus aktif, tetapi tidak aktif.
Saat membuat dan memutuskan sesi, verifikasi bahwa batas waktu diam di PSSession cukup lama untuk mempertahankan sesi untuk kebutuhan Anda, tetapi tidak begitu lama sehingga mengonsumsi sumber daya yang tidak perlu di komputer jarak jauh.
Properti IdleTimeoutMs dari konfigurasi sesi menentukan batas waktu menganggur default sesi yang menggunakan konfigurasi sesi. Anda dapat mengambil alih nilai default, tetapi nilai tersebut tidak dapat melebihi properti MaxIdleTimeoutMs dari konfigurasi sesi.
Gunakan perintah berikut untuk mendapatkan nilai IdleTimeoutMs dan MaxIdleTimeoutMs untuk konfigurasi sesi.
Get-PSSessionConfiguration |
Format-Table Name, IdleTimeoutMs, MaxIdleTimeoutMs
Jika Anda adalah anggota grup Administrator di komputer jarak jauh, Anda dapat mengatur nilai-nilai ini saat membuat konfigurasi sesi. Selain itu, Anda dapat mengubah nilai saat memutuskan sambungan.
Nilai batas waktu menganggur konfigurasi sesi dan opsi sesi dalam milidetik. Nilai batas waktu menganggur sesi dan opsi konfigurasi sesi dalam hitungan detik.
Anda dapat mengatur batas waktu diam PSSession saat membuat PSSession (New-PSSession
, Invoke-Command
) dan kapan Anda memutuskan sambungan darinya (Disconnect-PSSession
). Namun, Anda tidak dapat mengubah nilai IdleTimeout saat tersambung ke PSSession (Connect-PSSession
) atau mendapatkan hasil (Receive-PSSession
).
Connect-PSSession
cmdlet dan Receive-PSSession
memiliki parameter SessionOption yang mengambil objek PSSessionOption, seperti yang dikembalikan oleh New-PSSessionOption
cmdlet.
Nilai IdleTimeout dalam objek SessionOption dan nilai IdleTimeout dalam $PSSessionOption
variabel preferensi tidak mengubah nilai IdleTimeout dalam perintah Connect-PSSession
atau Receive-PSSession
.
Untuk membuat PSSession dengan nilai batas waktu diam tertentu, buat $PSSessionOption
variabel preferensi. Atur nilai properti IdleTimeout ke nilai yang diinginkan (dalam milidetik).
Saat Anda membuat PSSessions, nilai dalam variabel lebih diutamakan $PSSessionOption
daripada nilai dalam konfigurasi sesi.
Misalnya, perintah berikut menetapkan batas waktu diam 48 jam:
$PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000
Untuk membuat PSSession dengan nilai batas waktu diam tertentu, gunakan parameter IdleTimeoutMSec cmdlet New-PSSessionOption
. Kemudian, gunakan opsi sesi dalam nilai parameter SessionOption dari New-PSSession
cmdlet atau Invoke-Command
.
Nilai yang ditetapkan saat membuat sesi lebih diutamakan daripada nilai yang ditetapkan dalam $PSSessionOption
variabel preferensi dan konfigurasi sesi.
Contohnya:
$o = New-PSSessionOption -IdleTimeoutMSec 172800000
New-PSSession -SessionOption $o
Untuk mengubah batas waktu diam PSSession saat memutuskan sambungan, gunakan parameter IdleTimeoutSec cmdlet Disconnect-PSSession
.
Contohnya:
Disconnect-PSSession -IdleTimeoutSec 172800
Untuk membuat konfigurasi sesi dengan batas waktu diam tertentu dan batas waktu diam maksimum, gunakan parameter IdleTimeoutSec dan MaxIdleTimeoutSec cmdlet New-PSTransportOption
. Kemudian, gunakan opsi transportasi dalam nilai parameter TransportOption dari Register-PSSessionConfiguration
.
Contohnya:
$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
Register-PSSessionConfiguration -Name Test -TransportOption $o
Untuk mengubah batas waktu diam default dan batas waktu diam maksimum konfigurasi sesi, gunakan parameter IdleTimeoutSec dan MaxIdleTimeoutSec dari New-PSTransportOption
cmdlet. Kemudian, gunakan opsi transportasi dalam nilai parameter TransportOption dari Set-PSSessionConfiguration
.
Contohnya:
$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
Set-PSSessionConfiguration -Name Test -TransportOption $o
Mode buffering output
Mode buffering output PSSession menentukan bagaimana output perintah dikelola ketika buffer output PSSession penuh.
Dalam sesi terputus, mode buffering output secara efektif menentukan apakah perintah terus berjalan saat sesi terputus.
Nilai yang valid sebagai berikut:
Block
(default) - Ketika buffer output penuh, eksekusi ditangguhkan hingga buffer jelas.Block
mempertahankan data, tetapi mungkin mengganggu perintah.Drop
- Ketika buffer output penuh, eksekusi berlanjut. Saat output baru dihasilkan, output terlama dibuang. Saat menggunakanDrop
nilai , alihkan output ke file. Nilai ini direkomendasikan untuk sesi yang terputus.
Properti OutputBufferingMode dari konfigurasi sesi menentukan mode buffering default sesi yang menggunakan konfigurasi sesi.
Untuk menemukan nilai konfigurasi sesi dari OutputBufferingMode, Anda dapat menggunakan salah satu format perintah berikut:
(Get-PSSessionConfiguration <ConfigurationName>).OutputBufferingMode
Get-PSSessionConfiguration | Format-Table Name, OutputBufferingMode
Anda dapat mengambil alih nilai default dalam konfigurasi sesi dan mengatur mode buffering output PSSession saat Anda membuat PSSession, saat Anda memutuskan sambungan, dan saat Anda tersambung kembali.
Jika Anda adalah anggota grup Administrator di komputer jarak jauh, Anda dapat membuat dan mengubah mode buffering output konfigurasi sesi.
Untuk membuat PSSession dengan mode Drop
buffering output , buat $PSSessionOption
variabel preferensi di mana nilai properti OutputBufferingMode adalah Drop
.
Saat Anda membuat PSSessions, nilai dalam variabel lebih diutamakan $PSSessionOption
daripada nilai dalam konfigurasi sesi.
Contohnya:
$PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop
Gunakan parameter OutputBufferingMode cmdlet New-PSSessionOption
untuk membuat opsi sesi dengan nilai Drop
. Kemudian, gunakan objek PSSessionOption sebagai nilai parameter SessionOption dari New-PSSession
cmdlet atau Invoke-Command
.
Nilai yang ditetapkan saat membuat sesi lebih diutamakan daripada nilai yang ditetapkan dalam $PSSessionOption
variabel preferensi dan konfigurasi sesi.
Contohnya:
$o = New-PSSessionOption -OutputBufferingMode Drop
New-PSSession -SessionOption $o
Untuk mengubah mode buffering output PSSession saat memutuskan sambungan, gunakan parameter OutputBufferingMode cmdlet Disconnect-PSSession
.
Contohnya:
Disconnect-PSSession -OutputBufferingMode Drop
Untuk mengubah mode buffering output PSSession saat menyambungkan kembali, gunakan parameter OutputBufferingMode cmdlet New-PSSessionOption
. Kemudian, gunakan opsi sesi dalam nilai parameter SessionOption dari Connect-PSSession
atau Receive-PSSession
.
Contohnya:
$o = New-PSSessionOption -OutputBufferingMode Drop
Connect-PSSession -ComputerName Server01 -Name Test -SessionOption $o
Untuk membuat konfigurasi sesi dengan mode Drop
buffering output default , gunakan parameter OutputBufferingMode cmdlet New-PSTransportOption
untuk membuat objek opsi transportasi dengan nilai Drop
. Kemudian, gunakan opsi transportasi dalam nilai parameter TransportOption dari Register-PSSessionConfiguration
.
Contohnya:
$o = New-PSTransportOption -OutputBufferingMode Drop
Register-PSSessionConfiguration -Name Test -TransportOption $o
Untuk mengubah mode buffering output default konfigurasi sesi, gunakan parameter OutputBufferingMode cmdlet New-PSTransportOption
untuk membuat opsi transportasi dengan nilai Drop
. Kemudian, gunakan opsi Transportasi dalam nilai parameter SessionOption dari Set-PSSessionConfiguration
.
Contohnya:
$o = New-PSTransportOption -OutputBufferingMode Drop
Set-PSSessionConfiguration -Name Test -TransportOption $o
Memutuskan sesi loopback
Sesi loopback, atau sesi lokal, adalah PSSessions yang berasal dan berakhir di komputer yang sama. Seperti PSSessions lainnya, sesi loopback aktif dipertahankan di komputer di ujung jarak jauh koneksi (komputer lokal), sehingga Anda dapat memutuskan sambungan dari dan menyambungkan kembali ke sesi loopback.
Secara default, sesi loopback dibuat dengan token keamanan jaringan yang tidak mengizinkan perintah berjalan dalam sesi untuk mengakses komputer lain. Anda dapat terhubung kembali ke sesi loopback yang memiliki token keamanan jaringan dari sesi apa pun di komputer lokal atau komputer jarak jauh.
Namun, jika Anda menggunakan parameter EnableNetworkAccess dari New-PSSession
cmdlet , , Enter-PSSession
atau Invoke-Command
, sesi loopback dibuat dengan token keamanan interaktif. Token interaktif memungkinkan perintah yang berjalan dalam sesi loopback untuk mendapatkan data dari komputer lain.
Anda dapat memutuskan sesi loopback dengan token interaktif lalu menyambungkannya kembali dari sesi yang sama atau sesi yang berbeda di komputer yang sama. Namun, untuk mencegah akses berbahaya, Anda dapat terhubung kembali ke sesi loopback dengan token interaktif hanya dari komputer tempat mereka dibuat.
Menunggu pekerjaan dalam sesi terputus
Wait-Job
Cmdlet menunggu hingga pekerjaan selesai lalu kembali ke prompt perintah atau perintah berikutnya. Secara default, Wait-Job
mengembalikan jika sesi tempat pekerjaan berjalan terputus. Untuk mengarahkan Wait-Job
cmdlet untuk menunggu hingga sesi tersambung kembali, dalam status Dibuka , gunakan parameter Paksa . Untuk informasi selengkapnya, lihat Wait-Job.
Sesi yang kuat dan pemutusan sambungan yang tidak disengaja
PSSession mungkin tidak sengaja terputus karena kegagalan komputer atau pemadaman jaringan. PowerShell mencoba memulihkan PSSession, tetapi keberhasilannya tergantung pada tingkat keparahan dan durasi penyebabnya.
Status PSSession yang tidak disengaja terputus mungkin Rusak atau Tertutup, tetapi mungkin juga Terputus. Jika nilai Status Terputus, Anda dapat menggunakan teknik yang sama untuk mengelola PSSession seperti yang Anda lakukan jika sesi terputus dengan sengaja. Misalnya, Anda dapat menggunakan Connect-PSSession
cmdlet untuk menyambungkan kembali ke sesi dan Receive-PSSession
cmdlet untuk mendapatkan hasil perintah yang berjalan saat sesi terputus.
Jika Anda menutup (keluar) sesi tempat PSSession dibuat saat perintah berjalan di PSSession, PowerShell mempertahankan PSSession dalam status Terputus pada komputer jarak jauh. Jika Anda menutup (keluar) sesi tempat PSSession dibuat, tetapi tidak ada perintah yang berjalan di PSSession, PowerShell tidak mencoba mempertahankan PSSession.