كيفية استخدام عبارات PowerShell If لإضافة منطق شرطي إلى نصوصك

PowerShell هي لغة برمجة قوية لعدة أسباب. إحدى هذه الأسباب هي دعمها لـ المنطق الشرطي، الذي يمكن أن يساعدك على تعزيز نفوذ سكربتات PowerShell الخاصة بك لجعلها أكثر كفاءة وفعالية. في هذه المقالة، سأعلمك كيفية استخدام If، Else، و Elseif في المنطق الشرطي وأشرح كيف يمكن أن يساعدك ذلك ككاتب سكربت PowerShell.

كيفية استخدام بيان الـ If في PowerShell

بيانات If في PowerShell تُستخدم لتنفيذ التنفيذ الشرطي للشيفرة. تتيح لك اختبار شرط وتنفيذ مجموعات مختلفة من الشيفرات استنادًا إلى ما إذا كان الشرط يُقيم إلى صحيح أم خاطئ.

لنبدأ بمثالين يوضحان كيفية استخدام If في PowerShell.

المثال 1: التحقق ما إذا كان الرقم إيجابيًا أم سالبًا

في المثال التالي، لدينا متغير باسم $number، يُعين إلى 10. يقوم بيان الـ If بالتحقق مما إذا كانت قيمة $number أكبر من 0 باستخدام العامل -gt.

  • عندما يكون الشرط صحيحًا، ينفذ مجموعة الشيفرة ضمن أقواس الفترتين الأولى، والتي في هذه الحالة تطبع “الرقم إيجابي”.
  • عندما يكون الشرط خاطئًا، ينتقل إلى كتلة Elseif ويتحقق ما إذا كان الرقم أقل من 0 باستخدام العامل -lt.
  • إذا كانت الشرط صحيحًا، فإنه ينفذ الكود داخل مجموعة الأقواس المجعدة الثانية، مطبعًا “الرقم سالب.”
  • إذا كان كلتا الشروط غير صحيحتين، فإنه ينفذ الكود داخل كتلة الـ else، مطبعًا “الرقم صفر.”
$number = 10

if ($number -gt 0) {
    Write-Host “The number is positive.”
} elseif ($number -lt 0) {
    Write-Host “The number is negative.”
} else {
    Write-Host “The number is zero.”
}
Checking if a number is positive or negative (Image credit: Petri/Bill Kindle)

مثال 2: التحقق من وجود ملف

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

  • إذا كان الشرط يُقيم إلى الصحيح، وهو ما يعني أن الملف موجود، فإنه ينفذ الكود داخل مجموعة الأقواس المجعدة الأولى، مطبعًا “الملف موجود.”
  • إذا كان الشرط خاطئًا، فإنه ينفذ الكود داخل كتلة الـ else، مطبعًا “الملف غير موجود.”
$file = “C:\path\to\file.txt”

if (Test-Path $file) {
    Write-Host “The file exists.”
} else {
    Write-Host “The file does not exist.”
}
Checking if a file exists (Image credit: Petri/Bill Kindle)

هذه كانت مجرد مثالين أساسيين عن كيفية عمل البيانات الشرطية في PowerShell. دعونا ننتقل إلى البيان Else.

كيفية استخدام بيان PowerShell Else مع بيان If

في PowerShell، يمكنك استخدام البيان Else مع البيان If لإنشاء منطق شرطي. يسمح لك بتحديد كتلة من الشيفرة لتنفيذها عندما يكون الشرط في البيان If خاطئًا.

اسمح لي أن أعطيك مثالين يوضحان كيفية استخدام بيانات Else في PowerShell.

المثال 3: التحقق مما إذا كانت المتغير أكبر من رقم

في هذا المثال، نقوم بعدة فحوصات:

  • البيان If يتحقق مما إذا كان المتغير $number أكبر من 10.
  • إذا كان كذلك، يتم عرض الرسالة “الرقم أكبر من 10”.
  • إذا لم يتم تحقيق الشرط، يتم تشغيل الكتلة Else ويتم عرض الرسالة “الرقم ليس أكبر من 10”.
$number = 5

if ($number -gt 10) {
    Write-Host “The number is greater than 10.”
}
else {
    Write-Host “The number is not greater than 10.”
}
Checking if a variable is greater than a number (Image credit: Petri/Bill Kindle)

المثال 4: مقارنة قيمة متغير مع سلسلة نصية

