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.

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 .

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 HKLMzamapowanego 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.

-Get-Item -Get-ChildItem

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ż