تعلم عامل PowerShell Not Equal مع الأمثلة

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

ولكن، بمجرد فهمك لبناء جمل العمليات في PowerShell، ستجد أن استخدامها ليس صعباً. أحد أكثر العمليات شيوعاً التي ستستخدمها في PowerShell هي عملية “غير متساوي” (-ne). تسمح لك هذه العملية باختبار ما إذا كانت قيمتان ليستا متساويتين.

في هذا المقال، ستتعرف على عملية “غير متساوي” في PowerShell وكيفية استخدامها مع أمثلة.

المتطلبات

سيكون هذا الدرس عرضاً عملياً. إذا كنت ترغب في المتابعة، تأكد من وجود نظام يحتوي على PowerShell مثبت. يستخدم هذا الدرس Windows 10 وPowerShell 7.

استخدام عملية “غير متساوي” في PowerShell (الأساسيات)

باختصار، تحدد عملية “غير متساوي” في PowerShell (-ne) ما إذا كانت قيمتان لا تساويان بعضهما البعض وتعيد قيمة بوليانية استناداً إلى النتيجة. إذا كانت القيم غير متساوية، فإن النتيجة هي صحيحة؛ وإلا فإن النتيجة هي خاطئة.

ولكن كيف ومتى يمكنك استخدام عملية “غير متساوي” في PowerShell؟ ستعلمك الأقسام التالية أساسيات عملية “غير متساوي” في PowerShell.

مقارنة المتغيرات

واحدة من أكثر الاستخدامات شيوعا لعامل الإختلاف في باورشيل هي مقارنة متغيرين. على سبيل المثال، افترض أن لديك متغيرين، $a و $b، وتريد أن ترى ما إذا كانا متساويين. بناء على ذلك، فإن بناء الجملة للمقارنة كما يلي:

$a -ne $b

إذا كانت قيم $a و $b غير متساوية، فسيعيد هذا المقارنة True. وإلا، سيعيد False.

١. قم بتنفيذ الأوامر التالية في وحدة التحكم الخاصة بـ PowerShell لإنشاء المتغيرات التي ستستخدمها كأمثلة. المتغيرات $a، $b، $c، و $d تمثل قيم مختلفة. يمكنك مقارنة كل من هذه القيم لاختبار ما إذا كانت متساوية أم لا.

قم بتعيين قيمة واحدة لـ $c و $d لرؤية كيفية عمل عامل الإختلاف في باورشيل مع القيم المتساوية.

$a = 1
$b = 2
$c = 3
$d = 3

٢. الآن، قم بأداء عملية المقارنة باستخدام عامل الإختلاف في باورشيل لرؤية ما إذا كانت قيم $a و $b غير متساوية.

$a -ne $b

سيُعيد النتيجة True لأن قيمة $a هي 1، و $b هي 2، والتي ليست متساوية.

You will see a False output return, as shown in the image below, since the values of $c and $d are equal (3=3). variables with not equal values

٣. قم الآن بمقارنة المتغيرات $c و $d لمعرفة ما إذا كانت أيضًا غير متساوية.

$c -ne $d

سترى إرجاع ناتج False، كما هو موضح في الصورة أدناه، لأن قيم $c و $d متساوية (3=3).

Comparing variables with equal values

مقارنة القيم

عند العمل مع باورشيل، لا تكون جميع الكائنات التي ترغب في مقارنتها في متغيرات. في هذه الحالة، يمكنك مقارنة القيم مباشرة باستخدام عامل الإختلاف في باورشيل.

على سبيل المثال، يقارن الأمر أدناه بين قيمتين مباشرة باستخدام عامل الإختلاف في باورشيل.

5 -ne 3

سترى إرجاع قيمة True، كما هو موضح أدناه لأن القيم غير متساوية.

Comparing different values using the PowerShell not equal operator

بالمقابل، فإن مقارنة القيم المتساوية ستُرجع False.

5 -ne 5
Comparing equal values using the PowerShell not equal operator

إزالة قيمة من المصفوفة

يُرجع مشغل PowerShell Not Equal نتيجة بولية للإشارة إلى ما إذا كانت قيمتان غير متساويتين. بالإضافة إلى ذلك، يمكن لهذا المشغل أيضًا تصفية العناصر من مصفوفة.

على سبيل المثال، أنشئ متغيرًا يُدعى $numbers يحتوي على مصفوفة من الأرقام من 1 إلى 5.

# أنشئ مصفوفة تحتوي على الأرقام من 1 إلى 5.
$numbers = 1..5
# عرض المصفوفة
$numbers
Storing an array

ثم، قم بتشغيل الأمر أدناه لإرجاع المصفوفة باستثناء رقم واحد (4).

$numbers -ne 4

والآن يمكنك أن ترى أن الأمر قد أرجع كل عدد في المصفوفة باستثناء العدد 4.

Filtering an array

مقارنة السلاسل

بالإضافة إلى الأرقام، يمكنك أيضًا تطبيق عملية المقارنة غير المتساوية في PowerShell على السلاسل.

1. على سبيل المثال، لنفترض أن لديك سلسلتان، “مرحبا” و “عالم”. لتحديد ما إذا كانت السلسلتان غير متساويتين، قم بتشغيل الأمر أدناه.

"Hello" -ne "World"

النتيجة هي صحيحة لأن “مرحبا” ليست متساوية لـ “عالم”.