في هذا المثال، يقارن البيان If قيمة المتغير $user مع السلسلة “John”.

  • إذا كانت متساوية، يتم عرض الرسالة “مرحبًا، جون!”.
  • إذا لم يتم تحقيق الشرط، أي أن قيمة $user ليست “John”، يتم تنفيذ الكتلة Else ويتم عرض الرسالة “تم رفض الوصول. أنت لست جون.”.
$user = “John”

if ($user -eq “John”) {
    Write-Host “Welcome, John!”
}
else {
    Write-Host “Access denied. You are not John.”
}
Comparing the value of a variable with a string (Image credit: Petri/Bill Kindle)

الفرق بين بيان If و Else يكمن في الشروط التي يقومون بتقييمها والإجراءات التالية التي ينفذونها.

  • يقوم بيان If بفحص شرط وتنفيذ الكود إذا كان الشرط صحيحًا.
  • يوفر بيان Else كتلة بديلة من الكود لتنفيذها عندما يكون الشرط في بيان If خاطئًا. إذا كان الشرط في بيان If صحيحًا، فإن الكتلة Else لا تعمل.

لتلخيص، يسمح بيان If لك بتنفيذ الكود بناءً على شرط معين. يوفر بيان Else خيار احتياطي عندما يكون الشرط خاطئًا. من خلال استخدام هذه البيانات معًا، يمكنك إنشاء منطق أكثر مرونة وقوة في سكربتات PowerShell الخاصة بك.

كيفية استخدام بيانات PowerShell ElseIf

تُستخدم بيانات ElseIf لإنشاء شرط يتحقق مما إذا كان البيان If السابق أو أي بيانات ElseIf سابقة تقيم “خاطئة”. تسمح بيانات ElseIf لك باختبار شروط متعددة وتنفيذ كتل كود مختلفة بناءً على تقييم تلك الشروط. يكون بيان ElseIf مفيدًا بشكل خاص عندما يكون لديك أكثر من نتيجة اثنين.

إليك مثالين يوضحان استخدام بيانات ElseIf في PowerShell.

المثال 5: فحص نطاق الأرقام

في هذا المثال، يتحقق الكود من قيمة متغير $number وينفذ مجموعات مختلفة من التعليمات بناءً على نطاقه.

  • إذا كان الرقم أقل من 10، يكون الشرط الأول صحيحًا، ويتم عرض الرسالة المقابلة.
  • إذا لم يكن كذلك، نتحقق من الشرط التالي باستخدام عبارة ElseIf. عندما يكون الرقم بين 10 و 19 (شاملًا)، يكون الشرط الثاني صحيحًا، ويتم عرض الرسالة المقابلة.
  • إذا لم يكن أياً من الشروط السابقة صحيحة، ينفذ كتلة Else، مما يظهر رسالة تبين أن الرقم 20 أو أكبر.
$number = 25

if ($number -lt 10) {
    Write-Host “The number is less than 10.”
}
elseif ($number -ge 10 -and $number -lt 20) {
    Write-Host “The number is between 10 and 19.”
}
else {
    Write-Host “The number is 20 or greater.”
}
Checking a number’s range (Image credit: Petri/Bill Kindle)

المثال 6: فحص طول سلسلة

في هذا المثال، يفحص الكود طول سلسلة $name ويحدد فئتها بناءً على طولها.

  • عندما يتألف الاسم من أكثر من 10 أحرف، يكون الشرط الأول صحيحًا، ويتم عرض الرسالة المقابلة.
  • عندما يكون الشرط الأول خاطئًا، نتحقق من الشرط التالي باستخدام عبارة ElseIf. إذا كان الاسم يتألف من أكثر من 5 أحرف (لكن ليس أكثر من 10)، يكون الشرط الثاني صحيحًا، ويتم عرض الرسالة المقابلة.
  • إذا لم يكن أياً من الشروط السابقة صحيحة، ينفذ كتلة Else ويظهر رسالة تبين أن الاسم يتألف من 5 أحرف أو أقل.
$name = “John”

if ($name.Length -gt 10) {
    Write-Host “The name is longer than 10 characters.”
}
elseif ($name.Length -gt 5) {
    Write-Host “The name is between 6 and 10 characters.”
}
else {
    Write-Host “The name is 5 characters or shorter.”
}
Checking a string’s length (Image credit: Petri/Bill Kindle)

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

كيفية استخدام عبارات PowerShell AND/OR مع عبارات If

