PowerShell per ottenere un valore del registro: Un tutorial passo-passo

In questo articolo, impara come utilizzare PowerShell per ottenere un valore del registro e interrogare voci in un registro utilizzando una varietà di metodi.

Cominciamo!

Prerequisiti

Tutti gli esempi in questo articolo saranno dimostrati utilizzando PowerShell 7.1, che al momento della pubblicazione di questo articolo è l’ultima versione. Puoi anche utilizzare Windows PowerShell 5.1 se lo preferisci. Dovresti anche avere una conoscenza di base dei PowerShell Drives.

Alcuni esempi potrebbero non funzionare senza privilegi di amministratore.

Ottenere chiavi e valori del registro con Get-ChildItem

Uno dei modi più semplici per trovare chiavi e valori del registro è utilizzare il cmdlet Get-ChildItem. Questo utilizza PowerShell per ottenere un valore del registro e altro ancora enumerando elementi in PowerShell drives. In questo caso, quella PowerShell drive è l’unità HKLM trovata eseguendo Get-PSDrive.

Esegui il seguente comando in una console di PowerShell.

Get-ChildItem -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\'

Nello screenshot sottostante, puoi vedere:

  1. Il percorso completo della chiave di registro WindowsUpdate
  2. La chiave AU
  3. L’elenco delle voci di registro nella chiave AU con i valori corrispondenti
Getting registry values for Windows Update

Un punto veloce riguardo alla schermata sopra. Potresti notare che l’output è un po’ fuorviante. Normalmente, l’output della console di PowerShell rappresenta le proprietà di un oggetto. Get-ChildItem si comporta in modo diverso in questo caso perché questo oggetto tecnicamente non ha proprietà. Comandi extra vengono eseguiti in background per produrre la formattazione che vedi.

Collegato: Come verificare un riavvio in sospeso nel Registro di sistema di Windows

Ottenere i valori del Registro di sistema con Get-ItemProperty

Continuando con la stessa chiave di registro di prima, utilizziamo il cmdlet Get-ItemProperty questa volta per rendere l’output più leggibile.

Utilizzare Get-ItemProperty è il modo migliore per ottenere una proprietà di un elemento, ottenendo le chiavi e i loro valori all’interno del Registro di sistema. Esegui il comando seguente:

Get-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'

Nella schermata sottostante, vedrai un elenco delle chiavi e dei valori:

  1. Per il contenitore di registro AU
  2. Proprietà correlate a PowerShell che iniziano tutte con PS
Using Get-ItemProperty in PowerShell to get registry values

In alternativa, puoi specificare il percorso dell’elemento di registro per ottenere lo stesso output solo leggermente più veloce usando .NET. Il comando seguente utilizza la Classe Registry di .NET in PowerShell per ottenere un valore di registro:

Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

Ottenere i valori del Registro di sistema con Get-ItemPropertyValue

Ora è il momento di guardare i valori chiave. Utilizzando il cmdlet Get-ItemPropertyValue con lo stesso contenitore del registro come prima, vediamo il valore per la chiave NoAutoUpdate. Esegui il seguente comando PowerShell:

Get-ItemPropertyValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\' -Name NoAutoUpdate

Utilizzando Get-ItemPropertyValue, otterrai un output più conciso che mostra solo il valore e non le altre informazioni che hai visto in precedenza.

NoAutoUpdate key and the corresponding value

Interrogare il Registro senza le unità di PS

In tutto questo tutorial, hai utilizzato le unità di PowerShell per lavorare con il Registro. Farlo in questo modo non è l’unico modo; puoi anche sfruttare .NET e ottenere informazioni sul Registro tramite le classi .NET!

Ad esempio, forse devi utilizzare PowerShell per ottenere un valore del Registro di HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\ : AutoUpate su un computer remoto.

Puoi farlo con .NET:

  1. Aprire la connessione al Registro sul computer remoto.
$Registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computername)

2. Aprire la chiave del Registro specifica che stai cercando.

$RegistryKey = $Registry.OpenSubKey("SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU", $true)

3. Utilizzare il metodo GetValue() per interrogare il valore del valore del Registro all’interno della chiave del Registro.

$RegistryKey.GetValue('AU')

Utilizzare .NET anziché le unità di PowerShell è un po’ più veloce ed è un modo semplice per connettersi e utilizzare PowerShell per interrogare chiavi e valori del Registro su computer remoti.

Testare i valori del Registro con Test-Path

A volte è sufficiente verificare se un valore del Registro è presente. Il modo per farlo è utilizzare il cmdlet Test-Path.

Proseguendo con il contenitore WindowsUpdate, testa se il contenitore AU è presente eseguendo il seguente comando PowerShell:

Test-Path -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'

Se il risultato è Vero, la chiave o il contenitore esistono. Ma cosa succede se è necessario verificare se un valore o una voce esiste? Costruiamo una funzione personalizzata per questo test:

Function Test-RegistryValue ($regkey, $name) {
     if (Get-ItemProperty -Path $regkey -Name $name -ErrorAction Ignore) {
         $true
     } else {
         $false
     }
 }

Utilizzando la funzione personalizzata, inserisci un percorso e il nome della chiave o del contenitore, e il valore che stai cercando, e la funzione personalizzata restituirà Vero o Falso (3) come mostrato nella schermata di seguito:

Enter a key and value to test and return True or False

Passaggi successivi

Sappi che puoi utilizzare i comandi Get-ChildItem, Get-ItemProperty e Get-ItemPropertyValue in PowerShell per ottenere un valore o una chiave del registro, cosa puoi fare ancora?

Se desideri saperne di più sul lavoro con il registro del sistema in PowerShell, consulta l’articolo di Microsoft Docs intitolato ‘Lavorare con le chiavi del registro’. Puoi anche trovare una grande dimostrazione di impostazione dei valori del registro nel post del blog ATA Usare Active Setup: come impostare un valore del registro in tutte le chiavi degli utenti.

Source:
https://adamtheautomator.com/powershell-to-get-a-registry-value/