Come utilizzare PowerShell per leggere il valore del registro

24 giugno 2021 14116 Visualizzazioni Come utilizzare PowerShell per leggere il valore del registro

In questa zona S, Victor ti insegna come usare PowerShell per leggere il valore del registro.





La guida inizia insegnandoti come formattare il percorso del registro da utilizzare con PowerShell. Imparerai anche il metodo migliore per copiare una chiave di registro da utilizzare in PowerShell.



Infine, la guida offre 10 esempi con diversi modi per utilizzare PowerShell per leggere i valori del registro.

La guida ha una varietà di argomenti ed esempi. Se desideri leggere un argomento o un esempio specifico, espandi Sfoglia gli argomenti dei post di seguito e fai clic sull'argomento.



Sfoglia gli argomenti dei post



Come formattare i percorsi del registro per PowerShell

Come utilizzare PowerShell per leggere il valore del registro - Come formattare i percorsi del registro per PowerShell

Prima di insegnarti come usare PowerShell per leggere il valore del registro, voglio insegnarti come formattare i percorsi del registro per lavorare con PowerShell.

Il registro di Windows ha 5 chiavi di primo livello (chiavi radice):



  1. HKEY_LOCAL_MACHINE
  2. HKEY_CURRENT_CONFIG
  3. HKEY_CLASSES_ROOT
  4. HKEY_USERS
  5. HKEY_CURRENT_USER

Per leggere un valore di registro, devi specificare la chiave come percorso nel file Get-ItemProperty o Ottieni oggetto cmdlet. Esistono 2 modi per formattare il percorso del registro:



Formatta con il percorso completo della chiave di registro

accedere Registro:: seguito dal percorso completo del registro. Ad esempio, per specificare HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion , Userò Registro::HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion

Formato con il percorso della chiave di registro abbreviato

Puoi anche inserire l'abbreviazione della chiave di registro di livello superiore (chiave radice), seguita da due punti (:), quindi il percorso completo della chiave di registro (senza il nome radice).

Come promemoria, ecco le abbreviazioni per le chiavi radice:

HKEY_LOCAL_MACHINE – HKLM
HKEY_CURRENT_CONFIG – HKCC
HKEY_CLASSES_ROOT – HKCR
HKEY_USERS – HKU
HKEY_CURRENT_USER – HKCU

Pertanto, per specificare il percorso del registro, HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion con questo secondo metodo si scriverà – HKLM:SOFTWAREMicrosoftWindowsCurrentVersion

Si noti che anche se il nome radice è stato rimosso, la prima barra () è stata mantenuta.

Come copiare il nome della chiave di registro

Un'altra cosa prima di andare avanti: è meglio copiare il percorso della chiave di registro che si desidera leggere con PowerShell, invece di digitarlo manualmente.

Per copiare una chiave di registro, fare clic con il pulsante destro del mouse sulla chiave e selezionare Copia il nome della chiave . Ecco un esempio.

Come utilizzare PowerShell per leggere il valore del registro - Come formattare i percorsi del registro per PowerShell

Usa PowerShell per leggere il valore del registro: esempi

Utilizzare PowerShell per leggere il valore del registro: esempi

Ora che sai come formattare un percorso del registro da utilizzare con PowerShell, questa sezione presenta 10 esempi per utilizzare PowerShell per leggere il valore del registro:

Come restituire tutti i valori in una chiave di registro

Per restituire tutti i valori di una chiave di registro, immetti il ​​comando seguente e premi invio.

|_+_| Modificare il percorso del percorso della chiave di registro di cui si desidera leggere i valori. Ricorda la formattazione del registro dell'ultima sezione.

Il comando restituirà tutti i valori nel percorso specificato. Il secondo screenshot qui sotto è la voce di registro effettiva.

Se confronti il ​​risultato di PowerShell e i valori del Registro di sistema (secondo riquadro), sono esattamente gli stessi.

Come restituire un valore specifico in una chiave di registro e salvarlo in una variabile

In seguito all'ultima sezione, il comando in quella sezione ha restituito tutti i valori nel percorso del registro specificato. Tuttavia, puoi anche usare PowerShell per leggere il valore del registro ma restituire un valore specifico.

