เกี่ยวกับผู้ให้บริการรีจิสทรี
ชื่อผู้ให้บริการ
ทะเบียน
ไดรฟ์
HKLM:,HKCU:
ความสามารถ
ควรดำเนินการ, ใช้ธุรกรรม
คำอธิบายสั้น ๆ
ให้การเข้าถึงคีย์รีจิสทรี รายการ และค่าใน PowerShell
คำอธิบายโดยละเอียด
ข้อมูลนี้ใช้กับ PowerShell ที่ทำงานบน Windows เท่านั้น
ผู้ให้บริการรีจิสทรีของ PowerShell ช่วยให้คุณสามารถรับ เพิ่ม เปลี่ยนแปลง ล้าง และลบคีย์รีจิสทรี รายการ และค่าใน PowerShell
ไดรฟ์ รีจิสทรี เป็นเนมสเปซแบบลำดับชั้นที่มีคีย์รีจิสทรีและคีย์ย่อยบนคอมพิวเตอร์ของคุณ รายการรีจิสทรีและค่าไม่ใช่องค์ประกอบของลำดับชั้นนั้น แต่เป็นคุณสมบัติของแต่ละคีย์แทน
ผู้ให้บริการรีจิสทรีสนับสนุน cmdlets ต่อไปนี้:
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Clear-ItemProperty
- Get-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Set-ItemProperty
- Get-Acl
- Set-Acl
ประเภทที่เปิดเผยโดยผู้ให้บริการรายนี้
ผู้ให้บริการรีจิสทรีส่งคืนข้อมูลรีจิสทรีในรูปแบบใดประเภทหนึ่งจากสองประเภท:
- Microsoft.Win32.RegistryKey สำหรับรีจิสตรีคีย์
- PSCustomObject สำหรับค่ารีจิสทรี
การนำทางไดรฟ์รีจิสทรี
ผู้ให้บริการรีจิสทรีเปิดเผยที่เก็บข้อมูลของตนเป็นไดรฟ์เริ่มต้นสองตัว
HKLM:แมปไปยังกลุ่มรีจิสทรีHKEY_LOCAL_MACHINEHKCU:แมปกับกลุ่มรีจิสทรีHKEY_CURRENT_USER
หากต้องการทำงานกับรีจิสทรี คุณสามารถเปลี่ยนตำแหน่งของคุณเป็นไดรฟ์ HKLM: ได้โดยใช้คำสั่งต่อไปนี้
Set-Location HKLM:
หากต้องการกลับไปยังไดรฟ์ระบบไฟล์ ให้พิมพ์ชื่อไดรฟ์ ตัวอย่างเช่น พิมพ์:
Set-Location C:
คุณยังสามารถทำงานร่วมกับผู้ให้บริการ รีจิสทรี จากไดรฟ์ PowerShell อื่นๆ ได้ หากต้องการอ้างอิงคีย์รีจิสทรีจากตำแหน่งอื่น ให้ใช้ชื่อไดรฟ์ (HKLM:, HKCU:) ในเส้นทาง ใช้เครื่องหมายแบ็กสแลช (\) หรือเครื่องหมายทับ (/) เพื่อระบุระดับของไดรฟ์ Registry
PS C:\> cd HKLM:\Software
บันทึก
PowerShell ใช้นามแฝงเพื่อให้คุณมีวิธีการทำงานกับเส้นทางของผู้ให้บริการที่คุ้นเคย คำสั่งเช่น dir และ ls เป็นนามแฝงสำหรับ Get-ChildItem, cd เป็นนามแฝงสำหรับ Set-Location และ pwd เป็นนามแฝงสำหรับ Get-Location
ตัวอย่างสุดท้ายนี้แสดงไวยากรณ์เส้นทางอื่นที่คุณสามารถใช้เพื่อนำทางผู้ให้บริการ รีจิสทรี ไวยากรณ์นี้ใช้ชื่อผู้ให้บริการ ตามด้วยเครื่องหมายทวิภาคสองตัว :: ไวยากรณ์นี้อนุญาตให้คุณใช้ชื่อ HIVE แบบเต็ม แทนชื่อไดรฟ์ที่แมป HKLM
cd "Registry::HKEY_LOCAL_MACHINE\Software"
การแสดงเนื้อหาของคีย์รีจิสทรี
รีจิสทรีแบ่งออกเป็นคีย์ คีย์ย่อย และรายการ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างรีจิสทรี ดูโครงสร้างของรีจิสทรี
ในไดรฟ์ รีจิสทรี แต่ละคีย์จะเป็นคอนเทนเนอร์ คีย์สามารถมีจำนวนคีย์เท่าใดก็ได้ คีย์รีจิสทรีที่มีคีย์หลักเรียกว่าคีย์ย่อย คุณสามารถใช้ Get-ChildItem เพื่อดูคีย์รีจิสทรีและ Set-Location เพื่อนำทางไปยังเส้นทางคีย์
ค่ารีจิสทรีเป็นคุณลักษณะของคีย์รีจิสทรี ในไดรฟ์ รีจิสทรี เรียกว่า คุณสมบัติของรายการ คีย์รีจิสทรีสามารถมีทั้งคีย์ลูกและคุณสมบัติของรายการ
ในตัวอย่างนี้ ความแตกต่างระหว่าง Get-Item และ Get-ChildItem จะปรากฏขึ้น เมื่อคุณใช้ Get-Item ในคีย์รีจิสทรี "Spooler" คุณจะสามารถดูคุณสมบัติของตัวจัดคิวได้
Get-Item -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Name Property
---- --------
Spooler DependOnService : {RPCSS, http}
Description : @%systemroot%\system32\spoolsv.exe,-2
DisplayName : @%systemroot%\system32\spoolsv.exe,-1
ErrorControl : 1
FailureActions : {16, 14, 0, 0...}
Group : SpoolerGroup
ImagePath : C:\WINDOWS\System32\spoolsv.exe
ObjectName : LocalSystem
RequiredPrivileges : {SeTcbPrivilege, SeImpersonatePrivilege, ...
ServiceSidType : 1
Start : 2
Type : 27
คีย์รีจิสทรีแต่ละคีย์สามารถมีคีย์ย่อยได้เช่นกัน เมื่อคุณใช้ Get-Item บนรีจิสทรีคีย์ คีย์ย่อยจะไม่แสดง Get-ChildItem cmdlet จะแสดงคีย์ย่อยของคีย์ "Spooler" รวมถึงคุณสมบัติของคีย์ย่อยแต่ละรายการด้วย คุณสมบัติคีย์หลักจะไม่แสดงเมื่อใช้ Get-ChildItem
Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler
Name Property
---- --------
Performance Close : PerfClose
Collect : PerfCollect
Collect Timeout : 2000
Library : C:\Windows\System32\winspool.drv
Object List : 1450
Open : PerfOpen
Open Timeout : 4000
Security Security : {1, 0, 20, 128...}
cmdlet Get-Item สามารถใช้ในตำแหน่งปัจจุบันได้เช่นกัน ตัวอย่างต่อไปนี้นำทางไปยังคีย์รีจิสทรี "ตัวจัดคิว" และรับคุณสมบัติของรายการ จุด . ใช้เพื่อระบุตำแหน่งปัจจุบัน
cd HKLM:\System\CurrentControlSet\Services\Spooler
Get-Item .
Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Name Property
---- --------
Spooler DependOnService : {RPCSS, http}
Description : @%systemroot%\system32\spoolsv.exe,-2
...
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ cmdlets ที่กล่าวถึงในส่วนนี้ ดูบทความต่อไปนี้
-รับ-รายการ -รับ-ChildItem
กำลังดูค่าคีย์รีจิสทรี
ค่าคีย์รีจิสทรีจะถูกจัดเก็บเป็นคุณสมบัติของคีย์รีจิสทรีแต่ละรายการ Get-ItemProperty cmdlet ดูคุณสมบัติของคีย์รีจิสทรีโดยใช้ชื่อที่คุณระบุ ผลลัพธ์คือ PSCustomObject ที่มีคุณสมบัติที่คุณระบุ
ตัวอย่างต่อไปนี้ใช้ cmdlet Get-ItemProperty เพื่อดูคุณสมบัติทั้งหมด การจัดเก็บออบเจ็กต์ผลลัพธ์ในตัวแปรช่วยให้คุณเข้าถึงค่าคุณสมบัติที่ต้องการได้
$p = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
$p.DependOnService
RPCSS
http
การระบุค่าสำหรับพารามิเตอร์ -Name จะเลือกคุณสมบัติที่คุณระบุและส่งกลับค่า PSCustomObject ตัวอย่างต่อไปนี้แสดงความแตกต่างในเอาต์พุตเมื่อคุณใช้พารามิเตอร์ -Name
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem
BUILD : 17134.1
Installation Directory : C:\WINDOWS\system32\WBEM
MOF Self-Install Directory : C:\WINDOWS\system32\WBEM\MOF
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName : Wbem
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
BUILD : 17134.1
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName : Wbem
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
เริ่มต้นใน PowerShell 5.0 cmdlet Get-ItemPropertyValue จะส่งกลับเฉพาะค่าของคุณสมบัติที่คุณระบุ
Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
17134.1
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ cmdlet ของที่ใช้ในส่วนนี้ ดูบทความต่อไปนี้
- Get-ItemProperty
- รับ-ItemPropertyValue
การเปลี่ยนค่าคีย์รีจิสทรี
cmdlet Set-ItemProperty ตั้งค่ารีจิสทรีที่เกี่ยวข้องกับคีย์รีจิสทรี ตัวอย่างต่อไปนี้ใช้ Set-ItemProperty เพื่อเปลี่ยนประเภทการเริ่มต้นบริการตัวจัดคิวเป็นแบบแมนนวล ตัวอย่างนี้เปลี่ยน StartType กลับเป็น อัตโนมัติ โดยใช้ Set-Service cmdlet
Get-Service spooler | Select-Object Name, StartMode
Name StartType
---- ---------
spooler Automatic
$path = "HKLM:\SYSTEM\CurrentControlSet\Services\Spooler\"
Set-ItemProperty -Path $path -Name Start -Value 3
Get-Service spooler | Select-Object Name, StartMode
Name StartType
---- ---------
spooler Manual
Set-Service -Name Spooler -StartupType Automatic
คีย์รีจิสทรีแต่ละรายการมีค่า ค่าเริ่มต้น คุณสามารถเปลี่ยนค่า default สำหรับคีย์รีจิสทรีด้วย Set-Item หรือ Set-ItemProperty
Set-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name "(default)" -Value "one"
Set-Item -Path HKLM:\SOFTWARE\Contoso -Value "two"
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ cmdlet ของที่ใช้ในส่วนนี้ ดูบทความต่อไปนี้
- Set-Item
- Set-ItemProperty
การสร้างคีย์รีจิสทรีและค่า
cmdlet รายการใหม่ จะสร้างคีย์รีจิสทรีใหม่ด้วยชื่อที่คุณระบุ คุณยังสามารถใช้ฟังก์ชัน mkdir ซึ่งจะเรียกใช้ cmdlet New-Item ภายใน
mkdir ContosoCompany
Hive: HKEY_LOCAL_MACHINE\SOFTWARE
Name Property
---- --------
ContosoCompany
คุณสามารถใช้ cmdlet New-ItemProperty เพื่อสร้างค่าในรีจิสทรีคีย์ที่คุณระบุ ตัวอย่างต่อไปนี้สร้างค่า DWORD ใหม่บนคีย์รีจิสทรี ContosoCompany
$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1
บันทึก
ตรวจสอบส่วนพารามิเตอร์แบบไดนามิกในบทความนี้เพื่อดูค่าประเภทอื่นๆ ที่อนุญาต
สำหรับการใช้ cmdlet โดยละเอียด โปรดดูที่ New-ItemProperty
การคัดลอกรีจิสตรีคีย์และค่า
ในผู้ให้บริการ รีจิสทรี ให้ใช้ Copy-Item cmdlet คัดลอกคีย์รีจิสทรีและค่าต่างๆ ใช้ cmdlet Copy-ItemProperty เพื่อคัดลอกค่ารีจิสทรีเท่านั้น คำสั่งต่อไปนี้จะคัดลอกคีย์รีจิสทรี "Contoso" และคุณสมบัติไปยังตำแหน่งที่ระบุ HKLM:\Software\Fabrikam
Copy-Item จะสร้างคีย์ปลายทางหากไม่มีอยู่ หากมีคีย์ปลายทาง Copy-Item จะสร้างคีย์ต้นฉบับที่ซ้ำกันเป็นรายการย่อย (คีย์ย่อย) ของคีย์ปลายทาง
Copy-Item -Path HKLM:\Software\Contoso -Destination HKLM:\Software\Fabrikam
คำสั่งต่อไปนี้ใช้ cmdlet Copy-ItemProperty เพื่อคัดลอกค่า "เซิร์ฟเวอร์" จากคีย์ "Contoso" ไปยังคีย์ "Fabrikam"
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Copy-ItemProperty -Path $source -Destination $dest -Name Server
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ cmdlet ของที่ใช้ในส่วนนี้ ดูบทความต่อไปนี้
- Copy-Item
- Copy-ItemProperty
การย้ายคีย์รีจิสทรีและค่า
Move-Item และ Move-ItemProperty cmdlet ทำงานเหมือน "คัดลอก" หากมีปลายทาง Move-Item จะย้ายคีย์ต้นทางไปข้างใต้คีย์ปลายทาง หากไม่มีคีย์ปลายทาง คีย์ต้นทางจะถูกย้ายไปยังเส้นทางปลายทาง
คำสั่งต่อไปนี้จะย้ายคีย์ "Contoso" ไปยังเส้นทาง HKLM:\SOFTWARE\Fabrikam
Move-Item -Path HKLM:\SOFTWARE\Contoso -Destination HKLM:\SOFTWARE\Fabrikam
คำสั่งนี้จะย้ายคุณสมบัติทั้งหมดจาก HKLM:\SOFTWARE\ContosoCompany ไปยัง HKLM:\SOFTWARE\Fabrikam
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Move-ItemProperty -Path $source -Destination $dest -Name *
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ cmdlet ของที่ใช้ในส่วนนี้ ดูบทความต่อไปนี้
- Move-Item
- Move-ItemProperty
การเปลี่ยนชื่อคีย์รีจิสทรีและค่า
คุณสามารถเปลี่ยนชื่อรีจิสตรีคีย์และค่าได้เหมือนกับที่คุณทำกับไฟล์และโฟลเดอร์ Rename-Item เปลี่ยนชื่อคีย์รีจิสทรี ในขณะที่ Rename-ItemProperty เปลี่ยนชื่อค่ารีจิสทรี
$path = "HKLM:\SOFTWARE\Contoso"
Rename-ItemProperty -Path $path -Name ContosoTest -NewName FabrikamTest
Rename-Item -Path $path -NewName Fabrikam
การเปลี่ยนตัวอธิบายความปลอดภัย
คุณสามารถจำกัดการเข้าถึงคีย์รีจิสทรีได้โดยใช้ Get-Acl และ Set-Acl cmdlets ตัวอย่างต่อไปนี้เพิ่มผู้ใช้ใหม่ที่สามารถควบคุมคีย์รีจิสทรี HKLM:\SOFTWARE\Contoso ได้อย่างสมบูรณ์
$acl = Get-Acl -Path HKLM:\SOFTWARE\Contoso
$rule = New-Object System.Security.AccessControl.RegistryAccessRule `
("CONTOSO\jsmith", "FullControl", "Allow")
$acl.SetAccessRule($rule)
$acl | Set-Acl -Path HKLM:\SOFTWARE\Contoso
สำหรับตัวอย่างเพิ่มเติมและรายละเอียดการใช้ cmdlet ให้ดูบทความต่อไปนี้
- Get-Acl
- Set-Acl
การลบและการล้างคีย์รีจิสทรีและค่า
คุณสามารถลบรายการที่มีอยู่ได้โดยใช้ Remove-Item คุณได้รับพร้อมท์ให้ยืนยันการลบออกหากรายการมีสิ่งอื่นอีก ตัวอย่างต่อไปนี้พยายามลบคีย์ HKLM:\SOFTWARE\Contoso
dir HKLM:\SOFTWARE\Contoso\
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Contoso
Name Property
---- --------
ChildKey
Remove-Item -Path HKLM:\SOFTWARE\Contoso
Confirm
The item at HKLM:\SOFTWARE\Contoso has children and the -Recurse
parameter wasn't specified. If you continue, all children will be removed
with the item. Are you sure you want to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):
หากต้องการลบรายการที่มีอยู่โดยไม่ต้องพร้อมท์ ให้ระบุพารามิเตอร์ -Recurse
Remove-Item -Path HKLM:\SOFTWARE\Contoso -Recurse
หากคุณต้องการลบรายการทั้งหมดภายใน HKLM:\SOFTWARE\Contoso แต่ไม่ใช่ HKLM:\SOFTWARE\Contoso เอง ให้ใช้แบ็กสแลชต่อท้าย \ ตามด้วยไวด์การ์ด
Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse
คำสั่งนี้จะลบค่ารีจิสทรี "ContosoTest" ออกจากคีย์รีจิสทรี HKLM:\SOFTWARE\Contoso
Remove-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name ContosoTest
Clear-Item ล้างค่ารีจิสทรีทั้งหมดสำหรับคีย์ ตัวอย่างต่อไปนี้จะล้างค่าทั้งหมดจากคีย์รีจิสทรี HKLM:\SOFTWARE\Contoso หากต้องการล้างเฉพาะคุณสมบัติเฉพาะ ให้ใช้ Clear-ItemProperty
Get-Item .\Contoso\
Hive: HKEY_LOCAL_MACHINE\SOFTWARE
Name Property
---- --------
Contoso Server : {a, b, c}
HereString : {This is text which contains
newlines. It also contains "quoted" strings}
(default) : 1
Clear-Item .\Contoso\
Get-Item .\Contoso\
Hive: HKEY_LOCAL_MACHINE\SOFTWARE
Name Property
---- --------
Contoso
สำหรับตัวอย่างเพิ่มเติมและรายละเอียดการใช้ cmdlet ให้ดูบทความต่อไปนี้
- Clear-Item
- Clear-ItemProperty
- Remove-Item
- Remove-ItemProperty
พารามิเตอร์แบบไดนามิก
พารามิเตอร์แบบไดนามิกคือพารามิเตอร์ cmdlet ที่เพิ่มโดยผู้ให้บริการ PowerShell และพร้อมใช้งานเฉพาะเมื่อมีการใช้ cmdlet ในไดรฟ์ที่เปิดใช้งานผู้ให้บริการเท่านั้น
พิมพ์
สร้างหรือเปลี่ยนแปลงชนิดข้อมูลของค่ารีจิสทรี ค่าเริ่มต้นคือ String (REG_SZ)
พารามิเตอร์นี้ทำงานตามที่ออกแบบไว้ใน Set-ItemProperty cmdlet นอกจากนี้ยังมีอยู่ใน Set-Item cmdlet ในไดรฟ์รีจิสทรี แต่ไม่มีผลใดๆ
String- ใช้สำหรับค่า REG_SZ ส่งผ่านออบเจ็กต์[System.String]ไปยังพารามิเตอร์ ValueExpandString- ใช้สำหรับค่า REG_EXPAND_SZ ส่งผ่านออบเจ็กต์[System.String]ไปยังพารามิเตอร์ Value สตริงควรมีการอ้างอิงตัวแปรสภาพแวดล้อมที่ยังไม่ได้ขยายซึ่งจะถูกขยายเมื่อดึงค่าไบนารี- ใช้สำหรับค่า REG_BINARY ส่งผ่านออบเจ็กต์[System.Byte[]]ไปยังพารามิเตอร์ ValueDWord- ใช้สำหรับค่า REG_DWORD ส่งผ่านวัตถุ[System.Int32]ไปยังพารามิเตอร์ ValueMultiString- ใช้สำหรับค่า REG_MULTI_SZ ส่งผ่านออบเจ็กต์[System.String[]]ไปยังพารามิเตอร์ ValueQWord- ใช้สำหรับค่า REG_QWORD ส่งผ่านวัตถุ[System.Int64]ไปยังพารามิเตอร์ Valueไม่ทราบ- ระบุประเภทข้อมูลรีจิสทรีที่ไม่สนับสนุน เช่น ค่า REG_RESOURCE_LIST
การใช้ไปป์ไลน์
cmdlet ของผู้ให้บริการยอมรับอินพุตไปป์ไลน์ คุณสามารถใช้ไปป์ไลน์เพื่อทำให้งานง่ายขึ้นโดยการส่งข้อมูลของผู้ให้บริการจาก cmdlet หนึ่งไปยัง cmdlet ของผู้ให้บริการรายอื่น หากต้องการอ่านเพิ่มเติมเกี่ยวกับวิธีการใช้ไปป์ไลน์กับผู้ให้บริการ cmdlet ดูการอ้างอิง cmdlet ที่มีให้ในบทความนี้
การขอความช่วยเหลือ
เริ่มต้นใน Windows PowerShell 3.0 คุณจะได้รับหัวข้อวิธีใช้ที่กำหนดเองสำหรับ cmdlets ของผู้ให้บริการ ซึ่งจะอธิบายวิธีการทำงานของ cmdlets เหล่านั้นในไดรฟ์ระบบไฟล์
หากต้องการรับหัวข้อวิธีใช้ที่ปรับแต่งสำหรับไดรฟ์ระบบไฟล์ ให้เรียกใช้คำสั่ง Get-Help ในไดรฟ์ระบบไฟล์ หรือใช้พารามิเตอร์ Path เพื่อระบุไดรฟ์ระบบไฟล์ .
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM:
ดูเพิ่มเติม
- about_ผู้ให้บริการ