about_Registry_Provider
Název poskytovatele
Registr
Jednotky
HKLM:
, HKCU:
Možnosti
ShouldProcess, UseTransactions
Krátký popis
Poskytuje přístup ke klíčům registru, položkám a hodnotám v PowerShellu.
Podrobný popis
Zprostředkovatel registru PowerShellu umožňuje získat, přidat, změnit, vymazat a odstranit klíče registru, položky a hodnoty v PowerShellu.
Jednotky registru jsou hierarchický obor názvů obsahující klíče registru a podklíče ve vašem počítači. Položky registru a hodnoty nejsou součástí této hierarchie. Místo toho se jedná o vlastnosti jednotlivých klíčů.
Poskytovatel registru podporuje následující rutiny:
- Získat umístění
- Nastavení umístění
- Získat položku
- Get-ChildItem
- Vyvolání položky
- Přesunout položku
- Nová položka
- Odebrat položku
- Clear-ItemProperty
- Get-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Set-ItemProperty
- Get-Acl
- Set-Acl
Typy vystavené tímto poskytovatelem
Zprostředkovatel registru vrací data registru v jednom ze dvou typů:
- Microsoft.Win32.RegistryKey pro klíče registru
- PSCustomObject pro hodnoty registru
Navigace na jednotkách registru
Poskytovatel registru zveřejňuje své úložiště dat jako dvě výchozí jednotky.
HKLM:
mapuje se naHKEY_LOCAL_MACHINE
podregistr registru.HKCU:
mapuje se naHKEY_CURRENT_USER
podregistr registru.
Pokud chcete pracovat s registrem, můžete umístění změnit na jednotku HKLM:
pomocí následujícího příkazu.
Set-Location HKLM:
Pokud se chcete vrátit na jednotku systému souborů, zadejte název jednotky. Zadejte například:
Set-Location C:
S poskytovatelem registru můžete pracovat také z libovolné jiné jednotky PowerShellu. Pokud chcete odkazovat na klíč registru z jiného umístění, použijte v cestě název jednotky (HKLM:
, HKCU:
). K označení úrovně jednotky registru použijte zpětné lomítko (\
) nebo lomítko (/
).
PS C:\> cd HKLM:\Software
Poznámka:
PowerShell používá aliasy, které vám umožní pracovat se známým způsobem práce s cestami zprostředkovatele. Příkazy jako dir
a ls
jsou aliasy pro Get-ChildItem, cd
je alias pro Set-Location a pwd
je alias pro Get-Location.
Tento poslední příklad ukazuje jinou syntaxi cesty, kterou můžete použít k navigaci poskytovatele registru . Tato syntaxe používá název zprostředkovatele následovaný dvěma dvojtečkami ::
. Tato syntaxe umožňuje použít úplný název HIVE místo názvu HKLM
namapované jednotky .
cd "Registry::HKEY_LOCAL_MACHINE\Software"
Zobrazení obsahu klíčů registru
Registr je rozdělený na klíče, podklíče a položky. Další informace o struktuře registru naleznete v tématu Struktura registru.
Na jednotce registru je každý klíč kontejnerem. Klíč může obsahovat libovolný počet klíčů. Klíč registru, který má nadřazený klíč, se nazývá podklíč. Můžete použít Get-ChildItem
k zobrazení klíčů registru a Set-Location
k přechodu na cestu ke klíči.
Hodnoty registru jsou atributy klíče registru. Na jednotce registru se nazývají Vlastnosti položky. Klíč registru může mít podřízené klíče i vlastnosti položky.
V tomto příkladu je rozdíl mezi Get-Item
a Get-ChildItem
je zobrazen. Pokud použijete Get-Item
klíč registru Zařazování služby, můžete zobrazit jeho vlastnosti.
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
Každý klíč registru může mít také podklíče. Když použijete Get-Item
klíč registru, podklíče se nezobrazí. Rutina Get-ChildItem
zobrazuje podklíče klíče "zařazování", včetně vlastností jednotlivých podklíčů. Vlastnosti nadřazených klíčů se při použití Get-ChildItem
nezobrazují .
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...}
Rutinu Get-Item
lze použít také v aktuálním umístění. Následující příklad přejde na klíč registru zařazování "Spooler" a získá vlastnosti položky.
Tečka .
se používá k označení aktuálního umístění.
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
...
Další informace o rutinách popsaných v této části najdete v následujících článcích.
Zobrazení hodnot klíčů registru
Hodnoty klíče registru se ukládají jako vlastnosti každého klíče registru. Rutina Get-ItemProperty
zobrazí vlastnosti klíče registru pomocí zadaného názvu. Výsledkem je PSCustomObject obsahující zadané vlastnosti.
Následující příklad používá rutinu Get-ItemProperty
k zobrazení všech vlastností. Uložení výsledného objektu do proměnné umožňuje přístup k požadované hodnotě vlastnosti.
$p = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
$p.DependOnService
RPCSS
http
Zadáním hodnoty pro -Name
parametr vyberete vlastnosti, které zadáte, a vrátí PSCustomObject. Následující příklad ukazuje rozdíl ve výstupu při použití parametru -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
Počínaje PowerShellem 5.0 vrátí rutina pouze hodnotu vlastnosti, Get-ItemPropertyValue
kterou zadáte.
Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
17134.1
Další informace o rutinách používaných v této části najdete v následujících článcích.
Změna hodnot klíčů registru
Rutina Set-ItemProperty
nastaví hodnoty registru přidružené k klíči registru. Následující příklad používá Set-ItemProperty
ke změně typu spuštění služby zařazování na ruční. Příklad změní typ StartType zpět na Automatic
použití rutinySet-Service
.
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
Každý klíč registru má výchozí hodnotu. Hodnotu klíče registru můžete změnit default
pomocí Set-Item
klíče registru nebo Set-ItemProperty
.
Set-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name "(default)" -Value "one"
Set-Item -Path HKLM:\SOFTWARE\Contoso -Value "two"
Další informace o rutinách používaných v této části najdete v následujících článcích.
Vytváření klíčů a hodnot registru
Rutina New-Item
vytvoří nové klíče registru s názvem, který zadáte.
Můžete také použít mkdir
funkci, která volá rutinu New-Item
interně.
mkdir ContosoCompany
Hive: HKEY_LOCAL_MACHINE\SOFTWARE
Name Property
---- --------
ContosoCompany
Pomocí rutiny New-ItemProperty
můžete vytvořit hodnoty v zadaném klíči registru. Následující příklad vytvoří novou hodnotu DWORD pro klíč registru ContosoCompany.
$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1
Poznámka:
Další povolené hodnoty typů najdete v části dynamické parametry v tomto článku.
Podrobné informace o využití rutin najdete v tématu New-ItemProperty.
Kopírování klíčů a hodnot registru
Ve zprostředkovateli registru pomocí Copy-Item
rutiny zkopírujte klíče a hodnoty registru. Pomocí rutiny Copy-ItemProperty
zkopírujte pouze hodnoty registru.
Následující příkaz zkopíruje klíč registru "Contoso" a jeho vlastnosti do zadaného umístění HKLM:\Software\Fabrikam
.
Copy-Item
vytvoří cílový klíč, pokud neexistuje. Pokud cílový klíč existuje, Copy-Item
vytvoří duplikát zdrojového klíče jako podřízenou položku (podklíč) cílového klíče.
Copy-Item -Path HKLM:\Software\Contoso -Destination HKLM:\Software\Fabrikam
Následující příkaz pomocí rutiny Copy-ItemProperty
zkopíruje hodnotu "Server" z klíče "Contoso" do klíče "Fabrikam".
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Copy-ItemProperty -Path $source -Destination $dest -Name Server
Další informace o rutinách používaných v této části najdete v následujících článcích.
Přesun klíčů a hodnot registru
Move-ItemProperty
Rutiny Move-Item
se chovají jako jejich protějšky pro kopírování. Pokud cíl existuje, Move-Item
přesune zdrojový klíč pod cílový klíč. Pokud cílový klíč neexistuje, zdrojový klíč se přesune do cílové cesty.
Následující příkaz přesune klíč "Contoso" do cesty HKLM:\SOFTWARE\Fabrikam
.
Move-Item -Path HKLM:\SOFTWARE\Contoso -Destination HKLM:\SOFTWARE\Fabrikam
Tento příkaz přesune všechny vlastnosti z HKLM:\SOFTWARE\ContosoCompany
do HKLM:\SOFTWARE\Fabrikam
.
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Move-ItemProperty -Path $source -Destination $dest -Name *
Další informace o rutinách používaných v této části najdete v následujících článcích.
Přejmenování klíčů a hodnot registru
Klíče registru a hodnoty můžete přejmenovat stejně jako soubory a složky.
Rename-Item
přejmenuje klíče registru a Rename-ItemProperty
přejmenovává hodnoty registru.
$path = "HKLM:\SOFTWARE\Contoso"
Rename-ItemProperty -Path $path -Name ContosoTest -NewName FabrikamTest
Rename-Item -Path $path -NewName Fabrikam
Změna popisovačů zabezpečení
Přístup k klíčům registru můžete omezit pomocí rutin Get-Acl
a Set-Acl
rutin. Následující příklad přidá nového uživatele s úplným řízením do HKLM:\SOFTWARE\Contoso
klíče registru.
$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
Další příklady a podrobnosti o využití rutin najdete v následujících článcích.
Odebrání a vymazání klíčů a hodnot registru
Obsažené položky můžete odebrat pomocí Remove-Item
. Pokud položka obsahuje něco jiného, zobrazí se výzva k potvrzení odebrání. Následující příklad se pokusí odstranit klíč 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"):
Pokud chcete odstranit obsažené položky bez výzvy, zadejte -Recurse
parametr.
Remove-Item -Path HKLM:\SOFTWARE\Contoso -Recurse
Pokud chcete odebrat všechny položky uvnitř HKLM:\SOFTWARE\Contoso
, ale ne HKLM:\SOFTWARE\Contoso
v sobě, použijte koncové zpětné lomítko \
následované zástupným znakem.
Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse
Tento příkaz odstraní hodnotu registru ContosoTest z HKLM:\SOFTWARE\Contoso
klíče registru.
Remove-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name ContosoTest
Clear-Item
vymaže všechny hodnoty registru pro klíč. Následující příklad vymaže všechny hodnoty z HKLM:\SOFTWARE\Contoso
klíče registru. Chcete-li vymazat pouze určitou vlastnost, použijte 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
Další příklady a podrobnosti o využití rutin najdete v následujících článcích.
Dynamické parametry
Dynamické parametry jsou parametry rutiny přidané zprostředkovatelem PowerShellu a jsou k dispozici pouze v případech, kdy se rutina používá na jednotce s podporou poskytovatele.
Zadejte <Microsoft.Win32.RegistryValueKind>
Vytvoří nebo změní datový typ hodnoty registru. Výchozí hodnota je String
(REG_SZ).
Tento parametr funguje jako navržený v rutině Set-ItemProperty . Je také k dispozici v rutině Set-Item v jednotkách registru, ale nemá žádný vliv.
String
- Používá se pro REG_SZ hodnoty.[System.String]
Předejte objekt parametru Value.ExpandString
- Používá se pro REG_EXPAND_SZ hodnoty.[System.String]
Předejte objekt parametru Value. Řetězec by měl obsahovat nepotřebné odkazy na proměnné prostředí, které se rozbalí při načtení hodnoty.Binary
- Používá se pro REG_BINARY hodnoty.[System.Byte[]]
Předejte objekt parametru Value.DWord
- Používá se pro REG_DWORD hodnoty.[System.Int32]
Předejte objekt parametru Value.MultiString
- Používá se pro REG_MULTI_SZ hodnoty.[System.String[]]
Předejte objekt parametru Value.QWord
- Používá se pro REG_QWORD hodnoty.[System.Int64]
Předejte objekt parametru Value.Unknown
– Označuje nepodporovaný datový typ registru, například REG_RESOURCE_LIST hodnoty.
Použití kanálu
Rutiny zprostředkovatele přijímají vstup kanálu. Kanál můžete použít ke zjednodušení úlohy odesláním dat zprostředkovatele z jedné rutiny do jiné rutiny zprostředkovatele. Další informace o tom, jak používat kanál s rutinami zprostředkovatele, najdete v odkazech na rutiny uvedené v tomto článku.
Získání nápovědy
Od windows PowerShellu 3.0 můžete získat přizpůsobená témata nápovědy pro rutiny zprostředkovatele, která vysvětlují, jak se tyto rutiny chovají na jednotce systému souborů.
Pokud chcete získat témata nápovědy, která jsou přizpůsobená pro jednotku systému souborů, spusťte Get-Help
příkaz na jednotce systému souborů nebo pomocí parametru Cesta zadejte jednotku systému souborů.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM: