레지스트리 항목은 키의 속성이고 직접 검색할 수 없으므로 레지스트리 항목에 대해 작업할 때는 조금 다른 방법을 사용해야 합니다.
레지스트리 항목 표시
다양한 방법을 사용하여 레지스트리 항목을 검사할 수 있습니다. 가장 간단한 방법은 키와 연결된 속성 이름을 가져오는 것입니다. 예를 들어 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, PSChildName 및 PSProvider와 같이 "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, Include 및 Exclude 매개 변수가 있지만 이러한 매개 변수는 항목 속성인 레지스트리 항목 대신 항목 경로인 레지스트리 키를 참조하므로 속성 이름을 기준으로 필터링하는 데 사용할 수 없습니다. |
또 다른 옵션은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