Computer >> 컴퓨터 >  >> 체계 >> Windows Server

PowerShell:레지스트리 키 또는 매개변수 가져오기, 수정, 생성 및 제거

레지스트리 편집기(regedit.exe ) 및 reg.exe 명령줄 유틸리티는 Windows에서 레지스트리에 액세스하고 관리하는 유일한 도구가 아닙니다. PowerShell은 관리자가 레지스트리와 상호 작용할 수 있는 많은 도구를 제공합니다. PowerShell을 사용하여 레지스트리 키/매개변수를 생성, 수정 또는 삭제하고, 값을 검색하고, 원격 컴퓨터의 레지스트리에 연결할 수 있습니다.

PowerShell을 사용하여 파일 시스템처럼 Windows 레지스트리 탐색

PowerShell에서 레지스트리 작업은 로컬 디스크의 일반 파일 작업과 유사합니다. 주요 차이점은 이 개념에서 레지스트리 키는 파일과 유사하고 레지스트리 매개변수는 이러한 파일의 속성이라는 것입니다.

컴퓨터에서 사용 가능한 드라이브 목록 표시:

get-psdrive

PowerShell:레지스트리 키 또는 매개변수 가져오기, 수정, 생성 및 제거

드라이브(드라이브 문자가 할당됨) 중에는 레지스트리 공급자를 통해 사용할 수 있는 특수 장치가 있습니다. – HKCU(HKEY_CURRENT_USER) 및 HKLM(HKEY_LOCAL_MACHINE). 드라이브를 탐색하는 것과 같은 방식으로 레지스트리 트리를 탐색할 수 있습니다. HKLM:\HKCU:\ 특정 레지스트리 하이브에 액세스하는 데 사용됩니다.

cd HKLM:\
Dir -ErrorAction SilentlyContinue

PowerShell:레지스트리 키 또는 매개변수 가져오기, 수정, 생성 및 제거

즉, 파일 및 폴더를 관리하는 데 사용하는 것과 동일한 PowerShell cmdlet을 사용하여 레지스트리 키와 해당 매개변수에 액세스할 수 있습니다.

레지스트리 키를 참조하려면 xxx-Item과 함께 cmdlet을 사용하세요. :

  • Get-Item – 레지스트리 키 가져오기
  • New-Item — 새 레지스트리 키 생성
  • Remove-Item – 레지스트리 키 삭제

레지스트리 매개변수는 레지스트리 키의 속성으로 간주되어야 합니다(파일/폴더 속성과 유사). xxx -ItemProperty cmdlet은 레지스트리 매개변수를 관리하는 데 사용됩니다.

  • Get-ItemProperty – 레지스트리 매개변수의 값을 가져옵니다.
  • Set-ItemProperty – 레지스트리 매개변수의 값 변경
  • New-ItemProperty – 레지스트리 매개변수 생성
  • Rename-ItemProperty – 매개변수 이름 바꾸기
  • Remove-ItemProperty — 레지스트리 매개변수 제거

다음 두 명령 중 하나를 사용하여 특정 레지스트리 키(예:자동 드라이버 업데이트 설정을 담당하는 키)로 이동할 수 있습니다.

cd HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching
또는
Set-Location -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching

PowerShell을 통해 레지스트리 매개변수 값 가져오기

레지스트리 키에 저장된 매개변수는 중첩된 개체가 아니라 특정 레지스트리 키의 속성입니다. 이러한 모든 레지스트리 키는 매개변수의 수에 제한이 없습니다.

다음 명령을 사용하여 현재 레지스트리 키의 내용을 나열합니다.

dir

또는

Get-ChildItem

이 명령은 중첩된 레지스트리 키 및 해당 속성에 대한 정보를 표시했습니다. 그러나 현재 키의 속성인 SearchOrderConfig 매개변수에 대한 정보를 표시하지 않았습니다.

Get-Item 사용 레지스트리 키의 매개변수를 가져오는 cmdlet:

Get-Item .
또는
Get-Item –Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching

보시다시피 DriverSearching 키에는 값이 1인 SearchOrderConfig 매개변수가 하나만 있습니다.

PowerShell:레지스트리 키 또는 매개변수 가져오기, 수정, 생성 및 제거

레지스트리 키 매개 변수의 값을 가져오려면 Get-ItemProperty cmdlet을 사용합니다.

