PowerShell을 사용하여 레지스트리 값을 가져오는 방법
Windows 레지스트리 값을 다루는 것은 마치 외계어를 해독하는 것처럼 느껴질 때가 많습니다.일부 레지스트리 키는 복잡한 구조 속에 숨겨져 있고, PowerShell에서 어떤 명령어를 실행해야 하는지 아는 것만으로는 충분하지 않은 경우가 많습니다.특히 문제 해결이나 자동화를 할 때는 더욱 그렇습니다.레지스트리 값을 가져오는 명령어가 예상대로 작동하지 않거나 이해할 수 없는 오류를 발생시킬 때는 정말 짜증이 나죠.그래서 이 가이드에서는 레지스트리 정보를 안정적으로 추출하는 데 유용한 여러 가지 방법을 모아봤습니다.이 방법들을 익히고 나면, 레지스트리 항목을 쉽게 확인하고, 조회하고, 살펴볼 수 있을 겁니다.핵심은 각 방법이 언제, 왜 작동하는지 이해하는 것입니다.때로는 가장 간단한 명령어가 실패할 수도 있기 때문에, 전략을 바꿔야 할 때도 있습니다.이 가이드를 통해 레지스트리 구조에 대한 더 명확한 통찰력을 얻을 수 있을 것이며, 이는 시작 항목을 비활성화하거나, 설치 상태를 확인하거나, Windows의 이상한 동작을 해결하는 데 도움이 될 것입니다.
정신줄 놓지 않고 PowerShell에서 레지스트리 키 값을 가져오는 방법
테스트 경로 — 해당 레지스트리 경로가 실제로 존재하는가?
이 부분은 기본적이지만 매우 유용합니다. Windows PowerShell의 Test-Pathcmdlet은 복잡한 작업을 수행하기 전에 레지스트리 키 또는 값이 존재하는지 확인하는 첫 번째 단계입니다.특히 오류 처리 측면에서 스크립팅에 매우 유용합니다.기본적으로 `git status`와 같은 명령을 실행하면 Test-Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Run, 해당 키가 존재하면 `$true`가 반환되고, 존재하지 않으면 `$false`가 반환됩니다.경로에 공백이나 특수 문자가 포함될 수 있으므로 경로를 큰따옴표로 묶어야 합니다.경로가 기술적으로는 올바르지만 권한 부족이나 오타 때문에 PowerShell이 `$false`를Test-Path "HKLM:\Some\Really Weird Path" 반환하는 경우도 있습니다.그럼에도 불구하고 스크립트가 충돌하거나 존재하지 않는 키에 대한 명령이 실행되는 것을 방지하는 데 있어 확실한 첫 번째 단계입니다.일부 환경에서는 다소 불안정할 수 있지만, 일반적으로 레지스트리를 깔끔하게 유지하는 데 도움이 됩니다.
Test-RegistryValue — 원하는 값이 실제로 존재하는지 확인해 보세요.
특정 레지스트리 값을 확인하는 것이 항상 경로를 직접 확인하는 것처럼 간단한 것은 아닙니다.때로는 특정 문자열이나 숫자가 해당 키에 저장되어 있는지 확인해야 합니다.아래 함수(복사하거나 수정하여 사용 가능)는 이러한 확인 작업을 도와줍니다.이 함수는 특정 속성(예: 시작 프로그램 또는 구성 플래그)을 가져와서 해당 속성이 존재하는지 여부를 알려주기 때문에 작동합니다.예를 들어, 특정 프로그램이 로그인 시 실행되도록 설정되어 있는지 또는 특정 기능 플래그가 활성화되어 있는지 확인할 때 유용합니다.구문은 다음과 같습니다.
Function Test-RegistryValue ($regkey, $name) { if (Get-ItemProperty -Path $regkey -Name $name -ErrorAction Ignore) { $true } else { $false } }
그러니까, <경로>를 여러분의 레지스트리 경로(예: HKCU:\Software\YourApp)$regkey 로, <값>을 원하는 특정 값(예: Enabled) 으로 바꾸세요.어떤 컴퓨터에서는 바로 작동할 수도 있고, 다른 컴퓨터에서는 sudo/관리자 권한이 필요할 수도 있습니다.좀 이상하게 들릴 수도 있지만, 스크립팅이나 문제 해결 시 이 간단한 확인만으로도 얼마나 많은 골칫거리를 덜어주는지 놀라실 겁니다.$name
레지스트리 쿼리 — 명령줄과 PowerShell, 드디어 하나로!
PowerShell 명령만으로는 부족하거나 구식 방식을 선호한다면, `git status` reg query는 여전히 유용한 도구입니다.이 명령줄 유틸리티는 레지스트리 키의 내용을 출력하므로, 간단한 확인이나 배치 파일 스크립팅에 적합합니다.예를 들어 `git status`를 실행하면 reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"해당 키 아래에 있는 모든 시작 항목이 나열됩니다.중요한 점은 특히 권한 문제로 접근이 차단된 경우 PowerShell이나 명령 프롬프트를 관리자 권한으로 실행해야 한다는 것입니다.또한 필요에 따라 `git status`를 PowerShell로 감싸서 사용할 수도 있습니다 Invoke-Expression 'reg query...'.다소 구식처럼 보일 수 있지만, 방대한 목록을 얻거나 특정 키 또는 값이 제대로 설정되었는지 확인하는 데 매우 효과적입니다.
Get-Item 및 관련 명령어 — 레지스트리 접근을 위한 PowerShell의 강력한 기능
`Get-ItemPropertyValue` 와 `Get-ChildItem`을 정말 좋아합니다.레지스트리 값을 살펴보는 데 훨씬 더 직관적인 방법이기 때문이죠.값을 가져오는 주요 방법은 `Get-ItemPropertyValue`와 `Get-ChildItem` 두 가지 Get-Item입니다 . 제공하는 정보의 종류는 다르지만 둘 다 훌륭한 선택입니다.Get-ItemProperty
Get-ItemPropertyValue — 쉽고 정확한 방법
이 명령어는 특정 데이터를 요청하는 것과 같습니다.”이 레지스트리 항목의 값은 무엇인가요?” 예를 들어 Chromium 시작 프로그램 값을 알고 싶다면 다음과 같이 실행합니다.
Get-ItemPropertyValue -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Run -Name Chromium
레지스트리 값이 존재하면 해당 명령은 그 내용을 출력합니다.존재하지 않으면, 예외 처리를 하지 않는 한 오류가 발생합니다 -ErrorAction.저는 하위 레지스트리 키를 일일이 살펴보지 않고 값을 빠르게 얻고 싶을 때 이 방법을 사용했습니다.
Get-ChildItem — 레지스트리 키 내의 모든 항목 나열
이 방법은 특정 레지스트리 경로 내의 하위 키 또는 값의 전체 목록을 얻는 데 유용합니다.디렉터리 목록을 보는 것과 비슷하지만 레지스트리에 적용됩니다.다음과 같이 실행하세요.
Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion
검색 범위를 좁히고 싶으신가요? 매개변수를 추가하거나 -Name또는 를 사용하여 필터링할 수 있습니다 -Exclude.예를 들어, C로 시작하는 항목을 무시하려면 다음과 같이 Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion -Exclude C*입력합니다.이렇게 하면 원본 레지스트리 쿼리 출력보다 보기 좋고, 일부 시스템에서는 해석하기도 더 쉽습니다.