about_Registry_Provider

공급자 이름

Registry

드라이브

HKLM:, HKCU:

기능

ShouldProcess, UseTransactions

간단한 설명

PowerShell의 레지스트리 키, 항목 및 값에 대한 액세스를 제공합니다.

자세한 설명

이 정보는 Windows에서 실행되는 PowerShell에만 적용됩니다.

PowerShell 레지스트리 공급자를 사용하면 PowerShell에서 레지스트리 키, 항목 및 값을 가져오고, 추가하고, 변경하고, 지우고, 삭제할 수 있습니다.

레지스트리 드라이브는 컴퓨터의 레지스트리 키와 하위 키를 포함하는 계층 구조 네임스페이스입니다. 레지스트리 항목 및 값은 해당 계층의 구성 요소가 아닙니다. 대신 각 키의 속성입니다.

레지스트리 공급자는 이 문서에서 설명하는 다음 cmdlet을 지원합니다.

이 공급자가 노출하는 형식

레지스트리 키는 Microsoft.Win32.RegistryKey 클래스의 인스턴스로 표시됩니다. 레지스트리 항목은 PSCustomObject 클래스의 인스턴스로 표시됩니다.

레지스트리 공급자는 데이터 저장소를 두 개의 기본 드라이브로 노출합니다. HKEY_LOCAL_MACHINE 레지스트리 위치는 드라이브에 HKLM: 매핑되고 HKEY_CURRENT_USER 드라이브에 HKCU: 매핑됩니다. 레지스트리를 사용하려면 다음 명령을 사용하여 위치를 드라이브로 HKLM: 변경할 수 있습니다.

Set-Location HKLM:

파일 시스템 드라이브로 돌아가려면 드라이브 이름을 입력합니다. 예를 들어 입력 합니다.

Set-Location C:

다른 PowerShell 드라이브의 레지스트리 공급자와 함께 작업할 수도 있습니다. 다른 위치에서 레지스트리 키를 참조하려면 경로에서 드라이브 이름(HKLM:, HKCU:)을 사용합니다. 백슬래시(\) 또는 슬래시(/)를 사용하여 레지스트리 드라이브의 수준을 나타냅니다.

PS C:\> cd HKLM:\Software

참고 항목

PowerShell은 별칭을 사용하여 공급자 경로를 사용하는 친숙한 방법을 허용합니다. Get-ChildItemcd의 별칭ls 같은 dir 명령은 Set-Location별칭이며 pwd Get-Location별칭입니다.

이 마지막 예제에서는 레지스트리 공급자를 탐색하는 데 사용할 수 있는 다른 경로 구문을 보여줍니다. 이 구문은 공급자 이름 뒤에 두 개의 콜론 ::을 사용합니다. 이 구문을 사용하면 매핑된 드라이브 이름 대신 전체 HIVE 이름을 HKLM사용할 수 있습니다.

cd "Registry::HKEY_LOCAL_MACHINE\Software"

레지스트리 키의 내용 표시

레지스트리는 키, 하위 키 및 항목으로 나뉩니다. 레지스트리 구조에 대한 자세한 내용은 레지스트리 구조를 참조 하세요.

레지스트리 드라이브에서 각 키는 컨테이너입니다. 키는 임의의 수의 키를 포함할 수 있습니다. 부모 키가 있는 레지스트리 키를 하위 키라고 합니다. 레지스트리 키를 보고 키 Set-Location 경로로 이동하는 데 사용할 Get-ChildItem 수 있습니다.

레지스트리 값은 레지스트리 키의 특성입니다. 레지스트리 드라이브에서는 항목 속성이라고 합니다. 레지스트리 키에는 자식 키와 항목 속성이 모두 있을 수 있습니다.

이 예제에서는 차이점 Get-ItemGet-ChildItem 차이점이 표시됩니다. "Spooler" 레지스트리 키에서 사용하는 Get-Item 경우 해당 속성을 볼 수 있습니다.

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

각 레지스트리 키에는 하위 키가 있을 수도 있습니다. 레지스트리 키에서 사용하는 Get-Item 경우 하위 키가 표시되지 않습니다. cmdlet은 Get-ChildItem 각 하위 키의 속성을 포함하여 "Spooler" 키의 자식 항목을 표시합니다. 를 사용할 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...}

cmdlet은 Get-Item 현재 위치에서도 사용할 수 있습니다. 다음 예제에서는 "Spooler" 레지스트리 키로 이동하여 항목 속성을 가져옵니다. 점 . 이 현재 위치를 나타내는 데 사용됩니다.

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

이 섹션에서 다루는 cmdlet에 대한 자세한 내용은 다음 문서를 참조하세요.

-Get-Item -Get-ChildItem

레지스트리 키 값 보기

레지스트리 키 값은 각 레지스트리 키의 속성으로 저장됩니다. cmdlet은 Get-ItemProperty 지정한 이름을 사용하여 레지스트리 키 속성을 확인합니다. 그 결과 지정한 속성이 포함된 PSCustomObject 가 생성됩니다.

다음 예제에서는 cmdlet을 Get-ItemProperty 사용하여 모든 속성을 봅니다. 결과 개체를 변수에 저장하면 원하는 속성 값에 액세스할 수 있습니다.

$p = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
$p.DependOnService
RPCSS
http

매개 변수 값을 -Name 지정하면 지정한 속성이 선택되고 PSCustomObject가 반환됩니다. 다음 예제에서는 매개 변수를 사용할 때 출력의 차이를 보여 있습니다 -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

PowerShell 5.0 Get-ItemPropertyValue 부터 cmdlet은 지정한 속성 값만 반환합니다.

Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
17134.1

이 섹션에서 사용되는 cmdlet에 대한 자세한 내용은 다음 문서를 참조하세요.

레지스트리 키 값 변경

cmdlet은 Set-ItemProperty 레지스트리 키에 대한 특성을 설정합니다. 다음 예제에서는 스풀러 서비스 시작 유형을 수동으로 변경하는 데 사용합니다 Set-ItemProperty . 이 예제에서는 cmdlet을 사용하여 StartType다시 자동 으로 Set-Service 변경합니다.

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

각 레지스트리 키에는 기본값있습니다. 레지스트리 키의 기본값 은 둘 중 하나를 Set-ItemSet-ItemProperty사용하여 변경할 수 있습니다.

Set-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name "(default)" -Value "one"
Set-Item -Path HKLM:\SOFTWARE\Contoso -Value "two"

이 섹션에서 사용되는 cmdlet에 대한 자세한 내용은 다음 문서를 참조하세요.

레지스트리 키 및 값 만들기

cmdlet은 New-Item 사용자가 제공한 이름으로 레지스트리 키를 만듭니다. cmdlet을 mkdir 내부적으로 호출하는 함수를 New-Item 사용할 수도 있습니다.

mkdir ContosoCompany
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name                           Property
----                           --------
ContosoCompany

cmdlet을 New-ItemProperty 사용하여 지정한 레지스트리 키에 값을 만들 수 있습니다. 다음 예제에서는 ContosoCompany 레지스트리 키에 새 DWORD 값을 만듭니다.

$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1

참고 항목

이 문서의 동적 매개 변수 섹션에서 허용되는 다른 형식 값을 검토합니다.

자세한 cmdlet 사용법은 New-ItemProperty를 참조 하세요.

레지스트리 키 및 값 복사

레지스트리 공급자에서 cmdlet을 Copy-Item 사용하여 레지스트리 키와 값을 복사합니다. cmdlet을 Copy-ItemProperty 사용하여 레지스트리 값만 복사합니다. 다음 명령은 "Contoso" 레지스트리 키와 해당 속성을 지정된 위치 "HKLM:\Software\Fabrikam"에 복사합니다.

Copy-Item 는 대상 키가 없는 경우 대상 키를 만듭니다. 대상 키가 있는 Copy-Item 경우 원본 키의 중복을 대상 키의 자식 항목(하위 키)으로 만듭니다.

Copy-Item -Path  HKLM:\Software\Contoso -Destination HKLM:\Software\Fabrikam

다음 명령은 cmdlet을 Copy-ItemProperty 사용하여 "Contoso" 키에서 "Fabrikam" 키로 "Server" 값을 복사합니다.

$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Copy-ItemProperty -Path $source -Destination $dest -Name Server

이 섹션에서 사용되는 cmdlet에 대한 자세한 내용은 다음 문서를 참조하세요.

레지스트리 키 및 값 이동

Move-ItemProperty cmdlet은 Move-Item 해당 "복사" 항목처럼 동작합니다. 대상이 있는 Move-Item 경우 원본 키를 대상 키 아래로 이동합니다. 대상 키가 없으면 원본 키가 대상 경로로 이동됩니다.

다음 명령은 "Contoso" 키를 경로 HKLM:\SOFTWARE\Fabrikam로 이동합니다.

Move-Item -Path HKLM:\SOFTWARE\Contoso -Destination HKLM:\SOFTWARE\Fabrikam

이 명령은 모든 속성을 .로 HKLM:\SOFTWARE\ContosoCompanyHKLM:\SOFTWARE\Fabrikam이동합니다.

$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Move-ItemProperty -Path $source -Destination $dest -Name *

이 섹션에서 사용되는 cmdlet에 대한 자세한 내용은 다음 문서를 참조하세요.

레지스트리 키 및 값 이름 바꾸기

