about_Session_Configuration_Files

Deskripsi singkat

Menjelaskan file konfigurasi sesi, yang digunakan dalam konfigurasi sesi (juga dikenal sebagai "titik akhir") untuk menentukan lingkungan sesi yang menggunakan konfigurasi sesi.

Deskripsi panjang

"File konfigurasi sesi" adalah file teks dengan ekstensi nama file .pssc yang berisi tabel hash properti dan nilai konfigurasi sesi. Anda dapat menggunakan file konfigurasi sesi untuk mengatur properti konfigurasi sesi. Melakukannya menentukan lingkungan sesi PowerShell apa pun yang menggunakan konfigurasi sesi tersebut.

File konfigurasi sesi memudahkan untuk membuat konfigurasi sesi kustom tanpa menggunakan rakitan atau skrip C# yang kompleks.

"Konfigurasi sesi" atau "titik akhir" adalah kumpulan pengaturan komputer lokal yang menentukan hal-hal seperti itu yang dapat dibuat pengguna sesi di komputer; perintah mana yang dapat dijalankan pengguna dalam sesi tersebut; dan apakah sesi harus berjalan sebagai akun virtual istimewa. Untuk informasi selengkapnya tentang konfigurasi sesi, lihat about_Session_Configurations.

Konfigurasi sesi diperkenalkan di Windows PowerShell 2.0, dan file konfigurasi sesi diperkenalkan di Windows PowerShell 3.0. Anda harus menggunakan Windows PowerShell 3.0 untuk menyertakan file konfigurasi sesi dalam konfigurasi sesi. Namun, pengguna Windows PowerShell 2.0 (dan yang lebih baru) dipengaruhi oleh pengaturan dalam konfigurasi sesi.

Membuat Sesi Kustom

Anda dapat menyesuaikan banyak fitur sesi PowerShell dengan menentukan properti sesi dalam konfigurasi sesi. Anda dapat menyesuaikan sesi dengan menulis program C# yang menentukan runspace kustom, atau Anda dapat menggunakan file konfigurasi sesi untuk menentukan properti sesi yang dibuat dengan menggunakan konfigurasi sesi. Sebagai aturan umum, lebih mudah untuk menggunakan file konfigurasi sesi daripada menulis program C#.

Anda dapat menggunakan file konfigurasi sesi untuk membuat item seperti sesi yang berfungsi penuh untuk pengguna yang sangat tepercaya; sesi terkunci yang memungkinkan akses minimal; sesi yang dirancang khusus dan hanya berisi modul yang diperlukan untuk tugas-tugas tersebut; dan sesi di mana pengguna yang tidak istimewa hanya dapat menjalankan perintah tertentu sebagai akun istimewa.

Selain itu, Anda dapat mengelola apakah pengguna sesi dapat menggunakan elemen bahasa PowerShell seperti blok skrip, atau apakah mereka hanya dapat menjalankan perintah. Anda dapat mengelola versi pengguna PowerShell yang dapat berjalan dalam sesi; mengelola modul mana yang diimpor ke dalam sesi; dan mengelola cmdlet, fungsi, dan alias mana yang dapat dijalankan pengguna sesi. Saat menggunakan bidang RoleDefinitions, Anda dapat memberi pengguna kemampuan yang berbeda dalam sesi berdasarkan keanggotaan grup.

Untuk informasi selengkapnya tentang RoleDefinitions dan cara menentukan Nilai ini, lihat topik bantuan untuk Cmdlet New-PSRoleCapabilityFile.

Membuat File Konfigurasi Sesi

Cara termampu untuk membuat file konfigurasi sesi adalah dengan menggunakan cmdlet New-PSSessionConfigurationFile. Cmdlet ini menghasilkan file yang menggunakan sintaks dan format yang benar, dan yang secara otomatis memverifikasi banyak nilai properti file konfigurasi.

Untuk deskripsi terperinci tentang properti yang dapat Anda atur dalam file konfigurasi sesi, lihat topik bantuan untuk cmdlet New-PSSessionConfigurationFile.

Perintah berikut membuat file konfigurasi sesi yang menggunakan nilai default. File konfigurasi yang dihasilkan hanya menggunakan nilai default karena tidak ada parameter selain parameter Jalur (yang menentukan jalur file) yang disertakan:

New-PSSessionConfigurationFile -Path .\Defaults.pssc