في PowerShell، “AND” و “OR” هما مشغلات منطقية تُستخدم لدمج شروط متعددة في عبارات شرطية للتحكم في تدفق النص الخاص بك. يمكن استخدامهم مع If لتقييم شروط متعددة بشكل متزامن:

دعني أقدم لك مثالين لإظهار استخدامهما وتسليط الضوء على الاختلافات مقارنة بعبارات IfElse.

المثال 7: استخدام مشغل AND

تخيل أنك تريد استخدام PowerShell للتحقق مما إذا كان المستخدم مسؤولًا وما إذا كان حسابه نشطًا حاليًا. يمكنك استخدام مشغل AND لتقييم كلتا الشروط متزامنة.

في هذا المثال، يتحقق النص من صحة المتغيرين $isAdministrator و $isAccountActive. إذا كانت كلتا الشروط صحيحة، يقوم النص بطباعة رسالة تظهر أن المستخدم مسؤول بحساب نشط. خلاف ذلك، سيقوم بطباعة رسالة تظهر إما أن المستخدم ليس مسؤولًا، أو أن حسابه غير نشط.

$user = “John”
$isAdministrator = $true
$isAccountActive = $false

if ($isAdministrator -and $isAccountActive) {
    Write-Host “$user is an administrator with an active account.”
} else {
    Write-Host “$user is not an administrator, or their account is inactive.”
}
Checking if a user is an administrator and if their account is currently active (Image credit: Petri/Bill Kindle)

المثال 8: استخدام مشغل “OR”

لنفترض أنك ترغب في التحقق مما إذا كان الخادم يعمل بنظام Windows Server 2016 أو Windows Server 2019. باستخدام PowerShell، يمكنك استخدام مشغل OR لتقييم هذه الشروط.

في هذا المثال، يستخدم النص البرمجي مشغل OR للتحقق مما إذا كانت قيمة المتغير $osVersion تساوي “Windows Server 2016” أو “Windows Server 2019”. إذا كانت الشرط يُقيم إلى صحيح، فإنه يقوم بطباعة رسالة تُظهر أن الخادم يعمل بنظام تشغيل مدعوم. وإلا، فإنه يقوم بطباعة رسالة تُظهر أن الخادم يعمل بنظام تشغيل غير مدعوم.

$server = “Server01”
$osVersion = “Windows Server 2012”

if ($osVersion -eq “Windows Server 2016” -or $osVersion -eq “Windows Server 2019”) {
    Write-Host “$server is running a supported operating system.”
} else {
    Write-Host “$server is running an unsupported operating system.”
}
Checking if our variable is equal to either Windows Server 2016 or Windows Server 2019 (Image credit: Petri/Bill Kindle)

مثال 9: المقارنة مع بيانات IfElse

يوفر مشغل AND و OR طريقة موجزة لتقييم الشروط المتعددة بشكل متزامن. تختلف عن بيانات IfElse في أن الأخير يقوم فقط بتقييم شرط واحد في كل مرة. إذا كان الشرط في بيان IfElse صحيحًا، فإنه ينفذ كتلة الشيفرة المرتبطة ببيان If. وإلا، فإنه ينفذ كتلة الشيفرة المرتبطة ببيان Else.

لإظهار ذلك، دعنا نغير المثال 1 لاستخدام بيان IfElse بدلاً من ذلك. في هذا المثال المعدل، يتحقق النص البرمجي أولاً مما إذا كان المستخدم مسؤولًا. إذا كانت القيمة صحيحة، يتحقق بعد ذلك مما إذا كان الحساب نشطًا. اعتمادًا على تقييم كل شرط، ينفذ كتل شفرة مختلفة.

$user = “John”
$isAdministrator = $true
$isAccountActive = $false

if ($isAdministrator) {
    if ($isAccountActive) {
        Write-Host “$user is an administrator with an active account.”
    } else {
        Write-Host “$user is an administrator, but their account is inactive.”
    }
} else {
    Write-Host “$user is not an administrator.”
}
Comparison with IfElse statements (Image credit: Petri/Bill Kindle)

باستخدام هذا النهج يسمح بالتحكم التفصيلي في تدفق النص البرمجي. ومع ذلك، يمكن أن يسبب كتل شفرة متداخلة وتعقيدًا متزايدًا مقارنة بالاستخدام العادي لعوامل منطقية مثل “و” و”أو”.

كيفية استخدام سلاسل PowerShell هنا ضمن تصريحات If

في PowerShell، تُستخدم سلاسل الهنا لإنشاء سلاسل نصية متعددة الأسطر. إنها مفيدة عند التعامل مع كتل كبيرة من النص، أو عندما تحتاج إلى الحفاظ على التنسيق.

يمكن لسلاسل الهنا، عند استخدامها ضمن If تصريحات، مقارنة قيمة سلسلة نصية مع سلسلة نصية متعددة الأسطر. إليك بنية استخدام سلاسل الهنا ضمن تصريحات PowerShell If:

if ($string -eq @’
    Multi-line
    string
    ‘@)
{
    # Code to execute if the condition is true
}
else
{
    # Code to execute if the condition is false
}

دعني أعطيك مثالين لمساعدتك في فهم كيفية استخدام سلاسل الهنا في If تصريحات.

المثال 10: التحقق من رسالة محددة

لنفترض أن لدينا سكربت PowerShell يطلب من المستخدم إدخال بيانات، ونريد التحقق مما إذا قام المستخدم بإدخال رسالة معينة، مثل “مرحباً، العالم!”. يمكننا استخدام سلسلة هنا Dentro de una declaración if لمقارنة إدخال المستخدم مع الرسالة المتوقعة.

في المثال التالي، يطلب السكربت من المستخدم إدخال رسالة، ونقوم بتخزين الإدخال في متغير $userInput. تقوم البيان if بمقارنة إدخال المستخدم مع الرسالة المتوقعة باستخدام سلسلة هنا. إذا تطابق الإدخال مع الرسالة المتوقعة، يعرض رسالة “أدخل المستخدم الرسالة الصحيحة”؛ وإلا، يعرض “أدخل المستخدم رسالة مختلفة.”

$userInput = Read-Host “Enter a message”

if ($userInput -eq @’
Hello, world!
‘@)
{
    Write-Host “User entered the correct message.”
}
else
{
    Write-Host “User entered a different message.”
}
Using here-strings to check for a specific message (Image credit: Petri/Bill Kindle)

مثال 11: مقارنة كتلة سكربت

إليك مثال آخر حيث نريد مقارنة كتلة سكربت مع كتلة من الشيفرة المحددة مسبقًا. يمكننا استخدام سلاسل هنا لتحديد كتلة السكربت ثم مقارنتها ضمن If statement.

في هذا المثال، لدينا كتلتي سكربت، $predefinedCode و $userCode. نريد التحقق مما إذا كانت شيفرة المستخدم تتطابق مع الشيفرة المحددة مسبقًا. من خلال استخدام سلاسل هنا لتحديد كتل السكربت، يمكننا مقارنتها ضمن If statement.

إذا كانت شيفرة المستخدم تتطابق مع الشيفرة المحددة مسبقًا، يعرض رسالة “تتطابق شيفرة المستخدم مع الشيفرة المحددة مسبقًا”؛ وإلا، يعرض “تختلف شيفرة المستخدم عن الشيفرة المحددة مسبقًا.”

$predefinedCode = {
    Write-Host “This is some code.”
    Write-Host “It does something.”
}

$userCode = {
    Write-Host “This is some code.”
    Write-Host “It does something.”
}

if ($userCode -eq $predefinedCode)
{
    Write-Host “The user code matches the predefined code.”
}
else
{
    Write-Host “The user code differs from the predefined code.”
}
Using here-strings to compare a script block (Image credit: Petri/Bill Kindle)

كيفية استخدام الدمج ضمن بيانات If

في PowerShell، يمكنك دمج السلاسل باستخدام عامل الجمع ‘+’. لاستخدام الدمج ضمن الشروط If، يجب عليك بناء سلسلة جديدة عن طريق دمج متغيرات سلسلة متعددة أو نصوص ثابتة.

إليك مثالين لتوضيح استخدام الدمج في الشروط If في PowerShell:

مثال 12: دمج متغيرات السلسلة

في هذا المثال، يتم تعريف متغيرات سلسلة اثنين، $firstName و $lastName. تقوم الشرط If بالتحقق مما إذا كانت كلتا المتغيرات تحتوي على قيم (أي، ليستا سلاسل فارغة).

  • إذا كانت كلتا الشروط صحيحة، نقوم بدمج الاسم الأول والاسم الأخير باستخدام عامل الجمع +، ونخزن النتيجة في المتغير $fullName. ثم نعرض الاسم الكامل المدمج باستخدام أمر Write-Host.
  • إذا كان الاسم الأول أو الاسم الأخير ناقصًا، فسنرى تشغيل كتلة الآخر وعرض رسالة مناسبة.
$firstName = “John”
$lastName = “Doe”

if ($firstName -ne ” -and $lastName -ne ”) {
    $fullName = $firstName + “ “ + $lastName
    Write-Host “Full Name: $fullName”
} else {
    Write-Host “First name or last name is missing.”
}
Concatenating string variables (Image credit: Petri/Bill Kindle)

المثال 13: دمج السلاسل النصية

في هذا المثال الثاني، يتم تعريف ثلاثة متغيرات: $greeting بقيمة “مرحبًا”، $name بقيمة “أليس”، و $age بقيمة 30. تقوم البيان if بالتحقق مما إذا كان للمتغير $name قيمة باستخدام طريقة IsNullOrEmpty().

  • إذا كانت القيمة صحيحة، نقوم بإنشاء رسالة تدمج التحية والاسم والعمر باستخدام عامل الجمع +. ثم نخزن الرسالة الناتجة في المتغير $message ومن ثم نقوم بعرضها باستخدام cmdlet Write-Host.
  • إذا كان الاسم ناقصًا (سلسلة فارغة)، يتم تشغيل كتلة الآخر ويتم عرض رسالة خطأ مناسبة.
$greeting = “Hello”
$name = “Alice”
$age = 30

if ([string]::IsNullorEmpty($name) -eq $false){
    $message = $greeting + “, “ + $name + “! Your age is “ + $age + “.”
    Write-Host $message
} else {
    Write-Host “Name is missing.”
}
Concatenating string literals (Image credit: Petri/Bill Kindle)

بشكل عام، يوضح هذان المثالان كيف تسمح عمليات الدمج بدمج السلاسل ديناميكيًا استنادًا إلى شروط معينة.

كيفية استخدام سلاسل الاتصال في البيانات If

تُستخدم سلاسل الاتصال عادةً لإنشاء اتصالات بقواعد البيانات أو الأنظمة الخارجية الأخرى. تحتوي هذه السلاسل على معلومات حول الخادم واسم قاعدة البيانات وبيانات الاعتماد وغيرها من المعلمات المطلوبة لإنشاء الاتصال.

في البيانات If، يمكنك استخدام سلاسل الاتصال لتشغيل بعض كتل الكود استنادًا إلى نجاح أو فشل الاتصال. فيما يلي مثالان يوضحان استخدام سلاسل الاتصال في بيانات PowerShell If:

مثال 14: التحقق من اتصال قاعدة البيانات

في هذا المثال، نقوم بتعريف سلسلة اتصال ($connectionString) تحدد اسم الخادم واسم قاعدة البيانات وبيانات الاعتماد. ثم ننشئ كائن SqlConnection باستخدام سلسلة الاتصال. داخل الكتلة try، نحاول فتح الاتصال باستخدام $connection.Open().

  • إذا نجح الاتصال، يتم تنفيذ كتلة الكود تحت الكتلة try، معرضًا اتصالًا ناجحًا.
  • إذا حدث استثناء (أي فشل الاتصال)، يتم تنفيذ كتلة الكود تحت الكتلة catch، معرضًا اتصالًا فاشلًا.
# Define the connection string
$connectionString = “Server=server_name;Database=db_name;User Id=user_id;Password=password;"

# Create a SqlConnection object using the connection string
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)

# Attempt to establish the connection
try {
    $connection.Open()
   
    # Connection successful
    Write-Host “Connected to the database.”

    # Perform additional operations on the database if needed

    # Close the connection
    $connection.Close()
}
catch {
    # Connection failed
    Write-Host “Failed to connect to the database.”
}
Checking a database connection (Image credit: Petri/Bill Kindle)

مثال 15: التحقق من اتصال الشبكة

في هذا المثال الثاني، نقوم بتعريف سلسلة اتصال ($connectionString) تحدد اسم الخادم ورقم المنفذ. ثم ننشئ كائن TcpClient باستخدام سلسلة الاتصال. داخل الكتلة try، نحاول إنشاء اتصال بالخادم باستخدام $tcpClient.Connect(”اسم_الخادم”, 1234).

  • إذا نجح الاتصال، يتم تنفيذ كتلة الكود تحت الكتلة try، معرضًا اتصالًا ناجحًا.
  • إذا حدثت استثناء (أي، فشل الاتصال)، يتم تنفيذ كتلة الشيفرة تحت كتلة الاستدراك، مما يظهر اتصالًا فاشلًا.
# Define the connection string
$connectionString = “Server=server_name;Port=1234;"