파일 및 폴더와 마찬가지로 레지스트리 키와 값의 이름을 바꿀 수 있습니다. Rename-Item 레지스트리 키의 이름을 바꾸면서 Rename-ItemProperty 레지스트리 키의 이름을 바꿉니다.

$path = "HKLM:\SOFTWARE\Contoso"
Rename-ItemProperty -Path $path -Name ContosoTest -NewName FabrikamTest
Rename-Item -Path $path -NewName Fabrikam

보안 설명자 변경

Set-Acl cmdlet을 사용하여 레지스트리 키에 대한 액세스를 제한할 Get-Acl 수 있습니다. 다음 예제에서는 레지스트리 키에 모든 권한을 HKLM:\SOFTWARE\Contoso 가진 새 사용자를 추가합니다.

$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

자세한 예제 및 cmdlet 사용 세부 정보는 다음 문서를 참조하세요.

레지스트리 키 및 값 제거 및 지우기

포함된 항목은 제거할 수 있지만 항목에 Remove-Item다른 항목이 포함되어 있으면 제거를 확인하라는 메시지가 표시됩니다. 다음 예제에서는 키를 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"):

메시지를 표시하지 않고 포함된 항목을 삭제하려면 매개 변수를 지정합니다 -Recurse .

Remove-Item -Path HKLM:\SOFTWARE\Contoso -Recurse

그 자체가 HKLM:\SOFTWARE\Contoso 아닌 HKLM:\SOFTWARE\Contoso 모든 항목을 제거하려면 후행 백슬래시 \ 뒤에 야생카드 사용합니다.

Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse

이 명령은 레지스트리 키에서 HKLM:\SOFTWARE\Contoso "ContosoTest" 레지스트리 값을 삭제합니다.

Remove-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name ContosoTest

Clear-Item 키에 대한 모든 레지스트리 값을 지웁니다. 다음 예제에서는 레지스트리 키에서 HKLM:\SOFTWARE\Contoso 모든 값을 지웁니다. 특정 속성만 지우려면 .를 사용합니다 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

자세한 예제 및 cmdlet 사용 세부 정보는 다음 문서를 참조하세요.

동적 매개 변수

동적 매개 변수는 PowerShell 공급자에 의해 추가되는 cmdlet 매개 변수이며 공급자 사용 드라이브에서 cmdlet을 사용하는 경우에만 사용할 수 있습니다.

Microsoft.Win32.RegistryValueKind 입력 <>

레지스트리 값의 데이터 형식을 설정하거나 변경합니다. 기본값은 (REG_SZ)입니다 String .

이 매개 변수는 Set-ItemProperty cmdlet에서 디자인된 대로 작동합니다. 레지스트리 드라이브의 Set-Item cmdlet에서도 사용할 수 있지만 아무런 효과가 없습니다.

설명
String null로 끝나는 문자열을 지정합니다. REG_SZ 값에 사용됩니다.
ExpandString unexpanded를 포함하는 null로 끝나는 문자열을 지정합니다.
는 확장될 때 확장되는 환경 변수에 대한 참조입니다.
값이 검색됩니다. REG_EXPAND_SZ 값에 사용됩니다.
Binary 모든 형식의 이진 데이터를 지정합니다. REG_BINARY 값에 사용됩니다.
DWord 32비트 이진수를 지정합니다. REG_DWORD 값에 사용됩니다.
MultiString 종료된 null로 끝나는 문자열의 배열을 지정합니다.
두 개의 null 문자입니다. REG_MULTI_SZ 값에 사용됩니다.
QWord 64비트 이진 번호를 지정합니다. REG_QWORD 값에 사용됩니다.
Unknown 지원되지 않는 레지스트리 데이터 형식(예: )을 나타냅니다.
REG_RESOURCE_LIST 값입니다.

지원되는 Cmdlet

파이프라인 사용

공급자 cmdlet은 파이프라인 입력을 허용합니다. 파이프라인을 사용하여 한 cmdlet에서 다른 공급자 cmdlet으로 공급자 데이터를 전송하여 작업을 간소화할 수 있습니다. 공급자 cmdlet에서 파이프라인을 사용하는 방법에 대한 자세한 내용은 이 문서 전체에서 제공하는 cmdlet 참조를 참조하세요.

도움말 가져오기

Windows PowerShell 3.0부터 파일 시스템 드라이브에서 해당 cmdlet이 작동하는 방식을 설명하는 공급자 cmdlet에 대한 사용자 지정된 도움말 항목을 가져올 수 있습니다.

파일 시스템 드라이브에 대해 사용자 지정된 도움말 항목을 얻으려면 파일 시스템 드라이브에서 명령을 실행 Get-Help 하거나 Path 매개 변수를 사용하여 파일 시스템 드라이브를 지정합니다.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM:

참고 항목