למד את אופרטור "לא שווה" ב-PowerShell עם דוגמאות

בנוסף להיות כלי שורת פקודה, PowerShell הוא שפת תכנות של Microsoft המאפשרת לך לשלוט ולאוטומטז את המערכות שלך. PowerShell משתמשת בתחביר שונה לאופרטורים מרובה השפות התכנות.

אך, פעם אחת שתבינו את תחביר האופרטורים של PowerShell, תגלו שזה לא קשה לשימוש. אחד מהאופרטורים הנפוצים ביותר שתשתמשו בו ב-PowerShell הוא אופרטור "לא שווה" (-ne). אופרטור זה מאפשר לך לבדוק האם שני ערכים אינם שווים זה לזה.

במאמר זה תלמדו על אופרטור "לא שווה" של PowerShell וכיצד להשתמש בו עם דוגמאות.

דרישות ראשוניות

הדרכה זו תהיה מצגת ידים. אם ברצונכם לעקוב, הוודאו שיש לכם מערכת עם PowerShell מותקן. המדריך משתמש ב-Windows 10 ו-PowerShell 7.

שימוש באופרטור "לא שווה" של PowerShell (יסודות)

בגיסט, אופרטור "לא שווה" של PowerShell (-ne) מקבע האם ערך של שני אובייקטים אינו שווה ומחזיר ערך בוליאני בהתאם לתוצאה. אם הערכים אינם שווים, התוצאה היא נכונה; אחרת, התוצאה היא שקר.

אך איך ומתי משתמשים באופרטור "לא שווה" של PowerShell? הסעיפים הבאים ילמדו אתכם את יסודות "לא שווה" של PowerShell.

השוואת משתנים

אחת מהשימושים הנפוצים ביותר לאופרטור השונה של PowerShell היא להשוות שני משתנים. לדוגמה, נניח שיש לך שני משתנים, $a ו־$b, ואתה רוצה לראות האם הם שווים. תחביר ההשוואה הוא כדלקמן:

$a -ne $b

אם ערכי $a ו־$b לא שווים, אז השוואה זו תחזיר True. אחרת, היא תחזיר False.

1. הרץ את הפקודות הבאות בקונסולת PowerShell שלך כדי ליצור את המשתנים שתשתמש בהם כדוגמאות. המשתנים $a, $b, $c, ו־$d מייצגים ערכים שונים. אתה יכול להשוות כל אחד מהערכים הללו כדי לבדוק האם הם שווים או לא.

אתה מעניק ל־$c ול־$d את אותו הערך כדי לראות כיצד האופרטור השונה של PowerShell עובד עם ערכים שווים.

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

2. כעת, בצע את השוואת השונה של PowerShell כדי לראות האם ערכי $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

3. עכשיו השווה את המשתנים $c ו־$d כדי לראות האם גם הם אינם שווים.

$c -ne $d

תראה פלט של False חזרה, כפי שמוצג בתמונה למטה, מאחר וערכי $c ו־$d שווים (3=3).

Comparing variables with equal values

השוואת ערכים

כאשר אתה עובד עם PowerShell, לא כל העצמים שברצונך להשוות נמצאים במשתנים. במקרה זה, ניתן להשוות ערכים ישירות באמצעות אופרטור השונה של PowerShell.

לדוגמה, הפקודה למטה משווה שני ערכים ישירות באמצעות אופרטור השונה של PowerShell.

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 Not Equal על מחרוזות.

1. לדוגמה, שיש לך שתי מחרוזות, "Hello" ו-"World". כדי לקבוע האם שתי המחרוזות אינן שוות, יש להריץ את הפקודה הבאה.

"Hello" -ne "World"

התוצאה היא True מכיוון ש-"Hello" אינה שווה ל-"World".

Comparing unequal stings

2. עכשיו נשווה את המחרוזות "Hello" ו-"hello" כדי לראות האם הן שוות.

"Hello" -ne "hello"

אז תראה שהתוצאה היא False מכיוון ש-"Hello" שווה ל-"hello".

Comparing two strings

3. האופרטור של "לא שווה" ב־PowerShell אינו רגיש לתיאום רישיות. כפי שאתה רואה בשלב הקודם, "שלום" שווה ל־"hello". אך אם נדרשת רגישות לתיאום רישיות בהשוואת ערכי מחרוזות, נחליף את האופרטור -ne באופרטור -cne, המשמעות שלו אינו שווה רגיש לרישיות.

"Hello" -cne "hello"

כתוצאה, "שלום" ו־"hello" כבר לא שווים לפי PowerShell.

“Hello” and “hello”

שימוש באופרטור "לא שווה" של PowerShell בעולם האמיתי (דוגמאות)

עכשיו שהבנת את המושג הבסיסי של אופרטור "לא שווה" של 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

כעת, כדי לסנן רק את השירותים שאינם רץ, הרץ את הפקודה למטה והחל את האופרטור -ne כך:

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

כפי שאתה רואה למטה, עמוד המצב מציג רק את השירותים שעצרו לאחר החישוב של השוואת ה־PowerShell שלא שווים.

Filtering non-running services

באופן דומה, הרץ את הפקודה למטה כדי להחזיר את השירותים שהם לא עצרו.

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.

לדוגמה, שירות חייב להיות פעיל ברוב המקרים אם ערך StartType שלו הוא אוטומטי. הסקריפט למטה מקבל את כל השירותים, בודק אילו שירותים אוטומטיים אינם פועלים, ומבצע את הפעולה התיקונית—להציג הודעה ולהפעיל את השירות.

הערה: השורה 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)]"
        # Start-Service $_.Name
    }
}

התוצאה מראה לך אילו שירותים אוטומטיים אינם פועלים.

Using PowerShell Not Equal in Conditional Logic

מסקנה

במאמר זה, למדת על אופרטור "לא שווה" של PowerShell. גם למדת איך להשתמש בו עם דוגמאות. בנקודה זו, אתה אמור להבין טוב כיצד זה עובד.

עם הידע החדש שרכשת, כעת תוכל להשתמש באופרטור "לא שווה" בתסריטים שלך ב- PowerShell כדי לבדוק תנאים. עם זאת, שים לב שישנם גם אופרטורים נוספים להשוואה זמינים. ייתכן שתרצה לשלב אופרטורים מרובים כדי לבדוק תנאים מורכבים יותר.

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