Ci sono diversi modi per farlo.

L'ultimo comando (il Get-ItemProperty comando) ha restituito i valori mostrati nello screenshot seguente.

Questa immagine ha l'attributo alt vuoto; il suo nome file è image-74-1024x591.png

Per restituire il valore CommonFilesDir , utilizzare uno dei seguenti comandi:

formula 1 su kodi
|_+_| |_+_|

I due comandi restituiscono i dati di registro, privo di il nome della proprietà, CommonFilesDir . Guarda lo screenshot qui sotto:

Infine, per questa sottosezione, puoi usare PowerShell per leggere il valore del registro e salvarlo in una variabile. Ad esempio, possiamo salvare i dati del registro nell'ultimo comando in una variabile chiamata $RegData .

Ecco il comando modificato:

|_+_|

Ora, quando esegui il comando, non restituirà alcun risultato sulla console perché il risultato viene salvato nella variabile...

Come restituire un valore specifico in una chiave di registro e salvarlo in una variabile

Tuttavia, per visualizzare il risultato salvato nella variabile, eseguire la variabile...

|_+_|

Ecco il risultato in PowerShell...

Come restituire il nome della sottochiave del registro

L'ultimo comando nell'ultima sottosezione ha restituito sia i nomi delle chiavi di registro che i relativi dati.

Tuttavia, a volte potresti voler visualizzare i Nomi senza i Dati. Puoi usare il Ottieni oggetto Cmdlet per farlo. Vedi il comando qui sotto...

|_+_|

Il comando restituirà i Nomi delle chiavi del Registro di sistema senza la colonna Dati di accompagnamento.

aggiungi primewire a kodi

Come utilizzare PowerShell per leggere il valore del registro e restituire dati binari

In questo esempio, voglio visualizzare il valore binario nella chiave di registro, CaptionFont . Questa chiave si trova in questo percorso del registro HKEY_CURRENT_USERControl PanelDesktopWindowMetrics.

Come utilizzare PowerShell per leggere il valore del registro e restituire dati binari

Il primo passo è restituire la proprietà del CaptionFont chiave. Tuttavia, prima di farlo, elenchiamo tutte le proprietà in HKEY_CURRENT_USERPannello di controlloDesktopWindowMetrics .

|_+_|

Il comando restituisce un insieme di proprietà, tra cui CaptionFont .

Per restituire solo le proprietà, reindirizza il comando sopra al Seleziona-Oggetto...

|_+_|

Questo comando visualizza tutte le proprietà nell'elenco.

Come utilizzare PowerShell per leggere il valore del registro e restituire dati binari