# Create a TcpClient object using the connection string
$tcpClient = New-Object System.Net.Sockets.TcpClient

# Attempt to establish the connection
try {
    $tcpClient.Connect(”server_name”, 1234)
   
    # Connection successful
    Write-Host “Connected to the server.”

    # Perform additional operations if needed

    # Close the connection
    $tcpClient.Close()
}
catch {
    # Connection failed
    Write-Host “Failed to connect to the server.”
}
Checking a network connection (Image credit: Petri/Bill Kindle)

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

كيفية استخدام تعليمات Break وContinue ضمن تعليمة If

في PowerShell، تُستخدم تعليمات Break و Continue للتحكم في تدفق التنفيذ ضمن حلقات التكرار والتبديلات. بينما تسمح Break لك بالخروج من حلقة أو تبديل، يتيح لك Continue تخطي التكرار الحالي والانتقال إلى التكرار التالي.

على الرغم من أن هذه التعليمات عادة ما تُستخدم ضمن حلقات التكرار، يمكنك أيضًا استخدامها ضمن تعليمة If لتحقيق سلوك محدد. دعنا نستكشف كيفية استخدام Break و Continue ضمن تعليمات If بواسطة مثالين سهلين للمتابعة.

مثال 16: استخدام Break في عبارة If

في هذا المثال، لدينا مصفوفة من الأرقام من 1 إلى 10. نستخدم حلقة Foreach لتكرار كل رقم. ضمن الحلقة، نتحقق مما إذا كان الرقم الحالي يساوي 6.

  • إذا كان كذلك، نعرض رسالة ثم نستخدم عبارة الـ break للخروج من الحلقة.
  • إذا لم يكن الرقم يساوي 6، نعرض ببساطة الرقم الحالي.
  • عندما تصادف الحلقة الرقم 6، يتم الخروج من الحلقة ويستمر البرنامج بالتنفيذ مع الشيفرة التالية.
$numbers = 1..10

foreach ($number in $numbers) {
    if ($number -eq 6) {
        Write-Host “Found the number 6. Exiting the loop.”
        break
    }
   
    Write-Host “Current number is: $number”
}
Using Break in an If statement (Image credit: Petri/Bill Kindle)

مثال 17: استخدام Continue في عبارة If

في هذا المثال، لدينا مرة أخرى مصفوفة من الأرقام من 1 إلى 10. نستخدم حلقة Foreach لتكرار كل رقم. أولاً، نتحقق مما إذا كان الرقم الحالي هو 3 أو 7.

  • إذا كانت الشرط صحيحة؛ نعرض رسالة ثم نستخدم عبارة Continue لتخطي التكرار الحالي والانتقال إلى التكرار التالي.
  • إذا لم يكن الرقم 3 أو 7، نعرض الرقم الحالي. ستستمر الحلقة حتى نقوم بتقييم جميع الأرقام.
$numbers = 1..10

foreach ($number in $numbers) {
    if ($number -eq 3 -or $number -eq 7) {
        Write-Host “Skipping the number $number”
        continue
    }
   
    Write-Host “Current number is: $number”
}
Using Continue in an If statement (Image credit: Petri/Bill Kindle)

في كلا النموذجين، استخدمنا عبارات If لتشغيل إجراءات معينة بناءً على شروط محددة. أما عبارة Break فقد سمحت لنا بالخروج من الحلقة أو التبديل تمامًا، بينما عبارة Continue قامت بتخطي الشيفرة المتبقية ضمن التكرار الحالي والانتقال إلى التكرار التالي.

كيفية استخدام الجداول المجزأة داخل تصريحات If

في PowerShell ، يمكنك استخدام الجداول المجزأة داخل تصريحات If لأداء فحوصات شرطية استنادًا إلى أزواج المفتاح والقيمة. الجداول المجزأة هي مجموعة من أزواج المفتاح والقيمة حيث يكون كل مفتاح فريدًا.

فيما يلي مثالان يوضحان كيفية استخدام الجداول المجزأة في تصريحات If في PowerShell.

المثال 18: التحقق مما إذا كان مفتاح معين موجودًا في جدول مجزأ

في هذا المثال ، لدينا جدول مجزأ يسمى $myHashtable بثلاثة أزواج مفتاح وقيمة. يتحقق التصريح If مما إذا كان المفتاح “العمر” موجودًا في الجدول باستخدام طريقة ContainsKey(). إذا كان المفتاح موجودًا ، يقوم بطباعة رسالة تقول إن العمر موجود ؛ خلاف ذلك ، يقوم بطباعة رسالة تفيد بأن العمر غير موجود.

