Mengelola Registry Windows dengan PowerShell

Dari versi pertama, PowerShell memberi administrator seperangkat alat besar untuk berinteraksi dengan registri Windows. Jika diinginkan, semua operasi registri dapat dilakukan bukan dari antarmuka Regedit lama yang baik atau utilitas reg.exe, tetapi dari baris perintah PowerShell. Dan dalam berbagai skrip dan skrip pada umumnya tidak tergantikan. Pada artikel ini, kita akan melihat cara menggunakan PowerShell untuk membuat, mengedit, menghapus kunci dan parameter dari registri Windows, mencari dan menyambungkan ke registri pada komputer jarak jauh.

Konten:

  • Navigasi di registri menggunakan PowerShell
  • Cara mengubah nilai registri
  • Cara membuat bagian baru (kunci) atau entri registri
  • Menghapus kunci atau pengaturan registri
  • Cara mengganti nama kunci atau parameter
  • Cari registri menggunakan PowerShell
  • Akses registri jarak jauh menggunakan PowerShell

Navigasi di registri menggunakan PowerShell

Bekerja dengan registri sistem di PowerShell mirip dengan bekerja dengan file biasa di drive lokal.

Mari daftar drive yang tersedia:

dapatkan-psdrive

Seperti yang Anda lihat, penyedia bawaan memungkinkan Anda untuk mengakses konten dari dua cabang registri: HKEY_CURRENT_USER (HKCU) dan HKEY_LOCAL_MACHINE (HKLM). Cabang-cabang registri ditangani, mirip dengan disk (HKLM: \ dan HKCU: \) Misalnya, untuk pergi ke root dari cabang HKLM, lakukan:

cd HKLM: \

Anda dapat pergi ke cabang registri tertentu (misalnya, yang bertanggung jawab untuk mengatur pembaruan driver otomatis) menggunakan perintah Set-Location (alias sl pendek)

Set-Lokasi -Path HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching

Daftar isi cabang:

dir

atau

Dapatkan-childitem

Buka cabang yang sama di editor registri. Seperti yang Anda lihat, perintah terakhir hanya menampilkan informasi tentang cabang bersarang, tetapi tidak tentang parameter cabang saat ini.

Faktanya adalah bahwa, dari sudut pandang PowerShell, cabang registri (kunci) adalah analog dari file, dan parameter yang disimpan dalam kunci registri ini adalah properti dari file ini.

Oleh karena itu, untuk mendapatkan parameter yang terletak di cabang ini, gunakan cmdlet Get-Item:

Dapatkan-item .

atau

Dapatkan-Item -Path HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching

Seperti yang Anda lihat, kunci DriverSearching hanya memiliki satu parameter - SearchOrderConfig dengan nilai 0.

Untuk mengakses parameter kunci tertentu, gunakan cmdlet Get-ItemProperty. Misalnya, kami menetapkan konten cabang ke variabel tertentu dan mendapatkan nilai parameter tertentu:

$ DriverUpdate = Dapatkan-ItemProperty -Path “HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching”
$ DriverUpdate.SearchOrderConfig

Kami mendapatkan bahwa nilai parameter SearchOrderConfig adalah 1.

Cara mengubah nilai registri

Untuk mengubah nilai parameter ini, gunakan cmdlet Set-ItemProperty:

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

Periksa apakah nilainya telah berubah:

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

Cara membuat bagian baru (kunci) atau entri registri

Untuk menambahkan cabang registri baru, gunakan perintah Item-Baru. Buat cabang baru bernama NewKey:

$ HKCU_Desktop = "HKCU: \ Control Panel \ Desktop"
Item Baru -Path $ HKCU_Desktop -Nama NewKey

Untuk cabang yang dibuat, tambahkan parameter string baru dengan nama SuperParamString dan nilai file_name.txt:

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

Pastikan bahwa kunci dan parameter baru muncul di registri.

Menghapus kunci atau pengaturan registri

Hapus parameter SuperParamString yang dibuat sebelumnya:

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

Dan kemudian hapus seluruh cabang:

Remove-Item -Path $ HKCU_Desktop \ NewKey -Recurse

Catatan. Sakelar -Recurse mengatakan bahwa Anda perlu menghapus semua sub-bagian bersarang secara rekursif tanpa konfirmasi

Untuk menghapus semua elemen dalam cabang, tetapi bukan bagian itu sendiri, perintahnya akan seperti ini:

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

Cara mengganti nama kunci atau parameter

Untuk mengganti nama parameter, gunakan perintah:

Ganti nama-ItemProperty -path 'HKCU: \ Control Panel \ Desktop \ NewKey' -nama "SuperParamString" -nama "OldParamString"

Demikian pula, Anda dapat mengganti nama cabang registri:

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

Cari registri menggunakan PowerShell

PowerShell juga memungkinkan Anda untuk mencari registri. Skrip berikut mencari cabang HKCU: \ Control Panel \ Desktop untuk parameter yang berisi kunci dpi.

$ Path = (Dapatkan-ItemProperty 'HKCU: \ Control Panel \ Desktop')
$ Path.PSObject.Properties | ForEach-Object
If ($ _. Name -like '* dpi *')
Host-Tulis $ _. Nama '=' $ _. Nilai

Akses registri jarak jauh menggunakan PowerShell

PowerShell memungkinkan Anda untuk mengakses registri komputer jarak jauh. Anda dapat terhubung ke komputer jarak jauh melalui WinRM (Invoke-Command atau Enter-PSSession):

Invoke-Command -ComputerName srv-fs1 -ScriptBlock Dapatkan-ItemProperty -Path 'HKLM: \ System \ Setup' -Name WorkingDirectory

Atau melalui koneksi ke registri jarak jauh (layanan RemoteRegistry harus diaktifkan)

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

Kiat. Jika Anda perlu membuat / memodifikasi pengaturan registri spesifik pada banyak komputer domain, lebih mudah untuk menggunakan fitur GPO.

Jadi, kami melihat contoh khas menggunakan PowerShell untuk bekerja dengan registri Windows. Seperti yang Anda lihat, tidak ada yang rumit.