Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato ukázka platí jenom pro platformy Windows.
Protože klíče registru jsou položky na jednotkách PowerShellu, je práce s nimi velmi podobná práci se soubory a složkami. Jedním z důležitých rozdílů je, že každá položka na jednotce PowerShellu založená na registru je kontejner, stejně jako složka na jednotce systému souborů. Položky registru a jejich přidružené hodnoty jsou však vlastnosti položek, nikoli jedinečné položky.
Výpis všech podklíčů klíče registru
Všechny položky můžete zobrazit přímo v klíči registru pomocí Get-ChildItem. Přidejte volitelný parametr Force pro zobrazení skrytých nebo systémových položek. Tento příkaz například zobrazí položky přímo v jednotce PowerShellu HKCU:, která odpovídá registru HKEY_CURRENT_USER.
Get-ChildItem -Path HKCU:\ | Select-Object Name
Hive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
Name
----
HKEY_CURRENT_USER\AppEvents
HKEY_CURRENT_USER\Console
HKEY_CURRENT_USER\Control Panel
HKEY_CURRENT_USER\DirectShow
HKEY_CURRENT_USER\dummy
HKEY_CURRENT_USER\Environment
HKEY_CURRENT_USER\EUDC
HKEY_CURRENT_USER\Keyboard Layout
HKEY_CURRENT_USER\MediaFoundation
HKEY_CURRENT_USER\Microsoft
HKEY_CURRENT_USER\Network
HKEY_CURRENT_USER\Printers
HKEY_CURRENT_USER\Software
HKEY_CURRENT_USER\System
HKEY_CURRENT_USER\Uninstall
HKEY_CURRENT_USER\WXP
HKEY_CURRENT_USER\Volatile Environment
Jedná se o klíče nejvyšší úrovně viditelné v HKEY_CURRENT_USER v Editoru registru (regedit.exe).
Tuto cestu registru můžete zadat také zadáním názvu zprostředkovatele registru následovaného ::. Úplný název poskytovatele registru je Microsoft.PowerShell.Core\Registry, ale můžete ho zkrátit jen na Registry. Jakýkoli z následujících příkazů zobrazí obsah přímo pod HKCU:.
Get-ChildItem -Path Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Registry::HKCU
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKCU
Get-ChildItem HKCU:
Tyto příkazy uvádějí pouze přímo obsažené položky, podobně jako použití DIR v cmd.exe nebo ls v prostředí Unix. Pokud chcete zobrazit obsažené položky, musíte zadat parametr Recurse. K výpisu všech klíčů registru v HKCU:použijte následující příkaz.
Get-ChildItem -Path HKCU:\ -Recurse
Get-ChildItem může prostřednictvím cesty, filtru, zahrnouta Vyloučit parametry, ale tyto parametry jsou obvykle založené pouze na názvu. Pomocí rutiny Where-Object můžete provádět složité filtrování na základě jiných vlastností položek.
Následující příkaz najde všechny klíče v rámci HKCU:\Software, které nemají více než jeden podklíč a mají také přesně čtyři hodnoty:
Get-ChildItem -Path HKCU:\Software -Recurse |
Where-Object {($_.SubKeyCount -le 1) -and ($_.ValueCount -eq 4) }
Kopírování klíčů
Kopírování se provádí pomocí Copy-Item. Následující příklad zkopíruje podklíč CurrentVersion z HKLM:\SOFTWARE\Microsoft\Windows\ a všechny jeho vlastnosti do HKCU:\.
Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU:
Pokud tento nový klíč prozkoumáte v editoru registru nebo použijete Get-ChildItem, všimnete si, že v novém umístění nemáte kopie podklíčů obsažených. Pokud chcete zkopírovat veškerý obsah kontejneru, musíte zadat parametr Recurse. Pokud chcete, aby předchozí příkaz kopírování rekurzivní, použili byste tento příkaz:
Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU: -Recurse
Stále můžete použít další nástroje, které už máte k dispozici k provádění kopií systému souborů. Všechny nástroje pro úpravy registru, včetně reg.exe, regini.exe, regedit.exea objektů MODELU COM, které podporují úpravy registru, například WScript.Shell a třídy StdRegProv rozhraní WMI, je možné použít z PowerShellu.
Vytváření klíčů
Vytváření nových klíčů v registru je jednodušší než vytvoření nové položky v systému souborů. Protože všechny klíče registru jsou kontejnery, nemusíte zadávat typ položky. Stačí zadat explicitní cestu, například:
New-Item -Path HKCU:\Software_DeleteMe
Také můžete použít cestu založenou na poskytovateli k zadání klíče.
New-Item -Path Registry::HKCU\Software_DeleteMe
Odstranění klíčů
Odstranění položek je v podstatě stejné pro všechny poskytovatele. Následující příkazy bezobslužně odeberou položky:
Remove-Item -Path HKCU:\Software_DeleteMe
Remove-Item -Path 'HKCU:\key with spaces in the name'
Odebrání všech klíčů pod konkrétním klíčem
Obsažené položky můžete odebrat pomocí Remove-Item, ale zobrazí se výzva k potvrzení odebrání, pokud položka obsahuje něco jiného. Pokud se například pokusíme odstranit HKCU:\CurrentVersion podklíč, který jsme vytvořili, uvidíme toto:
Remove-Item -Path HKCU:\CurrentVersion
Confirm
The item at HKCU:\CurrentVersion\AdminDebug has children and the Recurse
parameter was not 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 parametr Recurse:
Remove-Item -Path HKCU:\CurrentVersion -Recurse
Pokud chcete odebrat všechny položky v HKCU:\CurrentVersion, ale ne HKCU:\CurrentVersion samotné, můžete místo toho použít:
Remove-Item -Path HKCU:\CurrentVersion\* -Recurse