# Create a hashtable
$myHashtable = @{
    “Name” = “John”
    “Age” = 30
    “City” = “New York”
}

# Check if a specific key exists in the hashtable
if ($myHashtable.ContainsKey(”Age”)) {
    Write-Host “Age is present in the hashtable.”
}
else {
    Write-Host “Age is not present in the hashtable.”
}
Checking if a specific key exists in a hashtable (Image credit: Petri/Bill Kindle)

المثال 19: التحقق مما إذا كانت قيمة معينة موجودة في جدول مجزأ

في هذا المثال ، لدينا مرة أخرى نفس الجدول المجزأ المسمى $myHashtable. يتحقق التصريح If مما إذا كانت القيمة “نيويورك” موجودة في الجدول باستخدام طريقة ContainsValue(). إذا كانت القيمة موجودة ، يقوم بطباعة رسالة تقول إن المدينة هي نيويورك ؛ خلاف ذلك ، يقوم بطباعة رسالة تفيد بأن المدينة ليست نيويورك.

# Create a hashtable
$myHashtable = @{
    “Name” = “John”
    “Age” = 30
    “City” = “New York”
}

# Check if a specific value exists in the hashtable
if ($myHashtable.ContainsValue(”New York”)) {
    Write-Host “The city is New York.”
}
else {
    Write-Host “The city is not New York.”
}
Checking if a specific value exists in a hashtable (Image credit: Petri/Bill Kindle)

كيفية استخدام المصفوفات في تصريحات If

في PowerShell ، يمكننا استخدام المصفوفات في تعليمات If للتحقق من شروط معينة وتنفيذ إجراءات محددة استنادًا إلى تلك الشروط. فيما يلي مثالان يوضحان استخدام المصفوفات في تعليمات If.

المثال 20: التحقق مما إذا كانت المصفوفة تحتوي على قيمة معينة

في هذا المثال ، لدينا مصفوفة تسمى $numbers تحتوي على تسلسل من الأرقام. تحقق تعليمة If مما إذا كانت المصفوفة تحتوي على القيمة ‘3’ باستخدام مشغل -contains. إذا كانت الشرط صحيحًا ، فسيتم إخراج “المصفوفة تحتوي على القيمة 3.” وإلا ، سيتم إخراج “المصفوفة لا تحتوي على القيمة 3.”

# Define an array of numbers
$numbers = 1, 2, 3, 4, 5

# Check if the array contains a specific value, e.g., 3
if ($numbers -contains 3) {
    Write-Host “The array contains the value 3.”
} else {
    Write-Host “The array does not contain the value 3.”
}
Checking if an array contains a specific value (Image credit: Petri/Bill Kindle)

المثال 21: التحقق مما إذا كانت المصفوفة فارغة

في هذا المثال ، لدينا مصفوفة فارغة تسمى $emptyArray. تحقق تعليمة If مما إذا كانت خاصية طول المصفوفة مساوية لـ 0. إذا كان الشرط صحيحًا ، فسيتم إخراج “المصفوفة فارغة.” وإلا ، سيتم إخراج “المصفوفة ليست فارغة.”

# Define an empty array
$emptyArray = @()

# Check if the array is empty
if ($emptyArray.Length -eq 0) {
    Write-Host “The array is empty.”
} else {
    Write-Host “The array is not empty.”
}
Checking if an array is empty (Image credit: Petri/Bill Kindle)

كيفية استخدام تعليمات Switch في PowerShell

في PowerShell، توفر البيانة Switch طريقة لتنفيذ فروع شرطية استنادًا إلى قيمة متغير أو تعبير. يُتيح لك مقارنة قيمة واحدة مع عدة قيم وتنفيذ كتل الشيفرة المختلفة اعتمادًا على التطابق.

إليك شرح حول كيفية استخدام بيانات Switch في PowerShell مع مثالين سهلين للمتابعة.

المثال 22: التحقق من أيام الأسبوع

في هذا المثال، لدينا متغير $day الذي سيكون أي يوم هو حاليًا. تقوم البيانة Switch بفحص قيمة $day مقابل حالات مختلفة باستخدام السلاسل “الاثنين”، “الثلاثاء”، وهكذا.

  • إذا كان هناك تطابق، يقوم البرنامج بتنفيذ كتلة الشيفرة المقابلة.
  • إذا لم يكن هناك تطابق، يقوم البرنامج بتنفيذ كتلة الشيفرة الافتراضية. هنا، سيكون الإخراج “إنه بداية الأسبوع!”
