Cum să utilizați PowerShell pentru a citi valoarea de registru

24 iunie 2021 14116 Vizualizări Cum să utilizați PowerShell pentru a citi valoarea de registru

În această zonă S, Victor vă învață cum să utilizați PowerShell pentru a citi valoarea de registru.





cea mai bună aplicație de căutare craigslist

Ghidul începe prin a vă învăța cum să formatați calea de registry pentru a o utiliza cu PowerShell. De asemenea, veți învăța cea mai bună metodă de a copia o cheie de registry pentru utilizare în PowerShell.



În cele din urmă, ghidul oferă 10 exemple cu diverse moduri de a utiliza PowerShell pentru a citi valorile de registry.

Ghidul are o varietate de subiecte și exemple. Dacă doriți să citiți un anumit subiect sau un exemplu, extindeți Răsfoiți subiectele postărilor de mai jos și faceți clic pe subiect.



Răsfoiți subiectele postărilor



Cum se formatează căile de registry pentru PowerShell

Cum să utilizați PowerShell pentru a citi valoarea de registry - Cum să formatați căile de registry pentru PowerShell

Înainte de a vă învăța cum să utilizați PowerShell pentru a citi valoarea de registry, vreau să vă învăț cum să formatați căile de registry pentru a funcționa cu PowerShell.

Registrul Windows are 5 chei de nivel superior (chei rădăcină):



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

Pentru a citi o valoare de registry, specificați cheia ca cale în fișierul Get-ItemProperty sau Obține-Articol Cmdleturi. Există 2 moduri de a formata calea de registry:



Formatați cu calea completă a cheii de registry

introduce Registru:: urmată de calea completă către registry. De exemplu, pentru a specifica HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion , Voi folosi Registry::HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion

Formatați cu calea abreviată a cheii de registry

De asemenea, puteți introduce abrevierea cheii de registry de nivel superior (cheia rădăcină), urmată de două puncte (:), apoi calea completă către cheia de registry (fără numele rădăcină).

Ca o reamintire, iată abrevierile pentru cheile rădăcină:

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

Prin urmare, pentru a specifica calea de registry, HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion cu această a doua metodă, se va scrie - HKLM:SOFTWAREMicrosoftWindowsCurrentVersion

Rețineți că, deși numele rădăcină este eliminat, prima bară oblică () a fost păstrată.

Cum să copiați numele cheii de registry

Încă un lucru înainte de a trece mai departe – este mai bine să copiați calea către cheia de registry pe care doriți să o citiți cu PowerShell – în loc să o tastați manual.

Pentru a copia o cheie de registry, faceți clic dreapta pe cheie și selectați Copiați numele cheii . Iată un exemplu.

Cum să utilizați PowerShell pentru a citi valoarea de registry - Cum să formatați căile de registry pentru PowerShell

Utilizați PowerShell pentru a citi valoarea de registru: exemple

Utilizați PowerShell pentru a citi valoarea de registru: exemple

Acum că știți cum să formatați o cale de registry pentru a fi utilizată cu PowerShell, Această secțiune conține 10 exemple de utilizare a PowerShell pentru a citi valoarea de registry:

Cum se returnează toate valorile într-o cheie de registry

Pentru a returna toate valorile unei chei de registry, introduceți comanda de mai jos și apăsați enter.

|_+_| Schimbați calea către calea pentru cheia de registry pe care doriți să-i citiți valorile. Amintiți-vă de formatarea registrului din ultima secțiune.

Comanda va returna toate valorile din calea specificată. A doua captură de ecran de mai jos este intrarea reală în registry.

Dacă comparați rezultatul PowerShell și valorile de registry (al doilea panou), acestea sunt exact aceleași.

Cum să returnați o anumită valoare într-o cheie de registry și să o salvați într-o variabilă

După ultima secțiune, comanda din acea secțiune a returnat toate valorile din calea de registry specificată. Cu toate acestea, puteți utiliza și PowerShell pentru a citi valoarea de registry, dar pentru a returna o anumită valoare.

Există mai multe moduri de a face acest lucru.

Ultima comandă ( Get-ItemProperty comanda) a returnat valorile afișate în captura de ecran de mai jos.

