about_PSSession_Details

Deskripsi singkat

Menyediakan informasi terperinci tentang sesi PowerShell dan peran yang mereka mainkan dalam perintah jarak jauh.

Deskripsi panjang

Sesi adalah lingkungan tempat PowerShell berjalan. Sesi dibuat untuk Anda setiap kali Anda memulai PowerShell. Anda dapat membuat sesi tambahan, yang disebut "sesi PowerShell" atau "PSSessions" di komputer Anda atau komputer lain.

Tidak seperti sesi yang dibuat PowerShell untuk Anda, Anda mengontrol dan mengelola PSSessions yang Anda buat.

PSSessions memainkan peran penting dalam komputasi jarak jauh. Saat Anda membuat PSSession yang tersambung ke komputer jarak jauh, PowerShell membuat koneksi persisten ke komputer jarak jauh untuk mendukung PSSession. Anda dapat menggunakan PSSession untuk menjalankan serangkaian perintah, fungsi, dan skrip yang berbagi data.

Topik ini menyediakan informasi terperinci tentang sesi dan PSSessions di PowerShell. Untuk informasi dasar tentang tugas yang bisa Anda lakukan dengan sesi, lihat about_PSSessions.

Tentang Sesi

Secara teknis, sesi adalah lingkungan eksekusi tempat PowerShell berjalan. Setiap sesi mencakup instans mesin System.Management.Automation dan program host tempat PowerShell berjalan. Host dapat menjadi konsol PowerShell yang familier atau program lain yang menjalankan perintah, seperti Cmd.exe, atau program yang dibangun untuk menghosting PowerShell, seperti Windows PowerShell Integrated Scripting Environment (ISE). Dari perspektif Windows, sesi adalah proses Windows pada komputer target.

Setiap sesi dikonfigurasi secara independen. Ini termasuk propertinya sendiri, kebijakan eksekusinya sendiri, dan profilnya sendiri. Lingkungan yang ada ketika sesi dibuat bertahan selama masa pakainya bahkan jika Anda mengubah lingkungan di komputer. Semua sesi dibuat dalam cakupan global, bahkan sesi yang Anda buat dalam skrip.

Anda hanya dapat menjalankan satu perintah (atau alur perintah) dalam satu sesi pada satu waktu. Perintah kedua berjalan secara sinkron (satu per satu) menunggu hingga empat menit agar perintah pertama selesai. Perintah kedua berjalan secara asinkron (bersamaan) gagal.

Tentang PSSessions

Sesi dibuat setiap kali Anda memulai PowerShell. Dan, PowerShell membuat sesi sementara untuk menjalankan perintah individual. Namun, Anda juga dapat membuat sesi (disebut "sesi PowerShell" atau "PSSessions") yang Anda kontrol dan kelola.

PSSessions sangat penting untuk perintah jarak jauh. Jika Anda menggunakan parameter ComputerName dari Invoke-Command cmdlet atau Enter-PSSession , PowerShell membuat sesi sementara untuk menjalankan perintah lalu menutup sesi segera setelah perintah atau sesi interaktif selesai.

Namun, jika Anda menggunakan New-PSSession cmdlet untuk membuat PSSession, PowerShell membuat sesi persisten di komputer jarak jauh tempat Anda dapat menjalankan beberapa perintah atau sesi interaktif. PSSessions yang Anda buat tetap terbuka dan tersedia untuk digunakan hingga Anda menghapusnya atau sampai Anda menutup sesi tempat mereka dibuat.

Saat Anda membuat PSSession di komputer jarak jauh, sistem membuat proses PowerShell di komputer jarak jauh dan membuat koneksi dari komputer lokal ke proses di komputer jarak jauh. Saat Anda membuat PSSession di komputer lokal, proses baru dan koneksi dibuat di komputer lokal.

Kapan Saya Memerlukan PSSession?

Invoke-Command cmdlet dan Enter-PSSession memiliki parameter ComputerName dan Session. Anda dapat menggunakan salah satu untuk menjalankan perintah jarak jauh.

Gunakan parameter ComputerName untuk menjalankan satu perintah atau serangkaian perintah yang tidak terkait pada satu atau banyak komputer.

Untuk menjalankan perintah yang berbagi data, Anda memerlukan koneksi persisten ke komputer jarak jauh. Dalam hal ini, buat PSSession, lalu gunakan parameter Sesi untuk menjalankan perintah di PSSession.

