레지스트리 항목은 키의 속성이고 직접 검색할 수 없으므로 레지스트리 항목에 대해 작업할 때는 조금 다른 방법을 사용해야 합니다.

레지스트리 항목 표시

다양한 방법을 사용하여 레지스트리 항목을 검사할 수 있습니다. 가장 간단한 방법은 키와 연결된 속성 이름을 가져오는 것입니다. 예를 들어 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion이라는 레지스트리 키의 항목 이름을 보려면 Get-Item을 사용합니다. 레지스트리 키에는 해당 레지스트리 키에 있는 레지스트리 항목의 목록인 "Property"라는 일반 이름의 속성이 있습니다. 다음 명령은 Property 속성을 선택하고 해당 항목을 확장하여 목록으로 보여 줍니다.

PS> Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion | Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId

레지스트리 항목을 보다 읽기 쉬운 형식으로 보려면 다음과 같이 Get-ItemProperty를 사용하십시오.

PS> Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion


PSPath              : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows\CurrentVersion
PSParentPath        : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows
PSChildName         : CurrentVersion
PSDrive             : HKLM
PSProvider          : Microsoft.PowerShell.Core\Registry
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
CommonFilesDir      : C:\Program Files\Common Files
ProductId           : 76487-338-1167776-22465
WallPaperDir        : C:\WINDOWS\Web\Wallpaper
MediaPath           : C:\WINDOWS\Media
ProgramFilesPath    : C:\Program Files
PF_AccessoriesName  : Accessories
(default)           :

키에 대한 Windows PowerShell 관련 속성은 PSPath, PSParentPath, PSChildNamePSProvider와 같이 "PS"로 시작합니다.

"." 표기법을 사용하면 현재 위치를 참조할 수 있습니다. 다음과 같이 Set-Location을 사용하여 CurrentVersion 레지스트리 컨테이너로 변경할 수 있습니다.

Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

또는 다음과 같이 Set-Location과 함께 기본 제공 HKLM PSDrive를 사용할 수 있습니다.

Set-Location -Path hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion

그러면 다음과 같이 현재 위치에 "." 표기법을 사용하여 전체 경로를 지정하지 않고 속성을 표시할 수 있습니다.

PS> Get-ItemProperty -Path .
...
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
...

파일 시스템과 마찬가지로 경로를 확장하여 이 위치에서 Get-ItemProperty -Path ..\Help를 사용하여 HKLM:\SOFTWARE\Microsoft\Windows\Help에 대한 ItemProperty 목록을 가져올 수 있습니다.

단일 레지스트리 항목 보기

다양한 방법으로 레지스트리 키에서 특정 항목을 검색할 수 있습니다. 다음 예제에서는 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion에서 DevicePath 값을 검색합니다.

Get-ItemProperty와 함께 Path 매개 변수를 사용하여 키 이름을 지정하고 Name 매개 변수를 사용하여 DevicePath 항목 이름을 지정하십시오.

PS> Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath


PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\
               Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\
               Microsoft\Windows
PSChildName  : CurrentVersion
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry
DevicePath   : C:\WINDOWS\inf

이 명령은 표준 Windows PowerShell 속성 및 DevicePath 속성을 반환합니다.

참고:

Get-ItemProperty에는 Filter, IncludeExclude 매개 변수가 있지만 이러한 매개 변수는 항목 속성인 레지스트리 항목 대신 항목 경로인 레지스트리 키를 참조하므로 속성 이름을 기준으로 필터링하는 데 사용할 수 없습니다.

또 다른 옵션은Reg.exe 명령줄 도구를 사용하는 것입니다. reg.exe에 대한 자세한 내용을 보려면 명령 프롬프트에서 reg.exe /?를 입력하십시오. DevicePath 항목을 찾으려면 다음 명령과 같이 reg.exe를 사용하십시오.

PS> reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
    DevicePath  REG_EXPAND_SZ   %SystemRoot%\inf

또한 WshShell COM 개체를 사용하여 일부 레지스트리 항목을 찾을 수 있지만 이러한 방법으로는 "\"와 같은 문자를 포함한 큰 이진 데이터나 레지스트리 항목 이름을 처리할 수 없습니다. 다음과 같이 \ 구분 기호를 사용하여 항목 경로에 속성 이름을 추가하십시오.

PS> (New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf

새 레지스트리 항목 만들기

CurrentVersion 키에 "PowerShellPath"라는 새로운 항목을 추가하려면 키, 항목 이름 및 항목 값에 대한 경로와 함께 New-ItemProperty를 사용하십시오. 이 예제에서는 $PSHome이라는 Windows PowerShell 변수 값을 사용합니다. 이 변수는 Windows PowerShell의 설치 디렉터리에 경로를 저장합니다.

다음 명령을 사용하여 키에 새 항목을 추가하고 새 항목에 대한 정보를 표시할 수 있습니다.

PS> New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome


PSPath         : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR
                 E\Microsoft\Windows\CurrentVersion
PSParentPath   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR
                 E\Microsoft\Windows
PSChildName    : CurrentVersion
PSDrive        : HKLM
PSProvider     : Microsoft.PowerShell.Core\Registry
PowerShellPath : C:\Program Files\Windows PowerShell\v1.0

PropertyType은 다음 표에서 Microsoft.Win32.RegistryValueKind라는 열거 멤버의 이름이어야 합니다.

PropertyType 값 의미

Binary

이진 데이터

DWORD

유효한 UInt32 숫자

ExpandString

동적으로 확장된 환경 변수를 포함할 수 있는 문자열

MultiString

여러 줄 문자열

String

모든 문자열 값

QWord

8바이트의 이진 데이터

참고:

다음과 같이 Path 매개 변수 값의 배열을 지정하여 레지스트리 항목을 여러 위치에 추가할 수 있습니다.

New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion, HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome

또한 Force 매개 변수를 New-ItemProperty 명령에 추가하여 기존 레지스트리 항목 값을 덮어쓸 수 있습니다.

레지스트리 항목의 이름 바꾸기

PowerShellPath 항목의 이름을 "PSHome"으로 바꾸려면 다음과 같이 Rename-ItemProperty를 사용하십시오.

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome

이름이 바뀐 값을 표시하려면 명령에 PassThru 매개 변수를 추가하십시오.

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru

레지스트리 항목 삭제

PSHome 및 PowerShellPath 레지스트리 항목을 둘 다 삭제하려면 다음과 같이 Remove-ItemProperty를 사용하십시오.

Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath




목차