about_Registry_Provider
공급자 이름
Registry
드라이브
HKLM:
, HKCU:
기능
ShouldProcess, UseTransactions
간단한 설명
PowerShell의 레지스트리 키, 항목 및 값에 대한 액세스를 제공합니다.
자세한 설명
이 정보는 Windows에서 실행되는 PowerShell에만 적용됩니다.
PowerShell 레지스트리 공급자를 사용하면 PowerShell에서 레지스트리 키, 항목 및 값을 가져오고, 추가하고, 변경하고, 지우고, 삭제할 수 있습니다.
레지스트리 드라이브는 컴퓨터의 레지스트리 키와 하위 키를 포함하는 계층 구조 네임스페이스입니다. 레지스트리 항목 및 값은 해당 계층의 구성 요소가 아닙니다. 대신 각 키의 속성입니다.
레지스트리 공급자는 다음 cmdlet을 지원합니다.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- 항목 이동
- New-Item
- Remove-Item
- Clear-ItemProperty
- Get-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Set-ItemProperty
- Get-Acl
- Set-Acl
이 공급자가 노출하는 형식
레지스트리 공급자는 다음 두 가지 유형 중 하나로 레지스트리 데이터를 반환합니다.
레지스트리 드라이브 탐색
레지스트리 공급자는 데이터 저장소를 두 개의 기본 드라이브로 노출합니다.
HKLM:
레지스트리 하이브에HKEY_LOCAL_MACHINE
매핑HKCU:
레지스트리 하이브에HKEY_CURRENT_USER
매핑
레지스트리를 사용하려면 다음 명령을 사용하여 위치를 드라이브로 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-Item
과 Get-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에 대한 자세한 내용은 다음 문서를 참조하세요.
레지스트리 키 값 보기
레지스트리 키 값은 각 레지스트리 키의 속성으로 저장됩니다. 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
. 이 예제에서는 StartType을 cmdlet을 사용하도록 Set-Service
다시 Automatic
변경합니다.
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-Item
Set-ItemProperty
에 default
대한 값을 변경할 수 있습니다.
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\ContosoCompany
HKLM:\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 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"):
메시지를 표시하지 않고 포함된 항목을 삭제하려면 매개 변수를 지정합니다 -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
- REG_SZ 값에 사용됩니다.[System.String]
Value 매개 변수에 개체를 전달합니다.ExpandString
- REG_EXPAND_SZ 값에 사용됩니다.[System.String]
Value 매개 변수에 개체를 전달합니다. 문자열에는 값을 검색할 때 확장되는 환경 변수에 대한 확장되지 않은 참조가 포함되어야 합니다.Binary
- REG_BINARY 값에 사용됩니다.[System.Byte[]]
Value 매개 변수에 개체를 전달합니다.DWord
- REG_DWORD 값에 사용됩니다.[System.Int32]
Value 매개 변수에 개체를 전달합니다.MultiString
- REG_MULTI_SZ 값에 사용됩니다.[System.String[]]
Value 매개 변수에 개체를 전달합니다.QWord
- REG_QWORD 값에 사용됩니다.[System.Int64]
Value 매개 변수에 개체를 전달합니다.Unknown
- REG_RESOURCE_LIST 값과 같이 지원되지 않는 레지스트리 데이터 형식을 나타냅니다.
파이프라인 사용
공급자 cmdlet은 파이프라인 입력을 허용합니다. 파이프라인을 사용하여 한 cmdlet에서 다른 공급자 cmdlet으로 공급자 데이터를 전송하여 작업을 간소화할 수 있습니다. 공급자 cmdlet에서 파이프라인을 사용하는 방법에 대한 자세한 내용은 이 문서 전체에서 제공하는 cmdlet 참조를 참조하세요.
도움말 가져오기
Windows PowerShell 3.0부터 파일 시스템 드라이브에서 해당 cmdlet이 작동하는 방식을 설명하는 공급자 cmdlet에 대한 사용자 지정된 도움말 항목을 가져올 수 있습니다.
파일 시스템 드라이브에 대해 사용자 지정된 도움말 항목을 얻으려면 파일 시스템 드라이브에서 명령을 실행 Get-Help
하거나 Path 매개 변수를 사용하여 파일 시스템 드라이브를 지정합니다.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM:
참고 항목
PowerShell