Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

PowerShell:Lấy, sửa đổi, tạo và xóa các tham số hoặc khóa đăng ký

Trình chỉnh sửa sổ đăng ký (regedit.exe ) và reg.exe tiện ích dòng lệnh không phải là công cụ duy nhất để truy cập và quản lý sổ đăng ký trong Windows. PowerShell cung cấp một số lượng lớn các công cụ để quản trị viên tương tác với sổ đăng ký. Sử dụng PowerShell, bạn có thể tạo, sửa đổi hoặc xóa khóa / tham số đăng ký, tìm kiếm giá trị và kết nối với sổ đăng ký trên máy tính từ xa.

Điều hướng Sổ đăng ký Windows Giống như Hệ thống Tệp với PowerShell

Làm việc với sổ đăng ký trong PowerShell tương tự như làm việc với các tệp chung trên đĩa cục bộ. Sự khác biệt chính là trong khái niệm này, các khóa đăng ký tương tự như các tệp và các tham số đăng ký là thuộc tính của các tệp này.

Hiển thị danh sách các ổ đĩa có sẵn trên máy tính của bạn:

get-psdrive

PowerShell:Lấy, sửa đổi, tạo và xóa các tham số hoặc khóa đăng ký

Lưu ý rằng trong số các ổ đĩa (có gán ký tự ổ đĩa) có các thiết bị đặc biệt khả dụng thông qua Nhà cung cấp sổ đăng ký - HKCU (HKEY_CURRENT_USER) và HKLM (HKEY_LOCAL_MACHINE). Bạn có thể duyệt cây đăng ký giống như cách bạn điều hướng ổ đĩa của mình. HKLM:\ HKCU:\ được sử dụng để truy cập một tổ đăng ký cụ thể.

cd HKLM:\
Dir -ErrorAction SilentlyContinue

PowerShell:Lấy, sửa đổi, tạo và xóa các tham số hoặc khóa đăng ký

Những thứ đó, bạn có thể truy cập vào khóa đăng ký và các tham số của chúng bằng cách sử dụng cùng các lệnh ghép ngắn PowerShell mà bạn sử dụng để quản lý tệp và thư mục.

Để tham chiếu đến khóa đăng ký, hãy sử dụng lệnh ghép ngắn với xxx-Item :

  • Get-Item - lấy một khóa đăng ký
  • New-Item - tạo khóa đăng ký mới
  • Remove-Item - xóa khóa đăng ký

Các tham số đăng ký nên được coi là thuộc tính của khóa đăng ký (tương tự như thuộc tính tệp / thư mục). xxx -ItemProperty lệnh ghép ngắn được sử dụng để quản lý các thông số đăng ký:

  • Get-ItemProperty - nhận giá trị của một tham số đăng ký
  • Set-ItemProperty - thay đổi giá trị của một tham số đăng ký
  • New-ItemProperty - tạo tham số đăng ký
  • Rename-ItemProperty - đổi tên tham số
  • Remove-ItemProperty - loại bỏ tham số đăng ký

Bạn có thể điều hướng đến khóa đăng ký cụ thể (ví dụ:đến khóa chịu trách nhiệm về cài đặt cập nhật trình điều khiển tự động) bằng cách sử dụng một trong hai lệnh:

cd HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching
hoặc
Set-Location -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching

Nhận Giá trị Tham số Đăng ký qua PowerShell

Xin lưu ý rằng các tham số được lưu trữ trong khóa đăng ký không phải là các đối tượng lồng nhau, mà là một thuộc tính của một khóa đăng ký cụ thể. Bất kỳ khóa đăng ký nào cũng có thể có bất kỳ số lượng tham số nào.

Liệt kê nội dung của khóa đăng ký hiện tại bằng lệnh:

dir

Hoặc

Get-ChildItem

Lệnh đã hiển thị thông tin về các khóa đăng ký lồng nhau và các thuộc tính của chúng. Nhưng không hiển thị thông tin về thông số SearchOrderConfig, là một thuộc tính của khóa hiện tại.

Sử dụng Get-Item lệnh ghép ngắn để lấy các tham số của khoá đăng ký:

Get-Item .
Hoặc
Get-Item –Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching

Như bạn thấy, khóa DriverSearching chỉ có một tham số - SearchOrderConfig với giá trị là 1.

PowerShell:Lấy, sửa đổi, tạo và xóa các tham số hoặc khóa đăng ký

Để nhận giá trị của tham số khóa đăng ký, hãy sử dụng lệnh ghép ngắn Get-ItemProperty.

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

PowerShell:Lấy, sửa đổi, tạo và xóa các tham số hoặc khóa đăng ký

Chúng tôi nhận thấy rằng giá trị của tham số SearchOrderConfig là 1.

Thay đổi giá trị sổ đăng ký bằng PowerShell

Để thay đổi giá trị của tham số reg SearchOrderConfig, hãy sử dụng lệnh ghép ngắn Set-ItemProperty:

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

Đảm bảo rằng giá trị tham số đã thay đổi:

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

PowerShell:Lấy, sửa đổi, tạo và xóa các tham số hoặc khóa đăng ký

Làm cách nào để tạo một tham số hoặc khóa đăng ký mới với PowerShell?

Để tạo khóa đăng ký mới, hãy sử dụng lệnh Mục mới. Hãy tạo một khóa mới với tên NewKey :

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

