Как да използвате PowerShell за четене на стойността на системния регистър

24 юни 2021 г 14116 Изгледи Как да използвате PowerShell за четене на стойността на системния регистър

В тази S зона Виктор ви учи как да използвате PowerShell за четене на стойността на системния регистър.





Ръководството започва, като ви учи как да форматирате пътека в системния регистър, за да използвате PowerShell. Освен това ще научите най-добрия метод за копиране на ключ на системния регистър за използване в PowerShell.



И накрая, ръководството предлага 10 примера с различни начини за използване на PowerShell за четене на стойности на системния регистър.

Ръководството има различни теми и примери. Ако искате да прочетете конкретна тема или пример, разгънете Преглед на публикациите по-долу и щракнете върху темата.



Разгледайте темите на публикациите



Как да форматирате пътеките на системния регистър за PowerShell

Как да използвате PowerShell за четене на стойността на системния регистър - Как да форматирате пътеките на системния регистър за PowerShell

Преди да ви науча как да използвате PowerShell за четене на стойността на системния регистър, искам да ви науча как да форматирате пътеки в системния регистър, за да работите с PowerShell.

Регистърът на Windows има 5 ключа от най-високо ниво (Root ключове):



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

За да прочетете стойност в системния регистър, посочвате ключа като път в Get-ItemProperty или Вземете елемент Cmdlets. Има 2 начина за форматиране на пътя на системния регистър:



Форматиране с пълния път на ключа в системния регистър

Въведете Регистър:: последвано от пълния път до регистъра. Например за уточняване HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion , Ще използвам Регистър::HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion

Форматиране със съкратения път на ключа в системния регистър

Можете също така да въведете съкращението на ключа на системния регистър от най-високо ниво (корен ключ), последвано от двоеточие (:), след това пълния път до ключа на системния регистър (без коренното име).

Като напомняне, ето съкращенията за основните ключове:

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

Следователно, за да посочите пътя на системния регистър, HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion с този втори метод ще напише – HKLM:SOFTWAREMicrosoftWindowsCurrentVersion

Имайте предвид, че въпреки че коренното име е премахнато, първата наклонена черта () е запазена.

Как да копирате име на ключ в системния регистър

Още нещо, преди да продължа – по-добре е да копирате пътя до ключа на системния регистър, който искате да прочетете с PowerShell – вместо да го въвеждате ръчно.

За да копирате ключ от системния регистър, щракнете с десния бутон върху ключа и изберете Копиране на името на ключа . Ето един пример.

Как да използвате PowerShell за четене на стойността на системния регистър - Как да форматирате пътеките на системния регистър за PowerShell

Използвайте PowerShell, за да прочетете стойността на системния регистър: Примери

Използвайте PowerShell за четене на стойността на системния регистър: Примери

Сега, когато знаете как да форматирате пътека на системния регистър за използване с PowerShell, този раздел включва 10 примера за използване на PowerShell за четене на стойността на системния регистър:

Как да върнете всички стойности в ключ на системния регистър

За да върнете всички стойности на ключ в системния регистър, въведете командата по-долу и натиснете enter.

|_+_| Променете пътя към пътя за ключа на системния регистър, който искате да прочетете неговите стойности. Запомнете форматирането на системния регистър от последния раздел.

Командата ще върне всички стойности в посочения път. Втората екранна снимка по-долу е действителният запис в системния регистър.

Ако сравните резултата от PowerShell и стойностите на системния регистър (втори панел), те са абсолютно еднакви.

Как да върнете конкретна стойност в ключ на системния регистър и да я запишете в променлива

Следвайки последния раздел, командата в този раздел върна всички стойности в посочения път на системния регистър. Можете обаче да използвате PowerShell, за да прочетете стойността на системния регистър, но да върнете конкретна стойност.

Има няколко начина да направите това.

Последната команда ( Get-ItemProperty команда) върна стойностите, показани на екранната снимка по-долу.

Това изображение има празен атрибут alt; името на файла му е image-74-1024x591.png

За да върнете стойността CommonFilesDir , използвайте една от командите по-долу:

|_+_| |_+_|

Двете команди връщат данните от системния регистър, без името на свойството, CommonFilesDir . Вижте екранната снимка по-долу:

И накрая, за този подраздел можете да използвате PowerShell, за да прочетете стойността на системния регистър и да запишете стойността в променлива. Например, можем да запишем данните от системния регистър в последната команда в променлива, наречена $RegData .

Ето променената команда:

|_+_|

Сега, когато изпълните командата, тя няма да върне никакъв резултат на конзолата, защото резултатът се записва в променливата...

Как да върнете конкретна стойност в ключ на системния регистър и да я запишете в променлива

Въпреки това, за да покажете резултата, записан в променливата, стартирайте променливата...

|_+_|

Ето резултата в PowerShell...

Как да върнем името на подключа на системния регистър

Последната команда в последния последен подраздел върна както имената на ключовете на системния регистър, така и техните данни.

Въпреки това, понякога може да искате да покажете имената без данните. Можете да използвате Вземете елемент Cmdlet, за да направите това. Вижте командата по-долу...

|_+_|

Командата ще върне имената на ключовете на системния регистър без придружаващата колона Данни.

Как да използвате PowerShell за четене на стойността на системния регистър и връщане на двоични данни

В този пример искам да покажа двоичната стойност в ключа на системния регистър, CaptionFont . Този ключ се намира в тази пътека на системния регистър HKEY_CURRENT_USERControl PanelDesktopWindowMetrics.

Как да използвате PowerShell за четене на стойността на системния регистър и връщане на двоични данни

Първата стъпка е да върнете собствеността на CaptionFont ключ. Въпреки това, преди да направя това, нека изброя всички свойства HKEY_CURRENT_USERControl PanelDesktopWindowMetrics .

|_+_|

Командата връща набор от свойства, включително CaptionFont .

За да върнете само свойствата, подайте горната команда към Select-Object...

|_+_|

Тази команда показва всички свойства в списъка.

Как да използвате PowerShell за четене на стойността на системния регистър и връщане на двоични данни

За да покажете CaptionFont (4-тата стойност в масива), актуализирайте командата, както е показано по-долу и я запишете в променлива...

|_+_|

След това, за да покажете типа стойност на системния регистър (в този случай, REG_BINARY), извикайте GetValueKind Метод в оригиналната команда, запазена в $ключ променлива. След това използвайте CaptionFont (записан в $nam д) като стойност в Метода.

Ето командата…

|_+_|

Резултатът, както се очакваше, е двоичен.

След това четем стойностите в типа двоичен регистър с командата PowerShell по-долу...

|_+_|

Както можете да видите от командата, стойността се опитва отново чрез извикване на GetValue Метод в оригиналния ключ, запазен в $ключ променлива. След това, използвайки името на свойството, CaptionFont в Метода.

Резултатът е куп числа. За да видите тази стойност в системния регистър, вижте екранната снимка по-долу.

Как да използвате PowerShell за четене на стойността на системния регистър и връщане на двоични данни

И накрая, за да улесня изброяването на стойностите на системния регистър, създадох функция PowerShell, наречена Get-RegistryData. За да изтеглите функцията, щракнете върху изтегляне Get-RegistryData.zip

След като го изтеглите, разархивирайте файла. След това изпълнете командите по-долу:

|_+_| Заменете C:UsersVictorADownloadsGet-RegistryDataGet-RegistryData с пътя до функцията на вашия компютър.

За да получите стойностите или данните в ключовете на пътека в системния регистър, изпълнете командата по-долу.

|_+_|

Командата показва имената на ключовете, пътя на системния регистър и типа на ключа. Колоната Тип е скрита на моята екранна снимка по-долу.

Като алтернатива, ако не искате да показвате определени заглавки, можете да подадете Get-RegistryData към Select-Object.

|_+_|

С командата по-горе Get-RegistryData показва име , Тип , и Данни на всеки ключ в посочения път на системния регистър...

Функцията Get-RegistryData има един извикан параметър Път към регистъра

Как да използвате PowerShell за четене на стойност на системния регистър и връщане на масив

За да прочетете ключа на системния регистър с PowerShell и да върнете стойността в масив, използвайте Get-ChildItem команда.

как да изтегля dlc на пара -

Този ключ на системния регистър, HKEY_CURRENT_USERControl PanelDesktop има 3 подключа. Командата по-долу връща всички подключове, техните свойства и стойности:

|_+_|

Тези стойности се връщат в масив. За да потвърдите, изпълнете командата по-долу...

|_+_|

Тази команда потвърждава, че типът данни в последната команда, запазен в променливата $subkeys, е масив.

Как да използвате PowerShell за четене на стойност на системния регистър и връщане на масивЗа Get-ChildItem команда за връщане на резултати в масив, ключът на системния регистър трябва да има подключове.

Как да използвате PowerShell, за да получите стойност на системния регистър, ако съществува

Примерът в този подраздел е подобен на всички други примери в това ръководство с незначително изключение. Леката модификация тук е да използвате Test-Path, за да проверите дали пътят съществува.

След това, ако пътят съществува, вземете неговите стойности с PowerShell. Този прост скрипт ще провери дали пътят на системния регистър HKEY_CURRENT_USERControl PanelDesktop съществува.

След това, ако съществува, ще прочете стойностите си с командата Get-ItemProperty.

|_+_|

Ключът на системния регистър Registry::HKEY_CURRENT_USERControl PanelDesktop съществува. И така, последната команда върна стойностите си.

Нека видим дали ще посочим ключ на системния регистър, който не съществува...

|_+_|

Този път скриптът изпълнява скрипта в иначе блок на АКО изявление.

Как да използвате PowerShell, за да получите стойност на системния регистър, ако съществува

Как да използвате PowerShell, за да получите и сравнявате стойностите на системния регистър

Както може би сте разбрали, Вземете елемент и Get-ItemProperty командите не показват типовете ключове на системния регистър и данните. Така че, ако искате да сравните данните в ключ, трябва да намерите друг начин да го направите.

В подраздела Как да използвам PowerShell за четене на стойност на системния регистър и връщане на двоични данни споменах, че създадох функция, наречена Get-RegistryData.

За да изпълните командите в този подраздел, трябва да изтеглите функцията Get-RegistryData.zip. Вижте подраздела Как да използвате PowerShell за четене на стойност на системния регистър и връщане на двоични данни.

Можете да използвате тази функция, за да върнете имената, типовете и данните на подключовете в определен път в системния регистър.

Например, за да върнете имената, типовете и данните на всички записи в HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorer, изпълнете командата по-долу...

|_+_|

Ако отидем по-нататък, кажете, че искам да сравня стойността на Икона Подчертаване ключ с друга стойност, ще продължа, както е описано по-долу.

  1. Изведете изхода на Get-RegistryData команда в a Къде-обект команда и филтриране по Име е равно Икона Подчертаване .
|_+_|

Последната команда показва, че текущата стойност в IconUnderline е 3.

  1. Ако искам да сравня тази стойност с друга стойност, да речем 2, ще използвам командите по-долу. Първата команда записва командата в стъпка 1 по-горе в променлива.
|_+_|

В АКО оператор сравнява текущата стойност в ключа на системния регистър с 1. След това, ако не е равна на 1, той използва Set-ItemProperty команда, за да актуализирате стойността до това, което сте посочили в Стойност параметър.

Как да използвате PowerShell, за да получите ключ и подключове на системния регистър

Има две команди, които можете да използвате, за да получите ключове и подключове на системния регистър. Можете да използвате Get-ItemProperty или Get-ChildItem команда.

Разликата между двете команди е как посочвате пътя на системния регистър.

За да използвате Get-ItemProperty за да получите ключ на системния регистър и подключове, добавете обратна наклонена черта в края на пътя към системния регистър. След това добавете заместващия знак за звездичка зад обратната наклонена черта.

Например към Get-ItemProperty за четене на ключове и подключове в HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorer, изпълнете командата по-долу:

|_+_|

От друга страна, използването на Get-ChildItem не изисква добавяне на обратна наклонена черта и заместващ знак. Ето пример с командата Get-ChildItem:

|_+_|

И двете команди връщат ключовете и подключовете в посочения път на системния регистър.

Как да използвате PowerShell, за да получите LastWriteTime на ключ на системния регистър

Докато проучвах тази статия, установих, че много потребители търсят как да използват PowerShell, за да получат последния път, когато ключът на системния регистър е актуализиран.

Въпреки това, по време на моето проучване също открих, че няма съществуващи команди за тази задача. Освен това изглежда, че единственото решение е да се създаде персонализирана функция PowerShell.

За щастие намерих функция в superuser.com . Така че, нямах нужда да създавам моя!

За да улесня читателите на S Zone, изтеглих Add-RegKeyLastWriteTime superuser.com функция.

Add-RegKeyLastWriteTime е с любезното съдействие на Cpt.Whale – сътрудник в общността на superuser.com

За да изтеглите функцията от S Zone, щракнете върху изтегляне Add-RegKeyLastWriteTime.zip . След това разархивирайте изтегления zip файл.

Накрая отворете PowerShell и изпълнете командите по-долу:

|_+_| Заменете C:UsersVictorADownloadsAdd-RegKeyLastWriteTimeAdd-RegKeyLastWriteTime с пътя до функцията на вашия компютър.

И накрая, за да получите последното време за запис на ключ в системния регистър, изпълнете командата по-долу:

|_+_| HKCU е съкратеният формат за HKEY_CURRENT_CONFIG. Обсъдих това подробно в раздела Как да форматирате пътеките на системния регистър за PowerShell на това ръководство.

Командата връща последното време на запис за всички подключове в основния ключ на системния регистър HKEY_CURRENT_USER...

Как да използвате PowerShell, за да получите ключ на системния регистър

Как да използвате PowerShell, за да получите размер на системния регистър

Ако искате да видите размера на системния регистър в Windows 10, изпълнете командата по-долу:

|_+_|

Командата връща Текущ и максимален размер на базата данни на системния регистър.

Можете обаче да покажете допълнителни резултати с подобрена версия на командата. Намерих код, който може да направи това superuser.com .

Кодът на Маркус (сътрудник на общността на superuser.com) показва допълнителна информация. Ето кода.

|_+_|

И резултатът в PowerShell ISE…

Ако се надявам, че успях успешно да ви науча как да използвате PowerShell за четене на стойността на системния регистър!

Надявам се също така да намерите S зоната за полезна. Ако го намерите за полезно, любезно гласувайте да до въпроса полезна ли е тази публикация по-долу.

Като алтернатива можете да зададете въпрос, да оставите коментар или да предоставите обратна връзка с формуляра за отговор, който се намира в края на тази страница.

И накрая, за още PowerShell S зони, посетете нашата страница с инструкции за Windows PowerShell. Може също да намерите нашата страница „Работа от начална страница“ за много полезна.

Препратки и допълнителна литература

  1. Работа със записи в системния регистър
  2. Изтеглете Get-RegistryData.zip
  3. Изтеглете Add-RegKeyLastWriteTime.zip
  4. Обяснение на Windows PowerShell ISE