Comparing unequal stings

2. الآن قارن السلاسل “مرحبا” و “hello” لترى ما إذا كانت متساوية.

"Hello" -ne "hello"

ثم سترى النتيجة كاذبة لأن “مرحبا” متساوية لـ “hello”.

Comparing two strings

3. يعتبر مشغل Not Equal في PowerShell غير حساس لحالة الأحرف. كما يمكنك رؤية في الخطوة السابقة، “Hello” مساوٍ لـ “hello”. ولكن إذا كنت تتطلب حساسية لحالة الأحرف عند مقارنة القيم النصية، فاستبدل المشغل -ne بالمشغل -cne، والذي يعني Case Sensitive Not Equal.

"Hello" -cne "hello"

ونتيجة لذلك، “Hello” و “hello” لم يعدا متساويين وفقًا لـ PowerShell.

“Hello” and “hello”

باستخدام مشغل Not Equal في PowerShell في العالم الحقيقي (أمثلة)

الآن بعد أن فهمت المفهوم الأساسي لمشغل Not Equal في PowerShell، ستتيح لك الأقسام التالية تجربة بعض استخداماتها في العالم الحقيقي.

مراقبة حالة الخدمات

A staple of Windows systems administration is monitoring the server service status. This task involves filtering out which services whose Status Is Not Running.

على سبيل المثال، قم بتشغيل أمر Get-Service لعرض جميع الخدمات على الجهاز المحلي.

Get-Service

يمكنك رؤية جميع الخدمات المتوقفة والقيد التشغيل في النتيجة أدناه.

Display all services

الآن، لـ تصفية فقط تلك الخدمات التي ليست Running، قم بتشغيل الأمر التالي، وقم بتطبيق المشغل -ne كما يلي.

Get-Service | Where-Object {$_.Status -ne "Running"}

كما يمكنك رؤية أدناه، يعرض العمود Status فقط الخدمات المتوقفة بعد تطبيق مقارنة Not Equal في PowerShell.

Filtering non-running services

بالمثل، قم بتشغيل الأمر التالي لإرجاع الخدمات التي Status Is Not Stopped.

Get-Service | Where-Object {$_.Status -ne "Stopped"}

هذه المرة، سترى فقط الخدمات التي تعمل.

Showing all running services

دمج عملية الإختلاف في PowerShell مع المشغل AND

بخلاف إجراء المقارنة 1:1، يمكنك دمج شرط الإختلاف في PowerShell مع مشغل المقارنة الآخر، مثل -eq (مساوي)، باستخدام المشغل -and. هذه الطريقة مفيدة عندما يجب أن يستوفي الكائن الذي تقوم بالمقارنة متطلبات متعددة.

على سبيل المثال، ينطوي مراقبة خدمات الخادم عادة على ضمان تشغيل جميع الخدمات التلقائية. قم بتشغيل الأمر أدناه لعرض قائمة بجميع الخدمات التي الحالة ليست قيد التشغيل والتي نوع البدء هو تلقائي. في هذا المثال، يجب أن تطابق قيمة الكائن جميع الشروط.

Get-Service | 
Where-Object {$_.Status -ne "Running" -and $_.StartType -eq "Automatic"} |
Select-Object Status,StartType,Name

الآن يمكنك رؤية الخدمات التلقائية التي لا تعمل، مما يمكنك من اتخاذ الإجراءات اللازمة.

PowerShell Not Equal match all conditions

إضافة منطق الشرطية If/Else

يمكنك أيضًا استخدام عامل الإختلاف في PowerShell داخل البيانات الشرطية، مثل بيان if/else.

على سبيل المثال، يجب أن تكون الخدمة قيد التشغيل في معظم الحالات إذا كانت قيمة نوع البدء لديها تلقائية. يحصل السكريبت أدناه على جميع الخدمات، يتحقق من الخدمات التلقائية التي لا تعمل، وينفذ الإجراء التصحيحي(الإجراءات)—لعرض رسالة وبدء الخدمة.

ملاحظة: سيتم تعليق السطر Start-Service $_.Name ولن يتم تشغيله. افتح تعليق هذا السطر إذا كنت ترغب في تنفيذ الأمر.

انسخ الكود أدناه وقم بتشغيله في PowerShell.

Get-Service -ErrorAction SilentlyContinue | ForEach-Object {
    if ($_.Status -ne 'Running' -and $_.StartType -eq 'Automatic') {
        "The service [$($_.Name)] StartType is [$($_.StartType)] but its current Status is [$($_.Status)]"
        # بدء-الخدمة $_.Name
    }
}

النتيجة تظهر لك أي الخدمات التلقائية غير مشغّلة.

Using PowerShell Not Equal in Conditional Logic

الاستنتاج

في هذا المقال، تعلمت عن مشغّل عدم المساواة في PowerShell. كما تعلمت كيفية استخدامه مع أمثلة. في هذه النقطة، يجب أن تكون لديك فهم جيد لكيفية عمله.

بهذه المعرفة الجديدة، يمكنك الآن استخدام مشغّل العدم المتساوي في نصوص PowerShell الخاصة بك لاختبار الشروط. ومع ذلك، تذكر أن هناك مشغّلات مقارنة أخرى متوفرة أيضًا. قد ترغب في دمج عدة مشغّلات لاختبار شروط أكثر تعقيدًا.

Source:
https://adamtheautomator.com/powershell-not-equal/