Share via


레지스트리 키 작업

이 샘플은 Windows 플랫폼에만 적용됩니다.

레지스트리 키는 PowerShell 드라이브에 있는 항목이므로 레지스트리 키에 대한 작업 수행은 파일 및 폴더 작업과 매우 유사합니다. 한 가지 중요한 차이점은 레지스트리 기반 PowerShell 드라이브의 모든 항목이 파일 시스템 드라이브의 폴더와 마찬가지로 컨테이너라는 것입니다. 그러나 레지스트리 항목 및 연결된 값은 고유한 항목이 아니라 항목의 속성입니다.

레지스트리 키의 모든 하위 키 나열

Get-ChildItem을 사용하여 레지스트리 키 바로 아래에 있는 항목을 모두 볼 수 있습니다. 선택적 Force 매개 변수를 추가하여 숨겨진 항목 또는 시스템 항목을 표시합니다. 예를 들어 이 명령은 레지스트리 하이브에 해당하는 PowerShell 드라이브 HKCU:내에서 직접 항목을 표시합니다 HKEY_CURRENT_USER .

Get-ChildItem -Path HKCU:\ | Select-Object Name
   Hive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER

Name
----
HKEY_CURRENT_USER\AppEvents
HKEY_CURRENT_USER\Console
HKEY_CURRENT_USER\Control Panel
HKEY_CURRENT_USER\DirectShow
HKEY_CURRENT_USER\dummy
HKEY_CURRENT_USER\Environment
HKEY_CURRENT_USER\EUDC
HKEY_CURRENT_USER\Keyboard Layout
HKEY_CURRENT_USER\MediaFoundation
HKEY_CURRENT_USER\Microsoft
HKEY_CURRENT_USER\Network
HKEY_CURRENT_USER\Printers
HKEY_CURRENT_USER\Software
HKEY_CURRENT_USER\System
HKEY_CURRENT_USER\Uninstall
HKEY_CURRENT_USER\WXP
HKEY_CURRENT_USER\Volatile Environment

레지스트리 편집기(regedit.exe)에 HKEY_CURRENT_USER 표시되는 최상위 키입니다.

레지스트리 공급자의 이름을 지정한 다음, 다음 ::을 수행하여 이 레지스트리 경로를 지정할 수도 있습니다. 레지스트리 공급자의 전체 이름은 다음과 같습니다 Microsoft.PowerShell.Core\Registry. 하지만 이 이름은 짧아질 Registry수 있습니다. 다음 명령 중에서 바로 아래에 HKCU:내용이 나열됩니다.

Get-ChildItem -Path Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Registry::HKCU
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKCU
Get-ChildItem HKCU:

이러한 명령은 UNIX 셸에서 또는 ls UNIX 셸에서 cmd.exe 사용하는 DIR 것과 같이 직접 포함된 항목만 나열합니다. 포함된 항목을 표시하려면 Recurse 매개 변수를 지정해야 합니다. HKCU:의 모든 레지스트리 키를 나열하려면 다음 명령을 사용합니다.

Get-ChildItem -Path HKCU:\ -Recurse

Get-ChildItem는 경로, 필터, 포함제외 매개 변수를 통해 복잡한 필터링 기능을 수행할 수 있지만 이러한 매개 변수는 일반적으로 이름에만 기반합니다. Where-Object cmdlet을 사용하여 항목의 다른 속성을 기반으로 복잡한 필터링을 수행할 수 있습니다. 다음 명령은 하위 키가 하나 이하이고 정확히 4개의 값이 있는 모든 키를 HKCU:\Software 찾습니다.

Get-ChildItem -Path HKCU:\Software -Recurse |
    Where-Object {($_.SubKeyCount -le 1) -and ($_.ValueCount -eq 4) }

키 복사

복사는 .으로 Copy-Item수행됩니다. 다음 예제에서는 해당 속성의 HKLM:\SOFTWARE\Microsoft\Windows\ 하위 키와 모든 속성을 복사 CurrentVersion 합니다HKCU:\.

Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU:

레지스트리 편집기나 Get-ChildItem을 사용하여 새 키를 검사하면 포함된 하위 키가 새 위치에 복사되지 않은 것을 확인할 수 있습니다. 컨테이너의 모든 내용을 복사하려면 Recurse 매개 변수를 지정해야 합니다. 위의 복사 명령을 재귀적으로 만들려면 다음 명령을 사용합니다.

Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU: -Recurse

이미 사용 가능한 다른 도구를 사용하여 파일 시스템 복사본을 수행할 수 있습니다. 예를 들어 reg.exe, regini.exe, regedit.exe와 같은 레지스트리 편집 도구와 WScript.Shell 및 WMI의 StdRegProv 클래스와 같이 레지스트리 편집을 지원하는 COM 개체를 PowerShell에서 사용할 수 있습니다.

키 만들기

레지스트리에서 새 키를 만드는 것은 파일 시스템에서 새 항목을 만드는 것보다 간단합니다. 모든 레지스트리 키는 컨테이너이므로 항목 유형을 지정할 필요가 없습니다. 다음과 같은 명시적 경로를 제공하기만 하면 됩니다.

New-Item -Path HKCU:\Software_DeleteMe

공급자 기반 경로를 사용하여 키를 지정할 수도 있습니다.

New-Item -Path Registry::HKCU\Software_DeleteMe

키 삭제

항목 삭제는 기본적으로 모든 공급자에 대해 동일합니다. 다음 명령은 항목을 제거합니다.

Remove-Item -Path HKCU:\Software_DeleteMe
Remove-Item -Path 'HKCU:\key with spaces in the name'

특정 키 아래에 있는 모든 키 제거

Remove-Item을 사용하여 포함된 항목을 제거할 수 있지만 이 항목에 다른 항목이 들어 있는 경우 제거를 확인하는 메시지가 나타납니다. 예를 들어 만든 하위 키를 삭제 HKCU:\CurrentVersion 하려고 하면 다음이 표시됩니다.

Remove-Item -Path HKCU:\CurrentVersion
Confirm
The item at HKCU:\CurrentVersion\AdminDebug 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 HKCU:\CurrentVersion -Recurse

자체 항목이 아닌 HKCU:\CurrentVersion 모든 항목을 HKCU:\CurrentVersion 제거하려는 경우 다음을 대신 사용할 수 있습니다.

Remove-Item -Path HKCU:\CurrentVersion\* -Recurse