about_Registry_Provider
Nazwa dostawcy
Rejestr
Dyski
HKLM:
, HKCU:
Możliwości
ShouldProcess, UseTransactions
Krótki opis
Zapewnia dostęp do kluczy rejestru, wpisów i wartości w programie PowerShell.
Szczegółowy opis
Dostawca rejestru programu PowerShell umożliwia pobieranie, dodawanie, zmienianie, czyszczenie i usuwanie kluczy rejestru, wpisów i wartości w programie PowerShell.
Dyski rejestru to hierarchiczna przestrzeń nazw zawierająca klucze rejestru i podklucze na komputerze. Wpisy i wartości rejestru nie są składnikami tej hierarchii. Zamiast tego są właściwościami każdego z kluczy.
Dostawca rejestru obsługuje następujące polecenia cmdlet:
- Get-Location
- Ustaw lokalizację
- Get-Item
- Get-ChildItem
- Invoke-Item
- Przenieś element
- Nowy element
- Usuń element
- Clear-ItemProperty
- Get-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Set-ItemProperty
- Get-Acl
- Zestaw listy Acl
Typy uwidocznione przez tego dostawcę
Dostawca rejestru zwraca dane rejestru w jednym z dwóch typów:
- Microsoft.Win32.RegistryKey dla kluczy rejestru
- OBIEKT PSCustomObject dla wartości rejestru
Nawigowanie po dyskach rejestru
Dostawca rejestru uwidacznia swój magazyn danych jako dwa dyski domyślne.
HKLM:
mapuje gałąźHKEY_LOCAL_MACHINE
rejestruHKCU:
mapuje gałąźHKEY_CURRENT_USER
rejestru
Aby pracować z rejestrem, możesz zmienić lokalizację na HKLM:
dysk przy użyciu następującego polecenia.
Set-Location HKLM:
Aby powrócić do dysku systemu plików, wpisz nazwę dysku. Na przykład wpisz:
Set-Location C:
Możesz również pracować z dostawcą rejestru z dowolnego innego dysku programu PowerShell. Aby odwołać się do klucza rejestru z innej lokalizacji, użyj nazwy dysku (HKLM:
, HKCU:
) w ścieżce. Użyj ukośnika odwrotnego (\
) lub ukośnika (/
), aby wskazać poziom dysku Rejestru .
PS C:\> cd HKLM:\Software
Uwaga
Program PowerShell używa aliasów, aby umożliwić ci znaną pracę ze ścieżkami dostawcy. Polecenia takie jak dir
i są aliasami get-ChildItem, cd
są aliasem set-location i pwd
jest aliasem get-location.ls
W tym ostatnim przykładzie przedstawiono inną składnię ścieżki, której można użyć do nawigowania po dostawcy rejestru . Ta składnia używa nazwy dostawcy, a następnie dwóch dwukropków ::
. Ta składnia umożliwia użycie pełnej nazwy programu HIVE zamiast nazwy HKLM
zamapowanego dysku .
cd "Registry::HKEY_LOCAL_MACHINE\Software"
Wyświetlanie zawartości kluczy rejestru
Rejestr jest podzielony na klucze, podklucze i wpisy. Aby uzyskać więcej informacji na temat struktury rejestru, zobacz Struktura rejestru.
Na dysku rejestru każdy klucz jest kontenerem. Klucz może zawierać dowolną liczbę kluczy. Klucz rejestru, który ma klucz nadrzędny, jest nazywany podkluczem. Możesz użyć Get-ChildItem
polecenia , aby wyświetlić klucze rejestru i Set-Location
przejść do ścieżki klucza.
Wartości rejestru to atrybuty klucza rejestru. Na dysku Rejestru są nazywane właściwościami elementu. Klucz rejestru może mieć zarówno klucze podrzędne, jak i właściwości elementu.
W tym przykładzie pokazano różnicę między elementami Get-Item
i Get-ChildItem
. W przypadku użycia Get-Item
klucza rejestru "Spooler" można wyświetlić jego właściwości.
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żdy klucz rejestru może również mieć podklucze. W przypadku użycia Get-Item
klucza rejestru podklucze nie są wyświetlane. Polecenie Get-ChildItem
cmdlet pokazuje podklucze klucza "Bufor", w tym właściwości każdego podklucza. Właściwości kluczy nadrzędnych nie są wyświetlane podczas korzystania z elementu 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...}
Polecenie Get-Item
cmdlet można również użyć w bieżącej lokalizacji. Poniższy przykład przechodzi do klucza rejestru "Spooler" i pobiera właściwości elementu.
Kropka .
służy do wskazywania bieżącej lokalizacji.
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
...
Aby uzyskać więcej informacji na temat poleceń cmdlet omówionych w tej sekcji, zobacz następujące artykuły.
Wyświetlanie wartości klucza rejestru
Wartości klucza rejestru są przechowywane jako właściwości każdego klucza rejestru. Polecenie Get-ItemProperty
cmdlet wyświetla właściwości klucza rejestru przy użyciu określonej nazwy. Wynikiem jest obiekt PSCustomObject zawierający określone właściwości.
W poniższym przykładzie użyto Get-ItemProperty
polecenia cmdlet do wyświetlenia wszystkich właściwości. Przechowywanie wynikowego obiektu w zmiennej umożliwia uzyskanie dostępu do żądanej wartości właściwości.
$p = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
$p.DependOnService
RPCSS
http
Określenie wartości parametru -Name
wybiera określone właściwości i zwraca obiekt PSCustomObject. W poniższym przykładzie pokazano różnicę w danych wyjściowych podczas korzystania z 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
Począwszy od programu PowerShell 5.0, Get-ItemPropertyValue
polecenie cmdlet zwraca tylko wartość określonej właściwości.
Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
17134.1
Aby uzyskać więcej informacji na temat poleceń cmdlet używanych w tej sekcji, zobacz następujące artykuły.
Zmienianie wartości klucza rejestru
Polecenie Set-ItemProperty
cmdlet ustawia wartości rejestru skojarzone z kluczem rejestru. W poniższym przykładzie użyto Set-ItemProperty
metody , aby zmienić typ uruchamiania usługi buforowania na ręczny. Przykład zmienia typ StartType z powrotem na Automatic
przy użyciu Set-Service
polecenia 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
Każdy klucz rejestru ma wartość domyślną. Wartość klucza rejestru można zmienić default
za pomocą polecenia Set-Item
lub Set-ItemProperty
.
Set-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name "(default)" -Value "one"
Set-Item -Path HKLM:\SOFTWARE\Contoso -Value "two"
Aby uzyskać więcej informacji na temat poleceń cmdlet używanych w tej sekcji, zobacz następujące artykuły.
Tworzenie kluczy i wartości rejestru
Polecenie New-Item
cmdlet tworzy nowe klucze rejestru o podanej nazwie.
Możesz również użyć mkdir
funkcji , która wywołuje New-Item
polecenie cmdlet wewnętrznie.
mkdir ContosoCompany
Hive: HKEY_LOCAL_MACHINE\SOFTWARE
Name Property
---- --------
ContosoCompany
Możesz użyć New-ItemProperty
polecenia cmdlet , aby utworzyć wartości w określonym kluczu rejestru. Poniższy przykład tworzy nową wartość DWORD w kluczu rejestru ContosoCompany.
$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1
Uwaga
Przejrzyj sekcję parametry dynamiczne w tym artykule, aby zapoznać się z innymi dozwolonymi wartościami typów.
Aby uzyskać szczegółowe informacje o użyciu polecenia cmdlet, zobacz New-ItemProperty.
Kopiowanie kluczy i wartości rejestru
W dostawcy rejestru użyj Copy-Item
polecenia cmdlet kopiuje klucze rejestru i wartości. Copy-ItemProperty
Użyj polecenia cmdlet , aby skopiować tylko wartości rejestru.
Następujące polecenie kopiuje klucz rejestru "Contoso" i jego właściwości do określonej lokalizacji HKLM:\Software\Fabrikam
.
Copy-Item
tworzy klucz docelowy, jeśli nie istnieje. Jeśli klucz docelowy istnieje, Copy-Item
tworzy duplikat klucza źródłowego jako element podrzędny (podklucz) klucza docelowego.
Copy-Item -Path HKLM:\Software\Contoso -Destination HKLM:\Software\Fabrikam
Następujące polecenie używa Copy-ItemProperty
polecenia cmdlet do skopiowania wartości "Serwer" z klucza "Contoso" do klucza "Fabrikam".
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Copy-ItemProperty -Path $source -Destination $dest -Name Server
Aby uzyskać więcej informacji na temat poleceń cmdlet używanych w tej sekcji, zobacz następujące artykuły.
Przenoszenie kluczy i wartości rejestru
Polecenia Move-Item
cmdlet i Move-ItemProperty
zachowują się jak ich odpowiedniki "Copy". Jeśli miejsce docelowe istnieje, Move-Item
przenosi klucz źródłowy poniżej klucza docelowego. Jeśli klucz docelowy nie istnieje, klucz źródłowy zostanie przeniesiony do ścieżki docelowej.
Następujące polecenie przenosi klucz "Contoso" do ścieżki HKLM:\SOFTWARE\Fabrikam
.
Move-Item -Path HKLM:\SOFTWARE\Contoso -Destination HKLM:\SOFTWARE\Fabrikam
To polecenie przenosi wszystkie właściwości z HKLM:\SOFTWARE\ContosoCompany
do HKLM:\SOFTWARE\Fabrikam
.
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Move-ItemProperty -Path $source -Destination $dest -Name *
Aby uzyskać więcej informacji na temat poleceń cmdlet używanych w tej sekcji, zobacz następujące artykuły.
Zmienianie nazw kluczy i wartości rejestru
Możesz zmienić nazwy kluczy i wartości rejestru tak, jak pliki i foldery.
Rename-Item
Zmienia nazwę kluczy rejestru, podczas gdy Rename-ItemProperty
zmienia nazwy wartości rejestru.
$path = "HKLM:\SOFTWARE\Contoso"
Rename-ItemProperty -Path $path -Name ContosoTest -NewName FabrikamTest
Rename-Item -Path $path -NewName Fabrikam
Zmienianie deskryptorów zabezpieczeń
Dostęp do kluczy rejestru można ograniczyć przy użyciu Get-Acl
poleceń cmdlet i Set-Acl
. Poniższy przykład dodaje nowego użytkownika z pełną kontrolą do HKLM:\SOFTWARE\Contoso
klucza rejestru.
$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
Aby uzyskać więcej przykładów i szczegółów użycia poleceń cmdlet, zobacz następujące artykuły.
Usuwanie i czyszczenie kluczy i wartości rejestru
Elementy zawarte można usunąć przy użyciu polecenia Remove-Item
. Zostanie wyświetlony monit o potwierdzenie usunięcia, jeśli element zawiera inne elementy. Poniższy przykład próbuje usunąć klucz 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"):
Aby usunąć zawarte elementy bez monitowania, określ -Recurse
parametr .
Remove-Item -Path HKLM:\SOFTWARE\Contoso -Recurse
Jeśli chcesz usunąć wszystkie elementy w obrębie HKLM:\SOFTWARE\Contoso
elementu, ale nie HKLM:\SOFTWARE\Contoso
samego siebie, użyj ukośnika \
odwrotnego, po którym następuje symbol wieloznaczny.
Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse
To polecenie usuwa wartość rejestru "ContosoTest" z HKLM:\SOFTWARE\Contoso
klucza rejestru.
Remove-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name ContosoTest
Clear-Item
czyści wszystkie wartości rejestru dla klucza. Poniższy przykład czyści wszystkie wartości z HKLM:\SOFTWARE\Contoso
klucza rejestru. Aby wyczyścić tylko określoną właściwość, użyj polecenia 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
Aby uzyskać więcej przykładów i szczegółów użycia poleceń cmdlet, zobacz następujące artykuły.
Parametry dynamiczne
Parametry dynamiczne to parametry poleceń cmdlet, które są dodawane przez dostawcę programu PowerShell i są dostępne tylko wtedy, gdy polecenie cmdlet jest używane na dysku obsługującym dostawcę.
Wpisz <Microsoft.Win32.RegistryValueKind>
Ustanawia lub zmienia typ danych wartości rejestru. Wartość domyślna to String
(REG_SZ).
Ten parametr działa zgodnie z projektem polecenia cmdlet Set-ItemProperty . Jest ona również dostępna w poleceniu cmdlet Set-Item na dyskach rejestru, ale nie ma żadnego wpływu.
String
— służy do REG_SZ wartości.[System.String]
Przekaż obiekt do parametru Value.ExpandString
— służy do REG_EXPAND_SZ wartości.[System.String]
Przekaż obiekt do parametru Value. Ciąg powinien zawierać niezrozpaczone odwołania do zmiennych środowiskowych, które są rozwinięte po pobraniu wartości.Binary
— służy do REG_BINARY wartości.[System.Byte[]]
Przekaż obiekt do parametru Value.DWord
— służy do REG_DWORD wartości.[System.Int32]
Przekaż obiekt do parametru Value.MultiString
— służy do REG_MULTI_SZ wartości.[System.String[]]
Przekaż obiekt do parametru Value.QWord
— służy do REG_QWORD wartości.[System.Int64]
Przekaż obiekt do parametru Value.Unknown
— Wskazuje nieobsługiwany typ danych rejestru, taki jak wartości REG_RESOURCE_LIST.
Korzystanie z potoku
Polecenia cmdlet dostawcy akceptują dane wejściowe potoku. Potok umożliwia uproszczenie zadania, wysyłając dane dostawcy z jednego polecenia cmdlet do innego dostawcy. Aby dowiedzieć się więcej na temat używania potoku z poleceniami cmdlet dostawcy, zobacz odwołania do poleceń cmdlet podanych w tym artykule.
Uzyskiwanie pomocy
Począwszy od programu Windows PowerShell 3.0, możesz uzyskać dostosowane tematy pomocy dla poleceń cmdlet dostawcy, które wyjaśniają, jak te polecenia cmdlet zachowują się na dysku systemu plików.
Aby uzyskać tematy pomocy dostosowane dla dysku systemu plików, uruchom Get-Help
polecenie na dysku systemu plików lub użyj parametru Ścieżka , aby określić dysk systemu plików.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM: