ค้นหาเว็บไซต์

เกี่ยวกับไฟล์การกำหนดค่าเซสชัน


คำอธิบายสั้น ๆ

อธิบายไฟล์การกำหนดค่าเซสชัน ซึ่งใช้ในการกำหนดค่าเซสชัน (หรือที่เรียกว่า "จุดสิ้นสุด") เพื่อกำหนดสภาพแวดล้อมของเซสชันที่ใช้การกำหนดค่าเซสชัน

คำอธิบายยาว

ข้อมูลนี้ใช้กับ PowerShell ที่ทำงานบน Windows เท่านั้น

"ไฟล์การกำหนดค่าเซสชัน" คือไฟล์ข้อความที่มีนามสกุลไฟล์ .pssc ซึ่งมีตารางแฮชของคุณสมบัติและค่าการกำหนดค่าเซสชัน คุณสามารถใช้ไฟล์การกำหนดค่าเซสชันเพื่อตั้งค่าคุณสมบัติของการกำหนดค่าเซสชันได้ การทำเช่นนี้จะกำหนดสภาพแวดล้อมของเซสชัน PowerShell ที่ใช้การกำหนดค่าเซสชันนั้น

ไฟล์การกำหนดค่าเซสชันทำให้ง่ายต่อการสร้างการกำหนดค่าเซสชันแบบกำหนดเองโดยไม่ต้องใช้แอสเซมบลีหรือสคริปต์ C# ที่ซับซ้อน

"การกำหนดค่าเซสชัน" หรือ "จุดสิ้นสุด" คือชุดของการตั้งค่าคอมพิวเตอร์ในระบบที่กำหนดสิ่งต่าง ๆ ที่ผู้ใช้สามารถสร้างเซสชันบนคอมพิวเตอร์ได้ ซึ่งคำสั่งที่ผู้ใช้สามารถเรียกใช้ในเซสชันเหล่านั้น และเซสชันควรทำงานเป็นบัญชีเสมือนที่ได้รับสิทธิ์หรือไม่ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าเซสชัน โปรดดู about_Session_Configurations

การกำหนดค่าเซสชันถูกนำมาใช้ใน Windows PowerShell 2.0 และไฟล์การกำหนดค่าเซสชันถูกนำมาใช้ใน Windows PowerShell 3.0 คุณต้องใช้ Windows PowerShell 3.0 เพื่อรวมไฟล์การกำหนดค่าเซสชันในการกำหนดค่าเซสชัน อย่างไรก็ตาม ผู้ใช้ Windows PowerShell 2.0 (และใหม่กว่า) จะได้รับผลกระทบจากการตั้งค่าในการกำหนดค่าเซสชัน

การสร้างเซสชันที่กำหนดเอง

คุณสามารถปรับแต่งคุณสมบัติต่างๆ ของเซสชัน PowerShell ได้โดยการระบุคุณสมบัติเซสชันในการกำหนดค่าเซสชัน คุณสามารถปรับแต่งเซสชันได้โดยการเขียนโปรแกรม C# ที่กำหนด runspace ที่กำหนดเอง หรือคุณสามารถใช้ไฟล์การกำหนดค่าเซสชันเพื่อกำหนดคุณสมบัติของเซสชันที่สร้างขึ้นโดยใช้การกำหนดค่าเซสชัน ตามกฎทั่วไป การใช้ไฟล์การกำหนดค่าเซสชันจะง่ายกว่าการเขียนโปรแกรม C#

คุณสามารถใช้ไฟล์การกำหนดค่าเซสชันเพื่อสร้างรายการต่างๆ เช่น เซสชันที่มีฟังก์ชันเต็มรูปแบบสำหรับผู้ใช้ที่เชื่อถือได้สูง เซสชั่นที่ถูกล็อคซึ่งทำให้เข้าถึงได้น้อยที่สุด เซสชันที่ออกแบบมาเพื่อเฉพาะและประกอบด้วยโมดูลที่จำเป็นสำหรับงานเหล่านั้นเท่านั้น และเซสชันที่ผู้ใช้ที่ไม่มีสิทธิ์สามารถเรียกใช้คำสั่งเฉพาะเป็นบัญชีที่มีสิทธิ์เท่านั้น

นอกจากนั้น คุณยังสามารถจัดการได้ว่าผู้ใช้เซสชันจะสามารถใช้องค์ประกอบภาษา PowerShell เช่น บล็อกสคริปต์ หรือผู้ใช้สามารถเรียกใช้เฉพาะคำสั่งได้หรือไม่ คุณสามารถจัดการเวอร์ชันของผู้ใช้ PowerShell ที่สามารถเรียกใช้ในเซสชันได้ จัดการโมดูลที่จะนำเข้าเข้าสู่เซสชั่น และจัดการว่าเซสชัน cmdlets ฟังก์ชัน และนามแฝงใดที่ผู้ใช้สามารถเรียกใช้ได้ เมื่อใช้ฟิลด์ RoleDefinitions คุณสามารถมอบความสามารถที่แตกต่างกันให้กับผู้ใช้ในเซสชันตามความเป็นสมาชิกกลุ่ม

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ RoleDefinitions และวิธีการกำหนดค่านี้ ดูหัวข้อวิธีใช้สำหรับ New-PSRoleCapabilityFile Cmdlet

การสร้างไฟล์การกำหนดค่าเซสชัน

วิธีที่ง่ายที่สุดในการสร้างไฟล์การกำหนดค่าเซสชันคือการใช้ New-PSSessionConfigurationFile cmdlet cmdlet นี้จะสร้างไฟล์ที่ใช้ไวยากรณ์และรูปแบบที่ถูกต้อง และจะตรวจสอบค่าคุณสมบัติไฟล์การกำหนดค่าจำนวนมากโดยอัตโนมัติ

สำหรับคำอธิบายโดยละเอียดของคุณสมบัติที่คุณสามารถตั้งค่าในไฟล์การกำหนดค่าเซสชัน โปรดดูหัวข้อวิธีใช้สำหรับ New-PSSessionConfigurationFile cmdlet

คำสั่งต่อไปนี้สร้างไฟล์การกำหนดค่าเซสชันที่ใช้ค่าเริ่มต้น ไฟล์การกำหนดค่าผลลัพธ์จะใช้เฉพาะค่าเริ่มต้น เนื่องจากไม่มีพารามิเตอร์อื่นนอกเหนือจากพารามิเตอร์ Path (ซึ่งระบุเส้นทางของไฟล์) รวมอยู่ด้วย:

New-PSSessionConfigurationFile -Path .\Defaults.pssc

หากต้องการดูไฟล์การกำหนดค่าใหม่ในโปรแกรมแก้ไขข้อความเริ่มต้นของคุณ ให้ใช้คำสั่งต่อไปนี้:

Invoke-Item -Path .\Defaults.pssc

หากต้องการสร้างการกำหนดค่าเซสชันสำหรับเซสชันที่ผู้ใช้สามารถเรียกใช้คำสั่ง แต่ไม่สามารถใช้องค์ประกอบอื่นของภาษา PowerShell ให้พิมพ์:

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

ในคำสั่งก่อนหน้า การตั้งค่าพารามิเตอร์ LanguageMode เป็น NoLanguage จะป้องกันไม่ให้ผู้ใช้ทำสิ่งต่างๆ เช่น การเขียนหรือเรียกใช้สคริปต์ หรือการใช้ตัวแปร

หากต้องการสร้างการกำหนดค่าเซสชันสำหรับเซสชันที่ผู้ใช้สามารถใช้เฉพาะ Get cmdlets ให้พิมพ์:

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

ในตัวอย่างก่อนหน้านี้ การตั้งค่าพารามิเตอร์ VisibleCmdlets เป็น Get-* จำกัดผู้ใช้ให้ cmdlets ที่มีชื่อที่ขึ้นต้นด้วยค่าสตริง "Get-"

หากต้องการสร้างการกำหนดค่าเซสชันสำหรับเซสชันที่ทำงานภายใต้บัญชีเสมือนที่มีสิทธิ์ แทนที่จะเป็นข้อมูลประจำตัวของผู้ใช้ ให้พิมพ์:

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

หากต้องการสร้างคอนฟิกูเรชันเซสชันสำหรับเซสชันที่ระบุคำสั่งที่ผู้ใช้มองเห็นได้ในไฟล์ความสามารถของบทบาท ให้พิมพ์:

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

การใช้ไฟล์การกำหนดค่าเซสชัน

คุณสามารถรวมไฟล์การกำหนดค่าเซสชันเมื่อคุณสร้างการกำหนดค่าเซสชันหรือเพิ่มคุณสามารถเพิ่มไฟล์ลงในการกำหนดค่าเซสชันในภายหลังได้

หากต้องการรวมไฟล์การกำหนดค่าเซสชันเมื่อสร้างการกำหนดค่าเซสชัน ให้ใช้พารามิเตอร์ Path ของ Register-PSSessionConfiguration cmdlet

ตัวอย่างเช่น คำสั่งต่อไปนี้ใช้ไฟล์ NoLanguage.pssc เมื่อสร้างการกำหนดค่าเซสชัน NoLanguage

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

เมื่อเซสชัน NoLanguage ใหม่เริ่มต้นขึ้น ผู้ใช้จะสามารถเข้าถึงคำสั่ง PowerShell เท่านั้น

หากต้องการเพิ่มไฟล์การกำหนดค่าเซสชันลงในการกำหนดค่าเซสชันที่มีอยู่ ให้ใช้ Set-PSSessionConfiguration cmdlet และพารามิเตอร์ Path สิ่งนี้ส่งผลต่อเซสชันใหม่ที่สร้างขึ้นด้วยการกำหนดค่าเซสชันที่ระบุ โปรดทราบว่า Set-PSSessionConfiguration cmdlet จะเปลี่ยนเซสชันเองและไม่ได้แก้ไขไฟล์การกำหนดค่าเซสชัน

ตัวอย่างเช่น คำสั่งต่อไปนี้จะเพิ่มไฟล์ NoLanguage.pssc ในการกำหนดค่าเซสชัน LockedDown

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

เมื่อผู้ใช้ใช้การกำหนดค่าเซสชัน LockedDown เพื่อสร้างเซสชัน พวกเขาจะสามารถเรียกใช้ cmdlets ได้ แต่จะไม่สามารถสร้างหรือใช้ตัวแปร กำหนดค่า หรือใช้องค์ประกอบภาษา PowerShell อื่น ๆ ได้

คำสั่งต่อไปนี้ใช้ New-PSSession cmdlet เพื่อสร้างเซสชันบนคอมพิวเตอร์ Srv01 ที่ใช้การกำหนดค่าเซสชัน LockedDown โดยบันทึกการอ้างอิงออบเจ็กต์ไปยังเซสชันในตัวแปร $s ACL (รายการควบคุมการเข้าถึง) ของการกำหนดค่าเซสชันจะกำหนดว่าใครสามารถใช้รายการดังกล่าวเพื่อสร้างเซสชันได้

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

เนื่องจากมีการเพิ่มข้อจำกัด NoLanguage ในการกำหนดค่าเซสชัน LockedDown ผู้ใช้ในเซสชัน LockedDown จะสามารถเรียกใช้คำสั่ง PowerShell และ cmdlets เท่านั้น ตัวอย่างเช่น สองคำสั่งต่อไปนี้ใช้ Invoke-Command cmdlet เพื่อรันคำสั่งในเซสชันที่อ้างอิงในตัวแปร $s คำสั่งแรกซึ่งเรียกใช้ Get-UICulture cmdlet และไม่ใช้ตัวแปรใดๆ จะดำเนินการสำเร็จ คำสั่งที่สองซึ่งรับค่าของตัวแปร $PSUICulture ล้มเหลว

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

การแก้ไขไฟล์การกำหนดค่าเซสชัน

การตั้งค่าทั้งหมดในการกำหนดค่าเซสชัน ยกเว้น RunAsVirtualAccount และ RunAsVirtualAccountGroups สามารถแก้ไขได้โดยการแก้ไขไฟล์การกำหนดค่าเซสชันที่ใช้โดยการกำหนดค่าเซสชัน เมื่อต้องการทำเช่นนี้ ให้เริ่มต้นด้วยการค้นหาสำเนาที่ใช้งานอยู่ของไฟล์การกำหนดค่าเซสชัน