Bây giờ, hãy tạo một tham số mới trong một khóa đăng ký mới. Giả sử chúng ta cần tạo một tham số chuỗi mới kiểu REG_SZ có tên là SuperParamString và giá trị filetmp1.txt:

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

Bạn có thể sử dụng các kiểu dữ liệu sau cho các tham số đăng ký:

  • Chuỗi (REG_SZ)
  • Chuỗi mở rộng (REG_EXPAND_SZ)
  • Đa chuỗi (REG_MULTI_SZ)
  • Nhị phân (REG_BINARY)
  • DWord (REG_DWORD)
  • Qword (REG_QWORD)
  • Không xác định (kiểu dữ liệu đăng ký không được hỗ trợ)

Đảm bảo rằng khóa và tham số mới đã xuất hiện trong sổ đăng ký.

PowerShell:Lấy, sửa đổi, tạo và xóa các tham số hoặc khóa đăng ký

Cách kiểm tra xem khóa đăng ký có tồn tại không?

Nếu bạn cần kiểm tra xem khóa đăng ký cụ thể có tồn tại hay không, hãy sử dụng Đường dẫn kiểm tra lệnh ghép ngắn:

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

Tập lệnh PowerShell sau sẽ kiểm tra xem một giá trị đăng ký cụ thể có tồn tại hay không và nếu không, hãy tạo nó.

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"  }

Sử dụng Mục sao chép cmdlet, bạn có thể sao chép các mục nhập từ khóa đăng ký này sang khóa đăng ký khác:

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

Nếu bạn muốn sao chép mọi thứ, bao gồm cả các khóa con, hãy thêm –Recurse chuyển đổi.

Xóa tham số hoặc khóa đăng ký

Thuộc tính loại bỏ mục được sử dụng để loại bỏ một tham số trong khóa đăng ký. Hãy xóa tham số SuperParamString đã tạo trước đó:

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

Bạn có thể xóa toàn bộ khóa đăng ký với tất cả nội dung của nó:

Remove-Item –Path $HKCU_Desktop\NewKey –Recurse

Lưu ý. –Recurse switch chỉ ra rằng tất cả các khóa con phải được loại bỏ một cách đệ quy.

Để xóa tất cả các mục trong khóa reg (nhưng không phải chính khóa):

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

Làm cách nào để đổi tên Khóa đăng ký hoặc Tham số?

Bạn có thể đổi tên tham số đăng ký bằng lệnh:

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

Theo cách tương tự, bạn có thể đổi tên khóa đăng ký:

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

Đăng ký tìm kiếm cho từ khóa bằng PowerShell

PowerShell cho phép bạn tìm kiếm sổ đăng ký. Phần tiếp theo tìm kiếm HKCU:\ Control Panel \ Desktop để tìm các tham số, có tên chứa * dpi phím *.

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

Để tìm khóa đăng ký có tên cụ thể:

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

Đặt quyền đối với khóa đăng ký với PowerShell

Bạn có thể nhận các quyền của khóa đăng ký hiện tại bằng cách sử dụng lệnh ghép ngắn Get-ACL (lệnh ghép ngắn Get-ACL cũng cho phép bạn quản lý các quyền NTFS trên tệp và thư mục).

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

PowerShell:Lấy, sửa đổi, tạo và xóa các tham số hoặc khóa đăng ký

Trong ví dụ sau, chúng tôi sẽ sửa đổi ACL trong khóa đăng ký này để cấp quyền ghi vào nhóm Người dùng tích hợp sẵn.

Nhận các quyền hiện tại:

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

Chỉ định người dùng hoặc nhóm bạn muốn cấp quyền truy cập:

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

Chọn cấp độ truy cập:

$regRights = [System.Security.AccessControl.RegistryRights]::WriteKey
Đặt cài đặt kế thừa quyền:

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

Loại truy cập (Cho phép / Từ chối):

$acType = [System.Security.AccessControl.AccessControlType]::Allow
Tạo quy tắc truy cập:

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

Thêm quy tắc mới vào ACL hiện tại:

$rights.AddAccessRule($rule)

Áp dụng các quyền mới cho khóa đăng ký:

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

Đảm bảo rằng nhóm mới xuất hiện trong ACL của khóa đăng ký.

PowerShell:Lấy, sửa đổi, tạo và xóa các tham số hoặc khóa đăng ký

Nhận Giá trị đăng ký từ Máy tính Từ xa qua PowerShell

PowerShell cho phép bạn truy cập sổ đăng ký của một máy tính từ xa. Bạn có thể kết nối với một máy tính từ xa bằng WinRM (Invoke-Command hoặc Enter-PSSession). Để nhận giá trị của tham số đăng ký từ máy tính từ xa:

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

Hoặc sử dụng kết nối đăng ký từ xa (dịch vụ RemoteRegistry phải được bật)

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

Mẹo . Nếu bạn phải tạo / sửa đổi một tham số đăng ký nhất định trên một số máy tính miền, thì việc sử dụng các tính năng GPO sẽ dễ dàng hơn.

Vì vậy, chúng tôi đã đề cập đến các ví dụ điển hình về việc sử dụng PowerShell để truy cập và quản lý các mục đăng ký Windows. Bạn có thể sử dụng chúng trong các tập lệnh tự động hóa của mình.