Această imagine are un atribut alt gol; numele său de fișier este imagine-74-1024x591.png

Pentru a returna valoarea CommonFilesDir , utilizați una dintre comenzile de mai jos:

|_+_| |_+_|

Cele două comenzi returnează datele de registru, fără numele proprietății, CommonFilesDir . Vedeți captura de ecran de mai jos:

În cele din urmă, pentru această subsecțiune, puteți utiliza PowerShell pentru a citi valoarea de registry și a salva valoarea într-o variabilă. De exemplu, putem salva datele de registry în ultima comandă dintr-o variabilă numită $RegData .

Iată comanda modificată:

|_+_|

Acum, când rulați comanda, aceasta nu va returna niciun rezultat pe consolă, deoarece rezultatul este salvat în variabila...

Cum să returnați o anumită valoare într-o cheie de registry și să o salvați într-o variabilă

Cu toate acestea, pentru a afișa rezultatul salvat în variabilă, rulați variabila...

|_+_|

Iată rezultatul în PowerShell...

Cum se returnează numele subcheii de registru

Ultima comandă din ultima sub-secțiune a returnat atât numele cheilor de registry, cât și datele acestora.

Cu toate acestea, uneori poate doriți să afișați numele fără date. Puteți folosi Obține-Articol Cmdlet pentru a face acest lucru. Vezi comanda de mai jos...

|_+_|

Comanda va returna Numele cheilor de registry fără coloana de date însoțitoare.

Cum să utilizați PowerShell pentru a citi valoarea de registru și a returna date binare

În acest exemplu, vreau să afișez valoarea binară în cheia de registry, Font de lege . Această cheie se găsește în această cale de registry HKEY_CURRENT_USERControl PanelDesktopWindowMetrics.

Cum să utilizați PowerShell pentru a citi valoarea de registru și a returna date binare

Primul pas este returnarea proprietății Font de lege cheie. Cu toate acestea, înainte de a face asta, să listăm toate proprietățile din HKEY_CURRENT_USERControl PanelDesktopWindowMetrics .

|_+_|

Comanda returnează un set de proprietăți, inclusiv Font de lege .

Pentru a returna doar proprietățile, trimiteți comanda de mai sus către Select-Object...

|_+_|

Această comandă afișează toate proprietățile din listă.

Cum să utilizați PowerShell pentru a citi valoarea de registru și a returna date binare

Pentru a afișa CaptionFont (a 4-a valoare din matrice), actualizați comanda așa cum se arată mai jos și salvați-o într-o variabilă...

|_+_|

Apoi, pentru a afișa tipul de valoare de registry (în acest caz, REG_BINARY), apelați GetValueKind Metoda din comanda originală salvată în $key variabil. Apoi, folosește Font de lege (salvat în $nam e) ca valoare din Metodă.

Iată comanda...

|_+_|

Rezultatul, așa cum era de așteptat, este binar.

Apoi, citim valorile din tipul de registru binar cu comanda PowerShell de mai jos...

|_+_|

După cum puteți vedea din comandă, valoarea este reîncercată apelând la GetValue Metoda din cheia originală salvată în $key variabil. Apoi, folosind numele proprietății, Font de lege în Metodă.

Rezultatul este o grămadă de numere. Pentru a vedea această valoare în registry, consultați captura de ecran de mai jos.

Cum să utilizați PowerShell pentru a citi valoarea de registru și a returna date binare

În cele din urmă, pentru a facilita listarea valorilor de registry, am creat o funcție PowerShell numită Get-RegistryData. Pentru a descărca funcția, faceți clic pe descărcare Get-RegistryData.zip

Odată descărcat, dezarhivați fișierul. Apoi, executați comenzile de mai jos:

|_+_| Înlocuiți C:UsersVictorADownloadsGet-RegistryDataGet-RegistryData cu calea către funcție de pe computer.

Pentru a obține valorile sau datele din cheile de pe o cale de registry, executați comanda de mai jos.

|_+_|

Comanda afișează numele cheilor, calea de registry și tipul cheii. Coloana Tip este ascunsă în captura de ecran de mai jos.

În mod alternativ, dacă nu doriți să afișați anumite antete, puteți trimite Get-RegistryData către Select-Object.

|_+_|

Cu comanda de mai sus, Get-RegistryData afișează Nume , Tip , și Date a fiecărei chei din calea de registry specificată...

Funcția Get-RegistryData are un singur parametru numit RegistryPath

Cum să utilizați PowerShell pentru a citi valoarea registrului și a returna o matrice

Pentru a citi cheia de registry cu PowerShell și a returna valoarea într-o matrice, utilizați Get-ChildItem comanda.

Această cheie de registry, HKEY_CURRENT_USERPanou de controlDesktop are 3 subchei. Comanda de mai jos returnează toate subcheile, proprietățile și valorile acestora:

|_+_|

Aceste valori sunt returnate într-o matrice. Pentru a confirma, executați comanda de mai jos...

|_+_|

Această comandă confirmă că tipul de date din ultima comandă, salvat în variabila $subkeys este o matrice.

Cum să utilizați PowerShell pentru a citi valoarea registrului și a returna o matricePentru Get-ChildItem pentru a returna rezultatele într-o matrice, cheia de registry trebuie să aibă subchei.

Cum să utilizați PowerShell pentru a obține valoarea de registru dacă există

Exemplul din această subsecțiune este similar cu toate celelalte exemple din acest ghid, cu o excepție minoră. Ușoară modificare aici este de a folosi Test-Path pentru a verifica dacă calea există.

Apoi, dacă calea există, obțineți valorile acesteia cu PowerShell. Acest script simplu va verifica dacă calea de registry, HKEY_CURRENT_USERControl PanelDesktop există.

Apoi, dacă există, își va citi valorile cu comanda Get-ItemProperty.

|_+_|

Cheia de registry, Registry::HKEY_CURRENT_USERControl PanelDesktop există. Deci, ultima comandă și-a returnat valorile.

Să vedem dacă specificăm o cheie de registry care nu există...

|_+_|

De data aceasta, scriptul execută scriptul în Altfel bloc al DACĂ afirmație.

Cum să utilizați PowerShell pentru a obține valoarea de registru dacă există

Cum să utilizați PowerShell pentru a obține și a compara valorile de registru

După cum probabil v-ați imaginat, Obține-Articol și Get-ItemProperty comenzile nu afișează tipurile și datele cheilor de registry. Deci, dacă doriți să comparați datele într-o cheie, trebuie să găsiți o altă modalitate de a face acest lucru.

În sub-secțiunea Cum să utilizați PowerShell pentru a citi valoarea registrului și a returna date binare, am menționat că am creat o funcție numită Get-RegistryData.

Pentru a rula comenzile din această sub-secțiune, trebuie să descărcați funcția Get-RegistryData.zip. Consultați subsecțiunea Cum să utilizați PowerShell pentru a citi valoarea registrului și a returna date binare.

Puteți utiliza această funcție pentru a returna numele, tipurile și datele sub-cheilor dintr-o cale de registry specificată.

De exemplu, pentru a returna numele, tipurile și datele tuturor intrărilor din HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorer, rulați comanda de mai jos...

|_+_|

Dacă o luăm mai departe, să spunem că vreau să compar valoarea PictogramăSubliniere cheie cu o altă valoare, voi proceda după cum este prezentat mai jos.

  1. Conductă de ieșire a Get-RegistryData comanda într-un Unde-Obiect comanda și filtrați după Nume este egal PictogramăSubliniere .
|_+_|

Ultima comandă arată că valoarea curentă din IconUnderline este 3.

  1. Dacă vreau să compar această valoare cu o altă valoare, să zicem 2, voi folosi comenzile de mai jos. Prima comandă salvează comanda de la pasul 1 de mai sus într-o variabilă.
|_+_|

The DACĂ Instrucțiunea compară valoarea curentă din cheia de registry cu 1. Apoi, dacă nu este egală cu 1, folosește Set-ItemProperty comanda pentru a actualiza valoarea la ceea ce specificați în Valoare parametru.

Cum să utilizați PowerShell pentru a obține cheia de registry și subcheile

Există două comenzi pe care le puteți folosi pentru a obține chei de registry și subchei. Puteți folosi Get-ItemProperty sau Get-ChildItem comanda.

Diferența dintre cele două comenzi este modul în care specificați calea de registry.

Pentru a utiliza Get-ItemProperty pentru a obține cheia de registry și subcheile, adăugați o bară oblică inversă la sfârșitul căii de registry. Apoi, adăugați wildcard-ul asterisc în spatele barei oblice inverse.

De exemplu, la Get-ItemProperty pentru a citi cheile și subcheile în HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorer, executați comanda de mai jos:

|_+_|

Pe de altă parte, utilizarea Get-ChildItem nu necesită adăugarea vreunei bare oblice inverse și a unui wildcard. Iată un exemplu cu comanda Get-ChildItem:

|_+_|

Ambele comenzi returnează cheile și subcheile în calea de registry specificată.

Cum să utilizați PowerShell pentru a obține LastWriteTime al unei chei de registry

În timp ce cercetam acest articol, am aflat că o mulțime de utilizatori caută cum să folosească PowerShell pentru a obține ultima dată când o cheie de registry a fost actualizată.

Cu toate acestea, în timpul cercetării mele, am aflat și că nu există Cmdlet-uri existente pentru această sarcină. În plus, se pare că singura soluție este de a crea o funcție PowerShell personalizată.

Din fericire, am găsit o funcție în superuser.com . Deci, nu a fost nevoie să-l creez pe al meu!

Pentru a fi ușor pentru cititorii S Zone, am descărcat Add-RegKeyLastWriteTime superuser.com funcţie.

Add-RegKeyLastWriteTime este prin amabilitatea Cpt.Whale – un colaborator al comunității superuser.com

Pentru a descărca funcția din S Zone, faceți clic pe descărcare Add-RegKeyLastWriteTime.zip . Apoi, dezarhivați fișierul zip descărcat.

În cele din urmă, deschideți PowerShell și rulați comenzile de mai jos:

|_+_| Înlocuiți C:UsersVictorADownloadsAdd-RegKeyLastWriteTimeAdd-RegKeyLastWriteTime cu calea către funcție de pe computer.

În cele din urmă, pentru a obține ultima oră de scriere a unei chei de registry, executați comanda de mai jos:

|_+_| HKCU este formatul abreviat pentru HKEY_CURRENT_CONFIG. Am discutat pe larg acest lucru în secțiunea Cum se formatează căile de registry pentru PowerShell din acest ghid.

Comanda returnează ultima oră de scriere pentru toate subcheile din cheia de registry de bază HKEY_CURRENT_USER...

Cum să utilizați PowerShell pentru a obține o cheie de registry

Cum să utilizați PowerShell pentru a obține dimensiunea registrului

Dacă doriți să vedeți dimensiunea registrului în Windows 10, executați comanda de mai jos:

|_+_|

Comanda returnează dimensiunea curentă și maximă a bazei de date de registry.

Cu toate acestea, puteți afișa rezultate suplimentare cu o versiune îmbunătățită a comenzii. Am găsit un cod care poate face asta în superuser.com .

Codul lui Markus (un colaborator al comunității superuser.com) afișează informații suplimentare. Iată codul.

|_+_|

Și rezultatul în PowerShell ISE...

Dacă sper că am putut să vă învăț cu succes cum să utilizați PowerShell pentru a citi valoarea de registry!

De asemenea, sper că ați găsit Zona S de ajutor. Dacă vi s-a părut util, vă rugăm să votați da la întrebarea A fost utilă această postare de mai jos.

Alternativ, puteți pune o întrebare, lăsa un comentariu sau oferi feedback cu formularul Lăsați un răspuns aflat la sfârșitul acestei pagini.

În cele din urmă, pentru mai multe zone PowerShell S, vizitați pagina noastră de instrucțiuni Windows PowerShell. De asemenea, s-ar putea să găsească foarte utilă pagina noastră Lucrarea de la pornire.

Referințe și lecturi suplimentare

  1. Lucrul cu intrările de registru
  2. Descărcați Get-RegistryData.zip
  3. Descărcați Add-RegKeyLastWriteTime.zip
  4. Windows PowerShell ISE explicat