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
Te informacje dotyczą tylko programu PowerShell uruchomionego w systemie Windows.
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ą to właściwości każdego z kluczy.
Dostawca rejestru obsługuje następujące polecenia cmdlet, które zostały omówione w tym artykule.
- 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ę
Klucze rejestru są reprezentowane jako wystąpienia klasy Microsoft.Win32.RegistryKey . Wpisy rejestru są reprezentowane jako wystąpienia klasy PSCustomObject .
Nawigowanie po dyskach rejestru
Dostawca rejestru uwidacznia swój magazyn danych jako dwa dyski domyślne. Lokalizacja rejestru HKEY_LOCAL_MACHINE jest mapowana na HKLM:
dysk, a HKEY_CURRENT_USER jest mapowany na HKCU:
dysk. 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ą teraz 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 wyświetli elementy podrzędne klucza "buforu", w tym właściwości każdego podklucza. Właściwości kluczy nadrzędnych nie są wyświetlane podczas korzystania z polecenia 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 ustawi atrybuty dla kluczy 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 startowy z powrotem na Automatyczny 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ść domyślną klucza rejestru można zmienić 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 utworzy 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
Możesz usunąć zawarte elementy przy użyciu polecenia Remove-Item
, ale zostanie wyświetlony monit o potwierdzenie usunięcia, jeśli element zawiera coś innego. 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 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"):
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 on również dostępny w poleceniu cmdlet Set-Item na dyskach rejestru, ale nie ma żadnego wpływu.
Wartość | Opis |
---|---|
String |
Określa ciąg zakończony o wartości null. Służy do REG_SZ wartości. |
ExpandString |
Określa ciąg o wartości null, który zawiera nierozciągnięty ciąg |
odwołania do zmiennych środowiskowych, które są rozwinięte, gdy | |
pobierana jest wartość. Służy do REG_EXPAND_SZ wartości. | |
Binary |
Określa dane binarne w dowolnej formie. Służy do REG_BINARY wartości. |
DWord |
Określa 32-bitową liczbę binarną. Służy do REG_DWORD wartości. |
MultiString |
Określa tablicę ciągów zakończonych wartością null zakończonych przez |
dwa znaki null. Służy do REG_MULTI_SZ wartości. | |
QWord |
Określa 64-bitową liczbę binarną. Służy do REG_QWORD wartości. |
Unknown |
Wskazuje nieobsługiwany typ danych rejestru, taki jak |
REG_RESOURCE_LIST wartości. |
Obsługiwane polecenia cmdlet
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:
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla