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