Banyak cmdlet lain yang mendapatkan data dari komputer jarak jauh, seperti Get-Process, , Get-EventLogGet-Service, dan Get-WmiObject hanya memiliki parameter ComputerName. Mereka menggunakan teknologi selain powerShell jarak jauh untuk mengumpulkan data dari jarak jauh. Cmdlet ini tidak memiliki parameter Sesi , tetapi Anda dapat menggunakan Invoke-Command cmdlet untuk menjalankan perintah ini dalam PSSession.

Bagaimana Cara Membuat PSSession?

Untuk membuat PSSession, gunakan New-PSSession cmdlet . Anda dapat menggunakan New-PSSession untuk membuat PSSession di komputer lokal atau jarak jauh.

Dapatkah saya Membuat PSSession di Komputer Mana Pun?

Untuk membuat PSSession yang tersambung ke komputer jarak jauh, komputer harus dikonfigurasi untuk jarak jauh di PowerShell. Pengguna saat ini harus menjadi anggota grup Administrator pada komputer jarak jauh, atau pengguna saat ini harus dapat memberikan kredensial anggota grup Administrator. Untuk informasi selengkapnya, lihat about_Remote_Requirements.

Dapatkah saya melihat PSSessions saya di Sesi Lain?

Dimulai di Windows PowerShell 3.0, parameter ComputerName cmdlet Get-PSSession mendapatkan PSSessions yang Anda buat di komputer jarak jauh yang ditentukan.

PSSessions aktif dipertahankan di komputer jarak jauh ("sisi server" koneksi) dan Anda bisa mendapatkannya dari sesi apa pun di komputer mana pun.

Misalnya, jika Anda membuat PSSession dari komputer Server01 ke komputer Server02, lalu beralih ke komputer Server03, Anda dapat menggunakan perintah seperti berikut ini untuk mendapatkan sesi.

Get-PSSession -ComputerName Server02

Bahkan jika Anda memutuskan sambungan dari sesi, sesi dipertahankan pada komputer jarak jauh sampai Anda menghapusnya atau waktu habis.

Di Windows PowerShell 2.0, Anda hanya bisa mendapatkan PSSessions yang telah Anda buat di sesi saat ini. Anda tidak bisa mendapatkan PSSessions yang Anda buat di sesi lain.

Untuk informasi selengkapnya, lihat Get-PSSession.

Dapatkah saya melihat PSSessions yang Telah Dibuat Orang Lain di Komputer Saya?

Anda hanya bisa mendapatkan dan mengelola PSSessions yang telah dibuat orang lain hanya jika Anda dapat memberikan kredensial pengguna yang membuat PSSession atau konfigurasi sesi yang digunakan PSSession termasuk kredensial RunAs. Jika tidak, Anda bisa mendapatkan, menyambungkan, menggunakan, dan mengelola hanya PSSessions yang Anda buat.

Dapatkah saya Koneksi ke PSSession Dari Komputer Lain?

Dimulai di Windows PowerShell 3.0, PSSessions di komputer Windows tidak bergantung pada sesi di mana mereka dibuat. PSSessions aktif dipertahankan di komputer di jarak jauh atau "sisi server" koneksi.

Pada komputer Windows, Anda dapat menggunakan Disconnect-PSSession cmdlet untuk memutuskan sambungan dari PSSession. PSSession terputus dari sesi lokal, tetapi dipertahankan di komputer jarak jauh. Perintah terus berjalan dalam PSSession yang terputus. Anda dapat menutup PowerShell dan mematikan komputer asal tanpa mengganggu PSSession.

Kemudian, bahkan berjam-jam kemudian, Anda dapat menggunakan Get-PSSession cmdlet untuk mendapatkan PSSession dan Connect-PSSession cmdlet untuk terhubung ke PSSession dari sesi baru di komputer Windows yang berbeda.

Untuk informasi selengkapnya, lihat about_Remote_Disconnected_Sessions.

Apa yang Terjadi pada PSSession Saya jika Komputer Saya Berhenti?

PSSessions yang terputus tidak bergantung pada sesi di mana mereka dibuat. Jika Anda memutuskan sambungan PSSession lalu menutup komputer asal, PSSession dipertahankan di komputer jarak jauh.

Selain itu, PowerShell mencoba memulihkan PSSessions aktif yang terputus secara tidak sengaja, seperti oleh boot ulang komputer, pemadaman listrik sementara atau gangguan jaringan. PowerShell mencoba mempertahankan atau memulihkan PSSession ke status Dibuka, jika sesi asal masih tersedia, atau ke status terputus jika tidak.