$DriverUpdate = Get-ItemProperty –Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching’
$DriverUpdate.SearchOrderConfig

PowerShell:레지스트리 키 또는 매개변수 가져오기, 수정, 생성 및 제거

SearchOrderConfig 매개변수의 값이 1임을 확인했습니다.

PowerShell로 레지스트리 값 변경

SearchOrderConfig reg 매개 변수의 값을 변경하려면 Set-ItemProperty cmdlet을 사용합니다.

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching' -Name SearchOrderConfig -Value 0

매개변수 값이 변경되었는지 확인하십시오.

Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching' -Name SearchOrderConfig

PowerShell:레지스트리 키 또는 매개변수 가져오기, 수정, 생성 및 제거

PowerShell로 새 등록 키 또는 매개변수를 만드는 방법은 무엇입니까?

새 레지스트리 키를 만들려면 New-Item 명령을 사용합니다. NewKey라는 이름으로 새 키를 생성해 보겠습니다. :

$HKCU_Desktop= "HKCU:\Control Panel\Desktop"
New-Item –Path $HKCU_Desktop –Name NewKey

이제 새 레지스트리 키에 새 매개변수를 생성해 보겠습니다. SuperParamString이라는 REG_SZ 유형의 새 문자열 매개변수를 생성해야 한다고 가정합니다. 및 값 filetmp1.txt:

New-ItemProperty -Path $HKCU_Desktop\NewKey -Name "SuperParamString" -Value ”filetmp1.txt”  -PropertyType "String"

레지스트리 매개변수에 대해 다음 데이터 유형을 사용할 수 있습니다.

  • 문자열(REG_SZ)
  • 확장 문자열(REG_EXPAND_SZ)
  • 다중 문자열(REG_MULTI_SZ)
  • 바이너리(REG_BINARY)
  • DWord(REG_DWORD)
  • Qword(REG_QWORD)
  • 알 수 없음(지원되지 않는 레지스트리 데이터 유형)

새 키와 매개변수가 레지스트리에 표시되었는지 확인하십시오.

PowerShell:레지스트리 키 또는 매개변수 가져오기, 수정, 생성 및 제거

레지스트리 키가 있는지 확인하는 방법

특정 레지스트리 키가 있는지 확인해야 하는 경우 Test-Path를 사용하세요. cmdlet:

Test-Path 'HKCU:\Control Panel\Desktop\NewKey'

다음 PowerShell 스크립트는 특정 레지스트리 값이 있는지 확인하고 없으면 생성합니다.

regkey='HKCU:\Control Panel\Desktop\NewKey'
$regparam='testparameter'
if (Get-ItemProperty -Path $regkey -Name $regparam -ErrorAction Ignore)
{ write-host 'The registry entry already exist' }
else
{ New-ItemProperty -Path $regkey -Name $regparam -Value ”woshub_test”  -PropertyType "String"  }

복사 항목 사용 cmdlet을 사용하면 레지스트리 키 간에 항목을 복사할 수 있습니다.

$source='HKLM:\SOFTWARE\7-zip\'
$dest = 'HKLM:\SOFTWARE\backup'
Copy-Item -Path $source -Destination $dest -Recurse

하위 키를 포함하여 모든 것을 복사하려면 –Recurse를 추가하세요. 스위치.

레지스트리 키 또는 매개변수 삭제

Remove-ItemProperty 명령은 레지스트리 키에서 매개변수를 제거하는 데 사용됩니다. 이전에 생성한 SuperParamString 매개변수를 제거하겠습니다.

$HKCU_Desktop= "HKCU:\Control Panel\Desktop"
Remove-ItemProperty –Path $HKCU_Desktop\NewKey –Name "SuperParamString"

모든 내용과 함께 전체 레지스트리 키를 삭제할 수 있습니다.

Remove-Item –Path $HKCU_Desktop\NewKey –Recurse

참고. – 재귀 스위치는 모든 하위 키를 재귀적으로 제거해야 함을 나타냅니다.

reg 키의 모든 항목을 제거하려면(키 자체는 제외):

Remove-Item –Path $HKCU_Desktop\NewKey\* –Recurse

레지스트리 키 또는 매개변수의 이름을 바꾸는 방법

다음 명령을 사용하여 레지스트리 매개변수의 이름을 바꿀 수 있습니다.