Untuk melihat file konfigurasi baru di editor teks default Anda, gunakan perintah berikut:

Invoke-Item -Path .\Defaults.pssc

Untuk membuat konfigurasi sesi untuk sesi di mana pengguna dapat menjalankan perintah, tetapi tidak menggunakan elemen lain dari bahasa PowerShell, ketik:

New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc

Dalam perintah sebelumnya, mengatur parameter LanguageMode ke NoLanguage mencegah pengguna melakukan hal-hal seperti menulis atau menjalankan skrip, atau menggunakan variabel.

Untuk membuat konfigurasi sesi untuk sesi di mana pengguna hanya dapat menggunakan Dapatkan cmdlet, ketik:

New-PSSessionConfigurationFile -VisibleCmdlets Get-*
-Path .\GetSessions.pssc

Dalam contoh sebelumnya, mengatur parameter VisibleCmdlets ke Get-* membatasi pengguna ke cmdlet yang memiliki nama yang dimulai dengan nilai string "Get-".

Untuk membuat konfigurasi sesi untuk sesi yang berjalan di bawah akun virtual istimewa alih-alih kredensial pengguna, ketik:

New-PSSessionConfigurationFile -RunAsVirtualAccount
-Path .\VirtualAccount.pssc

Untuk membuat konfigurasi sesi untuk sesi di mana perintah yang terlihat oleh pengguna ditentukan dalam file kemampuan peran, ketik:

New-PSSessionConfigurationFile -RoleDefinitions
@{ 'CONTOSO\User' = @{ RoleCapabilities = 'Maintenance' }}
-Path .\Maintenance.pssc

Menggunakan File Konfigurasi Sesi

Anda dapat menyertakan file konfigurasi sesi saat membuat konfigurasi sesi atau menambahkan Anda dapat menambahkan file ke konfigurasi sesi di lain waktu.

Untuk menyertakan file konfigurasi sesi saat membuat konfigurasi sesi, gunakan parameter Jalur cmdlet Register-PSSessionConfiguration.

Misalnya, perintah berikut menggunakan file NoLanguage.pssc saat membuat konfigurasi sesi NoLanguage.

Register-PSSessionConfiguration -Name NoLanguage
-Path .\NoLanguage.pssc

Ketika sesi NoLanguage baru dimulai, pengguna hanya akan memiliki akses ke perintah PowerShell.

Untuk menambahkan file konfigurasi sesi ke konfigurasi sesi yang ada, gunakan cmdlet Set-PSSessionConfiguration dan parameter Jalur. Ini memengaruhi sesi baru yang dibuat dengan konfigurasi sesi yang ditentukan. Perhatikan bahwa cmdlet Set-PSSessionConfiguration mengubah sesi itu sendiri dan tidak mengubah file konfigurasi sesi.

Misalnya, perintah berikut menambahkan file NoLanguage.pssc ke konfigurasi sesi LockedDown.

Set-PSSessionConfiguration -Name LockedDown
-Path .\NoLanguage.pssc

Saat pengguna menggunakan konfigurasi sesi LockedDown untuk membuat sesi, mereka akan dapat menjalankan cmdlet tetapi mereka tidak akan dapat membuat atau menggunakan variabel, menetapkan nilai, atau menggunakan elemen bahasa PowerShell lainnya.

Perintah berikut menggunakan cmdlet New-PSSession untuk membuat sesi di komputer Srv01 yang menggunakan konfigurasi sesi LockedDown, menyimpan referensi objek ke sesi dalam variabel $s. ACL (daftar kontrol akses) konfigurasi sesi menentukan siapa yang dapat menggunakannya untuk membuat sesi.

$s = New-PSSession -ComputerName Srv01
-ConfigurationName LockedDown

Karena batasan NoLanguage ditambahkan ke konfigurasi sesi LockedDown, pengguna di sesi LockedDown hanya akan dapat menjalankan perintah dan cmdlet PowerShell. Misalnya, dua perintah berikut menggunakan cmdlet Invoke-Command untuk menjalankan perintah dalam sesi yang dirujuk dalam variabel $s. Perintah pertama, yang menjalankan cmdlet Get-UICulture dan tidak menggunakan variabel apa pun, berhasil. Perintah kedua, yang mendapatkan nilai variabel $PSUICulture, gagal.