PSSession "aktif" adalah PSSession yang menjalankan perintah. Jika PSSession tersambung (tidak terputus) dan perintah berjalan di PSSession saat sesi tersambung ditutup, PowerShell mencoba mempertahankan PSSession di komputer jarak jauh. Namun, jika tidak ada perintah yang berjalan di PSSession, PowerShell menutup PSSession saat sesi terhubung ditutup.

Untuk informasi selengkapnya, lihat about_Remote_Disconnected_Sessions.

Dapatkah saya Menjalankan Pekerjaan Latar Belakang di PSSession?

Ya. Pekerjaan latar belakang adalah perintah yang berjalan secara asinkron di latar belakang tanpa berinteraksi dengan sesi saat ini. Saat Anda mengirimkan perintah untuk memulai pekerjaan, perintah mengembalikan objek pekerjaan, tetapi pekerjaan terus berjalan di latar belakang hingga selesai.

Untuk memulai pekerjaan latar belakang di komputer lokal, gunakan Start-Job perintah . Anda dapat menjalankan pekerjaan latar belakang dalam koneksi sementara (dengan menggunakan parameter ComputerName ) atau di PSSession (dengan menggunakan parameter Sesi ).

Untuk memulai pekerjaan latar belakang di komputer jarak jauh, gunakan Invoke-Command cmdlet dengan parameter AsJob-nya Invoke-Command, atau gunakan cmdlet untuk menjalankan Start-Job perintah di komputer jarak jauh. Saat menggunakan parameter AsJob , Anda dapat menggunakan parameter ComputerName atau Session .

Saat menggunakan Invoke-Command untuk menjalankan Start-Job perintah, Anda harus menjalankan perintah dalam PSSession. Jika Anda menggunakan parameter ComputerName , PowerShell mengakhiri koneksi saat objek pekerjaan kembali, dan pekerjaan terganggu.

Untuk informasi selengkapnya, lihat about_Jobs.

Dapatkah saya Menjalankan Sesi Interaktif?

Ya. Untuk memulai sesi interaktif dengan komputer jarak jauh, gunakan Enter-PSSession cmdlet. Dalam sesi interaktif, perintah yang Anda ketik berjalan di komputer jarak jauh, sama seperti jika Anda mengetikkannya langsung di komputer jarak jauh.

Anda dapat menjalankan sesi interaktif dalam sesi sementara (dengan menggunakan parameter ComputerName ) atau di PSSession (dengan menggunakan parameter Sesi ). Jika Anda menggunakan PSSession, PSSession menyimpan data dari perintah sebelumnya, dan PSSession mempertahankan data apa pun yang dihasilkan selama sesi interaktif untuk digunakan dalam perintah selanjutnya.

Saat Anda mengakhiri sesi interaktif, PSSession tetap terbuka dan tersedia untuk digunakan.

Untuk informasi selengkapnya, lihat Enter-PSSession dan Exit-PSSession.

Haruskah saya Menghapus PSSessions?

Ya. PSSession adalah proses, yang merupakan lingkungan mandiri yang menggunakan memori dan sumber daya lain bahkan ketika Anda tidak menggunakannya. Setelah selesai dengan PSSession, hapus. Jika Anda membuat beberapa PSSessions, tutup yang tidak Anda gunakan, dan pertahankan hanya yang saat ini digunakan.

Untuk menghapus PSSessions, gunakan Remove-PSSession cmdlet . Ini menghapus PSSessions dan merilis semua sumber daya yang mereka gunakan.

Anda juga dapat menggunakan parameter IdleTimeOut untuk New-PSSessionOption menutup PSSession menganggur setelah interval yang Anda tentukan. Untuk informasi selengkapnya, lihat New-PSSessionOption.

Jika Anda menyimpan objek PSSession dalam variabel lalu menghapus PSSession atau membiarkannya kehabisan waktu, variabel masih berisi objek PSSession, tetapi PSSession tidak aktif dan tidak dapat digunakan atau diperbaiki.

Apakah Semua Sesi dan PSSessions Sama?

Tidak. Pengembang dapat membuat sesi kustom yang hanya menyertakan penyedia dan cmdlet yang dipilih. Jika perintah bekerja dalam satu sesi tetapi tidak di sesi lain, itu mungkin karena sesi dibatasi.

Lihat juga