เมื่อคุณใช้ไฟล์การกำหนดค่าเซสชันในการกำหนดค่าเซสชัน PowerShell จะสร้างสำเนาที่ใช้งานอยู่ของไฟล์การกำหนดค่าเซสชันและจัดเก็บไว้ในไดเร็กทอรี $pshome\SessionConfig บนเครื่องคอมพิวเตอร์

ตำแหน่งของสำเนาที่ใช้งานอยู่ของไฟล์การกำหนดค่าเซสชันจะถูกเก็บไว้ในคุณสมบัติ ConfigFilePath ของออบเจ็กต์การกำหนดค่าเซสชัน

คำสั่งต่อไปนี้รับตำแหน่งของไฟล์การกำหนดค่าเซสชันสำหรับการกำหนดค่าเซสชัน NoLanguage

(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath

คำสั่งนั้นส่งคืนพาธของไฟล์ที่คล้ายกับตัวอย่างต่อไปนี้:

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

คุณสามารถแก้ไขไฟล์ .pssc ในโปรแกรมแก้ไขข้อความใดก็ได้ หลังจากบันทึกไฟล์แล้ว ไฟล์นั้นจะถูกใช้งานโดยเซสชันใหม่ที่ใช้การกำหนดค่าเซสชัน

หากคุณต้องการแก้ไขการตั้งค่า RunAsVirtualAccount หรือ RunAsVirtualAccountGroups คุณต้องยกเลิกการลงทะเบียนการกำหนดค่าเซสชัน และลงทะเบียนไฟล์การกำหนดค่าเซสชันที่มีค่าที่แก้ไขอีกครั้ง

การทดสอบไฟล์การกำหนดค่าเซสชัน

ใช้ Test-PSSessionConfigurationFile cmdlet เพื่อทดสอบไฟล์การกำหนดค่าเซสชันที่แก้ไขด้วยตนเอง สิ่งสำคัญคือ: หากไวยากรณ์และค่าของไฟล์ไม่ถูกต้อง ผู้ใช้จะไม่สามารถใช้การกำหนดค่าเซสชันเพื่อสร้างเซสชันได้

ตัวอย่างเช่น คำสั่งต่อไปนี้จะทดสอบไฟล์การกำหนดค่าเซสชันที่ใช้งานอยู่ของการกำหนดค่าเซสชัน NoLanguage

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

หากไวยากรณ์และค่าในไฟล์คอนฟิกูเรชันถูกต้อง Test-PSSessionConfigurationFile จะส่งกลับค่า True หากไวยากรณ์และค่าไม่ถูกต้อง cmdlet จะส่งกลับค่าเท็จ

คุณสามารถใช้ Test-PSSessionConfigurationFile เพื่อทดสอบไฟล์การกำหนดค่าเซสชันใดๆ รวมถึงไฟล์ที่ New-PSSessionConfiguration cmdlet สร้างขึ้น สำหรับข้อมูลเพิ่มเติม ให้ดูหัวข้อวิธีใช้สำหรับ Test-PSSessionConfigurationFile cmdlet

การลบไฟล์การกำหนดค่าเซสชัน

คุณไม่สามารถลบไฟล์การกำหนดค่าเซสชันออกจากการกำหนดค่าเซสชันได้ อย่างไรก็ตาม คุณสามารถแทนที่ไฟล์ด้วยไฟล์ใหม่ที่ใช้การตั้งค่าเริ่มต้นได้ วิธีนี้จะยกเลิกการตั้งค่าที่ใช้โดยไฟล์การกำหนดค่าดั้งเดิมอย่างมีประสิทธิภาพ

หากต้องการแทนที่ไฟล์การกำหนดค่าเซสชัน ให้สร้างไฟล์การกำหนดค่าเซสชันใหม่ที่ใช้การตั้งค่าเริ่มต้น จากนั้นใช้ Set-PSSessionConfiguration cmdlet เพื่อแทนที่ไฟล์การกำหนดค่าเซสชันแบบกำหนดเองด้วยไฟล์ใหม่

ตัวอย่างเช่น คำสั่งต่อไปนี้จะสร้างไฟล์การกำหนดค่าเซสชันเริ่มต้น จากนั้นแทนที่ไฟล์การกำหนดค่าเซสชันที่ใช้งานอยู่ในการกำหนดค่าเซสชัน NoLanguage

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

เมื่อคำสั่งเหล่านี้เสร็จสิ้น การกำหนดค่าเซสชัน NoLanguage จะให้การสนับสนุนภาษาเต็มรูปแบบ (การตั้งค่าเริ่มต้น) สำหรับเซสชันทั้งหมดที่สร้างขึ้นด้วยการกำหนดค่าเซสชันนั้น

การดูคุณสมบัติของการกำหนดค่าเซสชัน ออบเจ็กต์การกำหนดค่าเซสชันที่แสดงถึงการกำหนดค่าเซสชันโดยใช้ไฟล์การกำหนดค่าเซสชันมีคุณสมบัติเพิ่มเติมที่ทำให้ง่ายต่อการค้นหาและวิเคราะห์การกำหนดค่าเซสชัน (โปรดทราบว่าชื่อประเภทที่แสดงด้านล่างมีข้อกำหนดมุมมองที่จัดรูปแบบไว้) คุณสามารถดูคุณสมบัติได้โดยการเรียกใช้ Get-PSSessionConfiguration cmdlet และไพพ์ข้อมูลที่ส่งคืนไปยัง Get-Member cmdlet:

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...

คุณสมบัติเหล่านี้ช่วยให้ค้นหาการกำหนดค่าเซสชันที่ต้องการได้ง่าย ตัวอย่างเช่น คุณสามารถใช้คุณสมบัติ ExecutionPolicy เพื่อค้นหาการกำหนดค่าเซสชันที่รองรับเซสชันที่มีนโยบายการดำเนินการ RemoteSigned โปรดทราบว่า เนื่องจากคุณสมบัติ ExecutionPolicy มีอยู่เฉพาะในเซสชันที่ใช้ไฟล์การกำหนดค่าเซสชัน คำสั่งอาจไม่ส่งคืนการกำหนดค่าเซสชันที่มีคุณสมบัติครบถ้วนทั้งหมด

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

คำสั่งต่อไปนี้รับการกำหนดค่าเซสชันที่ RunAsUser เป็นผู้ดูแลระบบ Exchange

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

หากต้องการดูข้อมูลเกี่ยวกับคำจำกัดความบทบาทที่เกี่ยวข้องกับการกำหนดค่าให้ใช้ Get-PSSessionCapability cmdlet cmdlet นี้ช่วยให้คุณสามารถกำหนดคำสั่งและสภาพแวดล้อมที่พร้อมใช้งานสำหรับผู้ใช้เฉพาะในจุดสิ้นสุดเฉพาะ

หมายเหตุ

การกำหนดค่าเซสชันยังรองรับประเภทของเซสชันที่เรียกว่าเซสชัน "ว่างเปล่า" ประเภทเซสชันว่างช่วยให้คุณสร้างเซสชันแบบกำหนดเองด้วยคำสั่งที่เลือกได้ หากคุณไม่เพิ่มโมดูล ฟังก์ชัน หรือสคริปต์ลงในเซสชันว่าง เซสชันนั้นจะถูกจำกัดไว้เพียงนิพจน์ และอาจไม่มีการใช้งานจริงใดๆ คุณสมบัติ SessionType จะบอกคุณว่าคุณกำลังทำงานกับเซสชันว่างหรือไม่

ดูเพิ่มเติม

  • about_Session_Configurations
  • ใหม่-PSRoleCapabilityFile
  • ใหม่-PSSession
  • รับ PSSessionCapability
  • ปิดการใช้งาน-PSSessionConfiguration
  • เปิดใช้งาน-PSSessionConfiguration
  • รับ-PSSessionConfiguration
  • ลงทะเบียน-PSSessionConfiguration
  • ชุด-PSSessionConfiguration
  • ยกเลิกการลงทะเบียน-PSSessionConfiguration
  • ไฟล์ PSSessionConfigurationFile ใหม่
  • ทดสอบ-PSSessionConfigurationFile

บทความที่เกี่ยวข้อง