PowerShell للحصول على قيمة التسجيل: دليل تمشيطي

في هذا المقال، تعلم كيفية استخدام PowerShell للحصول على قيمة سجل والاستعلام عن الإدخالات في سجل باستخدام مجموعة متنوعة من الأساليب.

لنبدأ!

المتطلبات المسبقة

سيتم توضيح جميع الأمثلة في هذا المقال باستخدام PowerShell 7.1، وهو أحدث إصدار في وقت نشر هذا المقال. يمكنك أيضًا استخدام Windows PowerShell 5.1 إذا اخترت ذلك. يجب أن تمتلك أيضًا بعض الفهم الأساسي لـ تحكمات PowerShell.

قد لا تعمل بعض الأمثلة بدون امتيازات المسؤول.

الحصول على مفاتيح وقيم السجل باستخدام Get-ChildItem

أحد أسهل الطرق للعثور على مفاتيح وقيم السجل هو استخدام الأمر البرمجي Get-ChildItem. يستخدم هذا PowerShell للحصول على قيمة السجل والمزيد من خلال تعداد العناصر في تحكمات PowerShell. في هذه الحالة، تعتبر تحكم PowerShell هي تحكم HKLM الذي يتم العثور عليه بتشغيل Get-PSDrive.

قم بتشغيل الأمر التالي في وحدة تحكم PowerShell.

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

في اللقطة الشاشية أدناه، يمكنك رؤية:

  1. المسار الكامل لمفتاح سجل WindowsUpdate
  2. مفتاح AU
  3. قائمة الإدخالات في مفتاح AU مع القيم المقابلة
Getting registry values for Windows Update

نقطة سريعة بخصوص اللقطة الموجودة أعلاه. قد تلاحظ أن الإخراج يشوبه بعض الإرباك. عادةً ما يمثل إخراج وحدة التحكم PowerShell خصائص كائن. Get-ChildItem يتصرف بشكل مختلف في هذه الحالة لأن هذا الكائن لا يمتلك تقنيًا خصائصًا. يتم تشغيل أوامر إضافية في الخلفية لإنتاج تنسيق العرض الذي تراه.

ذو صلة: كيفية التحقق من إعادة التشغيل المعلقة في سجل Windows

الحصول على قيم السجل باستخدام Get-ItemProperty

واصل مع نفس مفتاح السجل كما في السابق، دعنا نستخدم cmdlet Get-ItemProperty هذه المرة ونجعل الإخراج أكثر قراءة.

استخدام Get-ItemProperty هو الأفضل للحصول على خاصية العنصر والحصول على المفاتيح وقيمها داخل السجل. قم بتشغيل الأمر أدناه:

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

في اللقطة الموجودة أدناه، ترى قائمة بالمفاتيح والقيم:

  1. بالنسبة لسجل AU
  2. خصائص تتعلق بـ PowerShell والتي تبدأ جميعها بـ PS
Using Get-ItemProperty in PowerShell to get registry values

كبديل، يمكنك أيضًا تحديد مسار العنصر في السجل للحصول على نفس الإخراج بسرعة طفيفة عن طريق استخدام .NET. الأمر أدناه يستخدم .NET فئة السجل في PowerShell للحصول على قيمة السجل:

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

الحصول على قيم السجل باستخدام Get-ItemPropertyValue

الآن حان الوقت للنظر في القيم الرئيسية. باستخدام الأمر Get-ItemPropertyValue مع نفس حاوية التسجيل كما في السابق، دعنا نلقي نظرة على القيمة للمفتاح NoAutoUpdate. قم بتشغيل الأمر التالي في PowerShell:

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

من خلال استخدام Get-ItemPropertyValue، ستحصل على إخراج أكثر إيجازًا يظهر فقط القيمة وليس أي من المعلومات الأخرى التي رأيتها سابقًا.

NoAutoUpdate key and the corresponding value

الاستعلام عن التسجيل بدون محركات PowerShell

طوال هذا البرنامج التعليمي، كنت تستخدم محركات PowerShell للعمل مع التسجيل. القيام بهذه الطريقة ليس هو الطريقة الوحيدة؛ يمكنك أيضًا استغلال .NET والحصول على معلومات التسجيل عبر فئات .NET أيضًا!

على سبيل المثال، ربما تحتاج إلى استخدام PowerShell للحصول على قيمة تسجيل لـ HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\ : AutoUpate على جهاز كمبيوتر عن بُعد.

يمكنك القيام بذلك باستخدام .NET عن طريق:

  1. فتح اتصال التسجيل على الكمبيوتر عن بُعد.
$Registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computername)

2. فتح المفتاح التسجيلي المحدد الذي تبحث عنه.

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

3. استخدام طريقة GetValue() للاستعلام عن قيمة القيمة في داخل المفتاح التسجيلي.

$RegistryKey.GetValue('AU')

استخدام .NET بدلاً من محركات PowerShell يعتبر أسرع قليلاً وهو وسيلة سهلة للاتصال واستخدام PowerShell للاستعلام عن مفاتيح وقيم التسجيل على أجهزة الكمبيوتر عن بُعد.

اختبار قيم التسجيل باستخدام Test-Path

أحيانًا، تحتاج فقط إلى التحقق مما إذا كانت قيمة التسجيل موجودة. الطريقة التي تفعل ذلك بها هي باستخدام الأمر Test-Path.

مستمرين مع حاوية WindowsUpdate، قم بفحص ما إذا كانت حاوية AU موجودة عن طريق تشغيل الأمر النصي التالي في بوويرشيل:

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

إذا كانت النتيجة هي True، فإن المفتاح أو الحاوية موجودة. ولكن ماذا لو كنت بحاجة إلى اختبار وجود قيمة أو إدخال؟ دعنا نبني وظيفة مخصصة لهذا الاختبار:

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

باستخدام الوظيفة المخصصة، تقوم بإدخال مسار واسم المفتاح أو الحاوية، والقيمة التي تبحث عنها، وستقوم الوظيفة المخصصة بإرجاع True أو False (3) كما هو موضح في لقطة الشاشة أدناه:

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

الخطوات التالية

تعلم أنه يمكنك استخدام Get-ChildItem، Get-ItemProperty، و Get-ItemPropertyValue في بوويرشيل للحصول على قيمة ومفاتيح السجل، ماذا يمكنك أن تفعل أيضًا؟

إذا كنت ترغب في معرفة المزيد عن العمل مع السجل باستخدام بوويرشيل، تحقق من المقالة من Microsoft Docs بعنوان “العمل مع مفاتيح السجل”. يمكنك أيضًا العثور على عرض رائع لتعيين قيم السجل في مدونة ATA الموجودة في استخدام الإعداد النشط: كيفية تعيين قيمة سجل في جميع مستخدمي النحل.

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