Per visualizzare CaptionFont (il 4° valore nell'array), aggiorna il comando come mostrato di seguito e salvalo in una variabile...

|_+_|

Quindi, per visualizzare il tipo di valore del Registro di sistema (in questo caso, REG_BINARY), chiamare il GetValueKind Metodo nel comando originale salvato in $ chiave variabile. Quindi, usa CaptionFont (salvato nel $nom e) come valore nel Metodo.

Ecco il comando...

|_+_|

Il risultato, come previsto, è Binary.

Successivamente, leggiamo i valori nel tipo di registro binario con il comando PowerShell di seguito...

|_+_|

Come puoi vedere dal comando, il valore viene riprovato chiamando il Ottieni valore Metodo nella chiave originale salvata nel file $ chiave variabile. Quindi, utilizzando il nome della Proprietà, CaptionFont nel Metodo.

Il risultato è un mucchio di numeri. Per vedere questo valore nel registro, vedere lo screenshot qui sotto.

Come utilizzare PowerShell per leggere il valore del registro e restituire dati binari

Infine, per semplificare l'elenco dei valori di registro, ho creato una funzione di PowerShell denominata Get-RegistryData. Per scaricare la funzione, fare clic su download Get-RegistryData.zip

Una volta scaricato, decomprimi il file. Quindi, esegui i comandi seguenti:

|_+_| Sostituisci C:UsersVictorADownloadsGet-RegistryDataGet-RegistryData con il percorso della funzione sul tuo computer.

Per ottenere i valori o i dati nelle chiavi su un percorso del registro, eseguire il comando seguente.

|_+_|

Il comando visualizza i nomi delle chiavi, il percorso del registro e il tipo di chiave. La colonna Tipo è nascosta nel mio screenshot qui sotto.

In alternativa, se non si desidera visualizzare determinate intestazioni, è possibile reindirizzare Get-RegistryData a Select-Object.

|_+_|

Con il comando precedente, Get-RegistryData visualizza il file Nome , Tipo , e Dati di ogni chiave nel percorso del registro specificato...

La funzione Get-RegistryData ha un singolo parametro chiamato Registro di sistema

Come utilizzare PowerShell per leggere il valore del registro e restituire un array

Per leggere la chiave del Registro di sistema con PowerShell e restituire il valore in una matrice, utilizzare il file Get-ChildItem comando.

Questa chiave di registro, HKEY_CURRENT_USERPannello di controlloDesktop ha 3 sottochiavi. Il comando seguente restituisce tutte le sottochiavi, le loro proprietà e i valori:

|_+_|

Questi valori vengono restituiti in una matrice. Per confermare, esegui il comando seguente...

|_+_|

Questo comando conferma che il tipo di dati nell'ultimo comando, salvato nella variabile $subkeys è un array.

Come utilizzare PowerShell per leggere il valore del registro e restituire un arrayPer il Get-ChildItem comando per restituire i risultati in una matrice, la chiave del Registro di sistema deve avere delle sottochiavi.

Come utilizzare PowerShell per ottenere il valore del registro se esiste

L'esempio in questa sottosezione è simile a tutti gli altri esempi in questa guida con una piccola eccezione. La leggera modifica qui consiste nell'usare Test-Path per verificare se il percorso esiste.

Quindi, se il percorso esiste, ottieni i suoi valori con PowerShell. Questo semplice script verificherà se il percorso del registro, HKEY_CURRENT_USERPannello di controlloDesktop esiste.

Quindi, se esiste, ne leggerà i valori con il comando Get-ItemProperty.

|_+_|

La chiave di registro, Registro::HKEY_CURRENT_USERPannello di controlloDesktop esiste. Quindi, l'ultimo comando ha restituito i suoi valori.

Vediamo se specifichiamo una chiave di registro che non esiste...

|_+_|

Questa volta, lo script esegue lo script in Altro blocco del SE dichiarazione.

Come utilizzare PowerShell per ottenere il valore del registro se esiste

Come utilizzare PowerShell per ottenere e confrontare i valori del registro

Come avrai capito, il Ottieni oggetto e Get-ItemProperty i comandi non visualizzano i tipi e i dati delle chiavi di registro. Quindi, se vuoi confrontare i dati in una chiave, devi trovare un altro modo per farlo.

Nella sottosezione Come utilizzare PowerShell per leggere il valore del registro e restituire dati binari, ho menzionato di aver creato una funzione chiamata Get-RegistryData.

Per eseguire i comandi in questa sottosezione, è necessario scaricare la funzione Get-RegistryData.zip. Vedere la sottosezione Come utilizzare PowerShell per leggere il valore del registro e restituire dati binari.

È possibile utilizzare questa funzione per restituire i nomi, i tipi ei dati delle sottochiavi in ​​un percorso di registro specificato.

Ad esempio, per restituire i nomi, i tipi e i dati di tutte le voci in HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorer, eseguire il comando seguente...

|_+_|

Se andiamo oltre, diciamo che voglio confrontare il valore di Icona Sottolineato chiave con un altro valore, procederò come descritto di seguito.

  1. Pipettare l'uscita di Get-RegistryData comando in a Dove-Oggetto comando e filtro per Nome è uguale Icona Sottolineato .
|_+_|

L'ultimo comando mostra che il valore corrente in IconUnderline è 3.

  1. Se voglio confrontare questo valore con un altro valore, diciamo 2, userò i comandi seguenti. Il primo comando salva il comando nel passaggio 1 precedente in una variabile.
|_+_|

Il SE confronta il valore corrente nella chiave di registro con 1. Quindi, se non è uguale a 1, utilizza il Set-ItemProperty comando per aggiornare il valore a ciò che specifichi in Valore parametro.

Come utilizzare PowerShell per ottenere la chiave di registro e le sottochiavi

Ci sono due comandi che puoi usare per ottenere chiavi di registro e sottochiavi. Puoi usare il Get-ItemProperty o il Get-ChildItem comando.

La differenza tra i due comandi è come si specifica il percorso del registro.

Per usare il Get-ItemProperty per ottenere la chiave di registro e le sottochiavi, aggiungi una barra rovesciata alla fine del percorso del registro. Quindi, aggiungi il carattere jolly asterisco dietro la barra rovesciata.

Ad esempio in Get-ItemProperty per leggere chiavi e sottochiavi in ​​HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorer, eseguire il comando seguente:

|_+_|

D'altra parte, l'uso di Get-ChildItem non richiede l'aggiunta di una barra rovesciata e di un carattere jolly. Ecco un esempio con il comando Get-ChildItem:

elimina gli aggiornamenti in sospeso Windows 10
|_+_|

Entrambi i comandi restituiscono le chiavi e le sottochiavi nel percorso del registro specificato.

Come utilizzare PowerShell per ottenere LastWriteTime di una chiave di registro

Mentre stavo cercando questo articolo, ho scoperto che molti utenti stanno cercando come utilizzare PowerShell per ottenere l'ultima volta che una chiave di registro è stata aggiornata.

Tuttavia, durante la mia ricerca ho anche scoperto che non ci sono cmdlet esistenti per questo compito. Inoltre, sembra che l'unica soluzione sia creare una funzione di PowerShell personalizzata.

Fortunatamente, ho trovato una funzione in superutente.com . Quindi, non avevo bisogno di creare il mio!

Per facilitare i lettori di S Zone, ho scaricato il file Aggiungi-RegKeyLastWriteTime superutente.com funzione.

Add-RegKeyLastWriteTime è per gentile concessione di Cpt.Whale, un collaboratore della community di superuser.com

Per scaricare la funzione da S Zone, fare clic su download Add-RegKeyLastWriteTime.zip . Quindi, decomprimi il file zip scaricato.

Infine, apri PowerShell ed esegui i comandi seguenti:

|_+_| Sostituisci C:UsersVictorADownloadsAdd-RegKeyLastWriteTimeAdd-RegKeyLastWriteTime con il percorso della funzione sul tuo computer.

Infine, per ottenere l'ultima ora di scrittura di una chiave di registro, eseguire il comando seguente:

|_+_| HKCU è il formato abbreviato per HKEY_CURRENT_CONFIG. Ne ho discusso ampiamente nella sezione Come formattare i percorsi del registro per PowerShell di questa guida.

Il comando restituisce l'ultima ora di scrittura per tutte le sottochiavi nella chiave del registro di base HKEY_CURRENT_USER...

Come utilizzare PowerShell per ottenere una chiave di registro

Come utilizzare PowerShell per ottenere le dimensioni del registro

Se vuoi vedere la dimensione del registro in Windows 10, esegui il comando seguente:

|_+_|

Il comando restituisce la dimensione corrente e massima del database del registro.

Tuttavia, puoi visualizzare risultati aggiuntivi con una versione migliorata del comando. Ho trovato un codice che può farlo in superutente.com .

Il codice di Markus (un collaboratore della community di superuser.com) mostra informazioni aggiuntive. Ecco il codice.

|_+_|

E il risultato in PowerShell ISE...

Se spero di essere stato in grado di insegnarti con successo come utilizzare PowerShell per leggere il valore del registro!

Spero anche che tu abbia trovato utile la zona S. Se l'hai trovato utile, vota gentilmente alla Domanda utile di questo post di seguito.

In alternativa, puoi fare una domanda, lasciare un commento o fornire un feedback con il modulo Lascia un commento che si trova alla fine di questa pagina.

Infine, per ulteriori PowerShell S Zones, visita la nostra pagina di istruzioni su Windows PowerShell. Potresti anche trovare molto utile la nostra pagina Lavoro dalla home.

Riferimenti e ulteriori letture

  1. Lavorare con le voci di registro
  2. Scarica Get-RegistryData.zip
  3. Scarica Add-RegKeyLastWriteTime.zip
  4. Spiegazione di Windows PowerShell ISE