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
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")
Jadi, kami melihat contoh khas menggunakan PowerShell untuk bekerja dengan registri Windows. Seperti yang Anda lihat, tidak ada yang rumit.