Udostępnij za pośrednictwem


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ą właściwościami każdego z kluczy.

Dostawca rejestru obsługuje następujące polecenia cmdlet:

Typy uwidocznione przez tego dostawcę

Dostawca rejestru zwraca dane rejestru w jednym z dwóch typów:

Dostawca rejestru uwidacznia swój magazyn danych jako dwa dyski domyślne.

  • HKLM: mapuje gałąź HKEY_LOCAL_MACHINE rejestru
  • HKCU: 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 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 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.

-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 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:

Zobacz też