في هذا المقال، تعلم كيفية استخدام PowerShell للحصول على قيمة سجل والاستعلام عن الإدخالات في سجل باستخدام مجموعة متنوعة من الأساليب.
لنبدأ!
المتطلبات المسبقة
سيتم توضيح جميع الأمثلة في هذا المقال باستخدام PowerShell 7.1، وهو أحدث إصدار في وقت نشر هذا المقال. يمكنك أيضًا استخدام Windows PowerShell 5.1 إذا اخترت ذلك. يجب أن تمتلك أيضًا بعض الفهم الأساسي لـ تحكمات PowerShell.
قد لا تعمل بعض الأمثلة بدون امتيازات المسؤول.
الحصول على مفاتيح وقيم السجل باستخدام Get-ChildItem
أحد أسهل الطرق للعثور على مفاتيح وقيم السجل هو استخدام الأمر البرمجي Get-ChildItem
. يستخدم هذا PowerShell للحصول على قيمة السجل والمزيد من خلال تعداد العناصر في تحكمات PowerShell. في هذه الحالة، تعتبر تحكم PowerShell هي تحكم HKLM الذي يتم العثور عليه بتشغيل Get-PSDrive
.
قم بتشغيل الأمر التالي في وحدة تحكم PowerShell.
في اللقطة الشاشية أدناه، يمكنك رؤية:
- المسار الكامل لمفتاح سجل WindowsUpdate
- مفتاح AU
- قائمة الإدخالات في مفتاح AU مع القيم المقابلة

نقطة سريعة بخصوص اللقطة الموجودة أعلاه. قد تلاحظ أن الإخراج يشوبه بعض الإرباك. عادةً ما يمثل إخراج وحدة التحكم PowerShell خصائص كائن. Get-ChildItem
يتصرف بشكل مختلف في هذه الحالة لأن هذا الكائن لا يمتلك تقنيًا خصائصًا. يتم تشغيل أوامر إضافية في الخلفية لإنتاج تنسيق العرض الذي تراه.
ذو صلة: كيفية التحقق من إعادة التشغيل المعلقة في سجل Windows
الحصول على قيم السجل باستخدام Get-ItemProperty
واصل مع نفس مفتاح السجل كما في السابق، دعنا نستخدم cmdlet Get-ItemProperty
هذه المرة ونجعل الإخراج أكثر قراءة.
استخدام Get-ItemProperty
هو الأفضل للحصول على خاصية العنصر والحصول على المفاتيح وقيمها داخل السجل. قم بتشغيل الأمر أدناه:
في اللقطة الموجودة أدناه، ترى قائمة بالمفاتيح والقيم:
- بالنسبة لسجل AU
- خصائص تتعلق بـ PowerShell والتي تبدأ جميعها بـ PS

كبديل، يمكنك أيضًا تحديد مسار العنصر في السجل للحصول على نفس الإخراج بسرعة طفيفة عن طريق استخدام .NET. الأمر أدناه يستخدم .NET فئة السجل في PowerShell للحصول على قيمة السجل:
الحصول على قيم السجل باستخدام Get-ItemPropertyValue
الآن حان الوقت للنظر في القيم الرئيسية. باستخدام الأمر Get-ItemPropertyValue
مع نفس حاوية التسجيل كما في السابق، دعنا نلقي نظرة على القيمة للمفتاح NoAutoUpdate
. قم بتشغيل الأمر التالي في PowerShell:
من خلال استخدام Get-ItemPropertyValue
، ستحصل على إخراج أكثر إيجازًا يظهر فقط القيمة وليس أي من المعلومات الأخرى التي رأيتها سابقًا.

الاستعلام عن التسجيل بدون محركات PowerShell
طوال هذا البرنامج التعليمي، كنت تستخدم محركات PowerShell للعمل مع التسجيل. القيام بهذه الطريقة ليس هو الطريقة الوحيدة؛ يمكنك أيضًا استغلال .NET والحصول على معلومات التسجيل عبر فئات .NET أيضًا!
على سبيل المثال، ربما تحتاج إلى استخدام PowerShell للحصول على قيمة تسجيل لـ HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\ : AutoUpate على جهاز كمبيوتر عن بُعد.
يمكنك القيام بذلك باستخدام .NET عن طريق:
- فتح اتصال التسجيل على الكمبيوتر عن بُعد.
2. فتح المفتاح التسجيلي المحدد الذي تبحث عنه.
3. استخدام طريقة GetValue()
للاستعلام عن قيمة القيمة في داخل المفتاح التسجيلي.
استخدام .NET بدلاً من محركات PowerShell يعتبر أسرع قليلاً وهو وسيلة سهلة للاتصال واستخدام PowerShell للاستعلام عن مفاتيح وقيم التسجيل على أجهزة الكمبيوتر عن بُعد.
اختبار قيم التسجيل باستخدام Test-Path
أحيانًا، تحتاج فقط إلى التحقق مما إذا كانت قيمة التسجيل موجودة. الطريقة التي تفعل ذلك بها هي باستخدام الأمر Test-Path
.
مستمرين مع حاوية WindowsUpdate، قم بفحص ما إذا كانت حاوية AU موجودة عن طريق تشغيل الأمر النصي التالي في بوويرشيل:
إذا كانت النتيجة هي True، فإن المفتاح أو الحاوية موجودة. ولكن ماذا لو كنت بحاجة إلى اختبار وجود قيمة أو إدخال؟ دعنا نبني وظيفة مخصصة لهذا الاختبار:
باستخدام الوظيفة المخصصة، تقوم بإدخال مسار واسم المفتاح أو الحاوية، والقيمة التي تبحث عنها، وستقوم الوظيفة المخصصة بإرجاع True أو False (3) كما هو موضح في لقطة الشاشة أدناه:

الخطوات التالية
تعلم أنه يمكنك استخدام Get-ChildItem
، Get-ItemProperty
، و Get-ItemPropertyValue
في بوويرشيل للحصول على قيمة ومفاتيح السجل، ماذا يمكنك أن تفعل أيضًا؟
إذا كنت ترغب في معرفة المزيد عن العمل مع السجل باستخدام بوويرشيل، تحقق من المقالة من Microsoft Docs بعنوان “العمل مع مفاتيح السجل”. يمكنك أيضًا العثور على عرض رائع لتعيين قيم السجل في مدونة ATA الموجودة في استخدام الإعداد النشط: كيفية تعيين قيمة سجل في جميع مستخدمي النحل.
Source:
https://adamtheautomator.com/powershell-to-get-a-registry-value/