Invoke-Command -Session $s {Get-UICulture}
en-US

Invoke-Command -Session $s {$PSUICulture}
The syntax is not supported by this runspace. This might be
because it is in no-language mode.
+ CategoryInfo          : ParserError: ($PSUICulture:String) [],
ParseException
+ FullyQualifiedErrorId : ScriptsNotAllowed

Mengedit File Konfigurasi Sesi

Semua pengaturan dalam konfigurasi sesi kecuali untuk RunAsVirtualAccount dan RunAsVirtualAccountGroups dapat dimodifikasi dengan mengedit file konfigurasi sesi yang digunakan oleh konfigurasi sesi. Untuk melakukan ini, mulailah dengan menemukan salinan aktif file konfigurasi sesi.

Saat Anda menggunakan file konfigurasi sesi dalam konfigurasi sesi, PowerShell membuat salinan aktif file konfigurasi sesi dan menyimpannya di direktori $pshome\SessionConfig di komputer lokal.

Lokasi salinan aktif file konfigurasi sesi disimpan di properti ConfigFilePath dari objek konfigurasi sesi.

Perintah berikut mendapatkan lokasi file konfigurasi sesi untuk konfigurasi sesi NoLanguage.

(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath

Perintah tersebut mengembalikan jalur file yang mirip dengan yang berikut ini:

C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

Anda dapat mengedit file .pssc di editor teks apa pun. Setelah file disimpan, file akan digunakan oleh sesi baru apa pun yang menggunakan konfigurasi sesi.

Jika Anda perlu mengubah pengaturan RunAsVirtualAccount atau RunAsVirtualAccountGroups, Anda harus membatalkan pendaftaran konfigurasi sesi dan mendaftarkan ulang file konfigurasi sesi yang menyertakan nilai yang diedit.

Menguji File Konfigurasi Sesi

Gunakan cmdlet Test-PSSessionConfigurationFile untuk menguji file konfigurasi sesi yang diedit secara manual. Itu penting: jika sintaks dan nilai file bukan pengguna yang valid tidak akan dapat menggunakan konfigurasi sesi untuk membuat sesi.

Misalnya, perintah berikut menguji file konfigurasi sesi aktif dari konfigurasi sesi NoLanguage.

Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\
WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

Jika sintaks dan nilai dalam file konfigurasi valid Test-PSSessionConfigurationFile mengembalikan True. Jika sintaks dan nilai tidak valid, cmdlet mengembalikan False.

Anda dapat menggunakan Test-PSSessionConfigurationFile untuk menguji file konfigurasi sesi apa pun, termasuk file yang dibuat cmdlet New-PSSessionConfiguration. Untuk informasi selengkapnya, lihat topik bantuan untuk cmdlet Test-PSSessionConfigurationFile.

Menghapus File Konfigurasi Sesi

Anda tidak dapat menghapus file konfigurasi sesi dari konfigurasi sesi. Namun, Anda dapat mengganti file dengan file baru yang menggunakan pengaturan default. Ini secara efektif membatalkan pengaturan yang digunakan oleh file konfigurasi asli.

Untuk mengganti file konfigurasi sesi, buat file konfigurasi sesi baru yang menggunakan pengaturan default, lalu gunakan cmdlet Set-PSSessionConfiguration untuk mengganti file konfigurasi sesi kustom dengan file baru.

Misalnya, perintah berikut membuat file konfigurasi sesi Default lalu mengganti file konfigurasi sesi aktif dalam konfigurasi sesi NoLanguage.

New-PSSessionConfigurationFile -Path .\Default.pssc
Set-PSSessionConfiguration -Name NoLanguage
-Path .\Default.pssc

Setelah perintah ini selesai, konfigurasi sesi NoLanguage akan benar-benar memberikan dukungan bahasa penuh (pengaturan default) untuk semua sesi yang dibuat dengan konfigurasi sesi tersebut.

Melihat Properti Konfigurasi Sesi Objek konfigurasi sesi yang mewakili konfigurasi sesi menggunakan file konfigurasi sesi memiliki properti tambahan yang memudahkan untuk menemukan dan menganalisis konfigurasi sesi. (Perhatikan bahwa nama jenis yang ditunjukkan di bawah ini menyertakan definisi tampilan yang diformat.) Anda dapat melihat properti dengan menjalankan cmdlet Get-PSSessionConfiguration dan menyalurkan data yang dikembalikan ke cmdlet Get-Member:

Get-PSSessionConfiguration NoLanguage | Get-Member
TypeName: Microsoft.PowerShell.Commands.PSSessionConfigurationCommands
#PSSessionConfiguration

Name                          MemberType     Definition
----                          ----------     ----------
Equals                        Method         bool Equals(System.O...
GetHashCode                   Method         int GetHashCode()
GetType                       Method         type GetType()
ToString                      Method         string ToString()
Architecture                  NoteProperty   System.String Archit...
Author                        NoteProperty   System.String Author...
AutoRestart                   NoteProperty   System.String AutoRe...
Capability                    NoteProperty   System.Object[] Capa...
CompanyName                   NoteProperty   System.String Compan...
configfilepath                NoteProperty   System.String config...
Copyright                     NoteProperty   System.String Copyri...
Enabled                       NoteProperty   System.String Enable...
ExactMatch                    NoteProperty   System.String ExactM...
ExecutionPolicy               NoteProperty   System.String Execut...
Filename                      NoteProperty   System.String Filena...
GUID                          NoteProperty   System.String GUID=0...
ProcessIdleTimeoutSec         NoteProperty   System.String Proces...
IdleTimeoutms                 NoteProperty   System.String IdleTi...
lang                          NoteProperty   System.String lang=e...
LanguageMode                  NoteProperty   System.String Langua...
MaxConcurrentCommandsPerShell NoteProperty   System.String MaxCon...
MaxConcurrentUsers            NoteProperty   System.String MaxCon...
MaxIdleTimeoutms              NoteProperty   System.String MaxIdl...
MaxMemoryPerShellMB           NoteProperty   System.String MaxMem...
MaxProcessesPerShell          NoteProperty   System.String MaxPro...
MaxShells                     NoteProperty   System.String MaxShells
MaxShellsPerUser              NoteProperty   System.String MaxShe...
Name                          NoteProperty   System.String Name=N...
PSVersion                     NoteProperty   System.String PSVersion
ResourceUri                   NoteProperty   System.String Resour...
RunAsPassword                 NoteProperty   System.String RunAsP...
RunAsUser                     NoteProperty   System.String RunAsUser
SchemaVersion                 NoteProperty   System.String Schema...
SDKVersion                    NoteProperty   System.String SDKVer...
OutputBufferingMode           NoteProperty   System.String Output...
SessionType                   NoteProperty   System.String Sessio...
UseSharedProcess              NoteProperty   System.String UseSha...
SupportsOptions               NoteProperty   System.String Suppor...
xmlns                         NoteProperty   System.String xmlns=...
XmlRenderingType              NoteProperty   System.String XmlRen...
Permission                    ScriptProperty System.Object Permis...

Properti ini memudahkan pencarian konfigurasi sesi tertentu. Misalnya, Anda dapat menggunakan properti ExecutionPolicy untuk menemukan konfigurasi sesi yang mendukung sesi dengan kebijakan eksekusi RemoteSigned. Perhatikan bahwa, karena properti ExecutionPolicy hanya ada pada sesi yang menggunakan file konfigurasi sesi, perintah mungkin tidak mengembalikan semua konfigurasi sesi yang memenuhi syarat.

Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}

Perintah berikut mendapatkan konfigurasi sesi di mana RunAsUser adalah administrator Exchange.

 Get-PSSessionConfiguration |
where {$_.RunAsUser -eq "Exchange01\Admin01"}

Untuk melihat informasi tentang definisi peran yang terkait dengan konfigurasi, gunakan cmdlet Get-PSSessionCapability. Cmdlet ini memungkinkan Anda menentukan perintah dan lingkungan yang tersedia untuk pengguna tertentu di titik akhir tertentu.

Catatan

Konfigurasi sesi juga mendukung jenis sesi yang dikenal sebagai sesi "kosong". Jenis sesi Kosong memungkinkan Anda membuat sesi kustom dengan perintah yang dipilih. Jika Anda tidak menambahkan modul, fungsi, atau skrip ke sesi kosong, sesi terbatas pada ekspresi dan mungkin tidak praktis digunakan. Properti SessionType memberi tahu Anda apakah Anda bekerja dengan sesi kosong atau tidak.

Lihat juga