Rename-ItemProperty –path ‘HKCU:\Control Panel\Desktop\NewKey’ –name "SuperParamString" –newname “OldParamString”

같은 방법으로 레지스트리 키의 이름을 바꿀 수 있습니다.

Rename-Item -path 'HKCU:\Control Panel\Desktop\NewKey' OldKey

PowerShell을 사용하여 키워드 레지스트리 검색

PowerShell을 사용하면 레지스트리를 검색할 수 있습니다. 다음은 HKCU:\Control Panel\Desktop에서 이름에 *dpi가 포함된 매개변수를 검색합니다. * 키.

$Path = (Get-ItemProperty ‘HKCU:\Control Panel\Desktop’)
$Path.PSObject.Properties | ForEach-Object {
If($_.Name -like '*dpi*'){
Write-Host $_.Name ' = ' $_.Value
}
}

특정 이름의 레지스트리 키를 찾으려면:

Get-ChildItem -path HKLM:\ -recurse -ErrorAction SilentlyContinue | Where-Object {$_.Name -like "*woshub*"}

PowerShell을 사용하여 레지스트리 키 권한 설정

Get-ACL cmdlet을 사용하여 현재 레지스트리 키 권한을 가져올 수 있습니다(Get-ACL cmdlet을 사용하면 파일 및 폴더에 대한 NTFS 권한도 관리할 수 있음).

$rights = Get-Acl -Path 'HKCU:\Control Panel\Desktop\NewKey'
$rights.Access.IdentityReference

PowerShell:레지스트리 키 또는 매개변수 가져오기, 수정, 생성 및 제거

다음 예에서는 이 레지스트리 키의 ACL을 수정하여 기본 제공 사용자 그룹에 대한 쓰기 액세스 권한을 부여합니다.

현재 권한 얻기:

$rights = Get-Acl -Path 'HKCU:\Control Panel\Desktop\NewKey'

액세스 권한을 부여할 사용자 또는 그룹 지정:

$idRef = [System.Security.Principal.NTAccount]"BuiltIn\Users"

액세스 수준 선택:

$regRights = [System.Security.AccessControl.RegistryRights]::WriteKey
권한 상속 설정 설정 :

$inhFlags = [System.Security.AccessControl.InheritanceFlags]::None
$prFlags = [System.Security.AccessControl.PropagationFlags]::None

액세스 유형(허용/거부):

$acType = [System.Security.AccessControl.AccessControlType]::Allow
액세스 규칙 생성:

$rule = New-Object System.Security.AccessControl.RegistryAccessRule ($idRef, $regRights, $inhFlags, $prFlags, $acType)

현재 ACL에 새 규칙 추가:

$rights.AddAccessRule($rule)

레지스트리 키에 새 권한 적용:

$rights | Set-Acl -Path 'HKCU:\Control Panel\Desktop\NewKey'

새 그룹이 레지스트리 키의 ACL에 나타나는지 확인하십시오.

PowerShell:레지스트리 키 또는 매개변수 가져오기, 수정, 생성 및 제거

PowerShell을 통해 원격 컴퓨터에서 레지스트리 값 가져오기

PowerShell을 사용하면 원격 컴퓨터의 레지스트리에 액세스할 수 있습니다. WinRM(Invoke-Command 또는 Enter-PSSession)을 사용하여 원격 컴퓨터에 연결할 수 있습니다. 원격 컴퓨터에서 레지스트리 매개변수 값을 가져오려면:

Invoke-Command –ComputerName srv-fs1 –ScriptBlock {Get-ItemProperty -Path 'HKLM:\System\Setup' -Name WorkingDirectory}

또는 원격 레지스트리 연결 사용(RemoteRegistry 서비스를 활성화해야 함)

$Server = "lon-fs1"
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Server)
$RegKey= $Reg.OpenSubKey("System\Setup")
$RegValue = $RegKey.GetValue("WorkingDirectory")

. 여러 도메인 컴퓨터에서 특정 레지스트리 매개변수를 생성/수정해야 하는 경우 GPO 기능을 사용하는 것이 더 쉽습니다.

따라서 PowerShell을 사용하여 Windows 레지스트리 항목에 액세스하고 관리하는 일반적인 예를 살펴보았습니다. 자동화 스크립트에서 사용할 수 있습니다.