$day = (Get-Date).DayOfWeek

switch ($day) {
    “Monday” {
        Write-Host “It’s the start of the week!”
    }
    “Tuesday” {
        Write-Host “It’s Tuesday!”
    }
    “Wednesday” {
        Write-Host “It’s the middle of the week!”
    }
    “Thursday” {
        Write-Host “It’s almost Friday!”
    }
    “Friday” {
        Write-Host “It’s finally Friday!”
    }
    Default {
        Write-Host “It’s the weekend!”
    }
}
Using a Switch statement to check for days of the week (Image credit: Petri/Bill Kindle)

المثال 23: تصنيف الأرقام

في هذا المثال الثاني، لدينا متغير $number بقيمة 42. تقوم البيانة Switch بفحص قيمة $number مقابل حالات مختلفة باستخدام كتل الشيفرة. تقوم الحالة الأولى بالتحقق مما إذا كانت الرقم أقل من 0، وتقوم الحالة الثانية بالتحقق مما إذا كان أكبر من 0، وتعمل كتلة الشيفرة الافتراضية إذا لم تتطابق الحالات الأخرى. هنا، سيكون الإخراج “رقم إيجابي.”

$number = 42

switch ($number) {
    { $_ -lt 0 } {
        Write-Host “Negative number”
    }
    { $_ -gt 0 } {
        Write-Host “Positive number”
    }
    Default {
        Write-Host “Zero”
    }
}
Using a Switch statement to categorize numbers (Image credit: Petri/Bill Kindle)

في كلتا الحالتين، يمكنك تخصيص كتل الشفرة داخل كل حالة لتنفيذ أي إجراءات مرغوبة استنادًا إلى الشرط المطابق. تعتبر Switch بيانًا قويًا في PowerShell يوفر طريقة أنيقة للتعامل مع شروط متعددة لتشغيل كتل الشفرة.

PowerShell والمنطق الشرطي: ملخص

بشكل عام، توفر بيانات If وهياكلها ذات الصلة أدوات قوية لتنفيذ المنطق الشرطي في نصوص PowerShell. تعتبر بيانات If أساسية لتنفيذ التنفيذ الشرطي للشفرة حيث تسمح لك باختبار شرط وتنفيذ كتل شفرة مختلفة استنادًا إلى ما إذا كان الشرط يقيم إلى صحيح أو خاطئ.

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

  • Else تستخدم البيانات بالتزامن مع If لإنشاء منطق شرطي، وتوفر خيار احتياطي عندما لا يتم تلبية الشرط.
  • يمكن أيضًا استخدام بيانات ElseIf لإنشاء شروط يتم التحقق منها فقط إذا كانت البيانات السابقة If أو ElseIf تقيم إلى خطأ، مما يسمح بمنطق شرطي أكثر تعقيدًا.
  • المشغلين المنطقيين مثل AND و OR يمكن استخدامهم لدمج عدة شروط في عبارات إذا للتحكم في تدفق البرنامج. يمكن استخدام سلاسل هير في عبارات إذا لمقارنة قيم السلاسل النصية بسلاسل نصية متعددة الأسطر.
  • يتيح لك الإضافة بين السلاسل باستخدام عامل الجمع ‘+’ دمج السلاسل بشكل ديناميكي بناءً على شروط معينة في عبارات إذا.
  • سلاسل الاتصال يتم استخدامها عادة في عبارات إذا لتنفيذ كتل التعليمات البرمجية بشكل تابع لنجاح أو فشل الاتصال بقواعد البيانات أو الأنظمة الخارجية.
  • عبارات Break و Continue توفر التحكم في تنفيذ الحلقات والتبديل، ويمكنك استخدامها داخل عبارات إذا لتحقيق سلوك معين.
  • يمكن استخدام الجداول التجزئة والمصفوفات في عبارات إذا للتحقق من شروط معينة وإجراء الإجراءات بناءً على تلك الشروط.
  • أخيرًا، تسمح عبارة Switch بالتفرع الشرطي بناءً على قيمة المتغير أو التعبير، مما يتيح تنفيذ كتل تعليمات برمجية مختلفة اعتمادًا على المطابقة.

شكرًا لك على قراءة هذا الدليل المفصل حول عبارات إذا في بايثون، لا تتردد في طرح أي أسئلة في قسم التعليقات أدناه!

Source:
https://petri.com/powershell-if-statement/