عند العمل مع PowerShell ، فإن أول شيء نواجهه هو الأوامر (Cmdlets).
يبدو استدعاء الأمر كما يلي:
Verb-Noun -Parameter1 ValueType1 -Parameter2 ValueType2[]
المساعدة
يتم الوصول إلى التعليمات في PowerShell باستخدام أمر Get-Help. يمكن تحديد أحد المعلمات: مثال ، مفصل ، كامل ، متصل ، showWindow.
سيعيد Get-Help Get-Service -full الوصف الكامل لعملية أمر Get-Service
Get-Help Get-S * سيعرض جميع الأوامر والوظائف المتاحة بدءًا من Get-S *
هناك أيضًا وثائق مفصلة على موقع Microsoft الرسمي.
فيما يلي مثال للمساعدة لأمر Get-Evenlog
إذا كانت المعلمات محاطة بأقواس مربعة [] ، فهي اختيارية.
هذا هو ، في هذا المثال ، اسم السجل نفسه مطلوب ، واسم المعلمة
إذا نظرت إلى معلمة EntryType ، يمكنك رؤية القيم المضمنة بين أقواس متعرجة. بالنسبة لهذه المعلمة ، يمكننا فقط استخدام القيم المحددة مسبقًا في الأقواس المتعرجة.
يمكن الاطلاع على معلومات حول ما إذا كانت المعلمة مطلوبة في الوصف أدناه في الحقل مطلوب. في المثال أعلاه ، تعد السمة After اختيارية لأنه تم تعيين Required على false. بعد ذلك ، نرى حقل الموضع المقابل الذي يقول اسمه. هذا يعني أنه لا يمكنك الرجوع إلى المعلمة إلا بالاسم ، أي:
Get-EventLog -LogName Application -After 2020.04.26
نظرًا لأن معلمة LogName تحتوي على الرقم 0 بدلاً من Named ، فهذا يعني أنه يمكننا الرجوع إلى المعلمة بدون اسم ، ولكن عن طريق تحديدها في التسلسل المطلوب:
Get-EventLog Application -After 2020.04.26
لنفترض هذا الترتيب:
Get-EventLog -Newest 5 Application
الاسم المستعار
حتى نتمكن من استخدام الأوامر المعتادة من وحدة التحكم في PowerShell ، هناك أسماء مستعارة (الاسم المستعار).
مثال على الاسم المستعار لأمر Set-Location هو cd.
هذا هو ، بدلا من استدعاء الأمر
Set-Location “D:”
يمكننا ان نستخدم
cd “D:”
تاريخنا
للاطلاع على محفوظات مكالمات الأوامر ، يمكنك استخدام Get-History
تنفيذ الأمر من التاريخ Invoke-History 1 ؛ استدعاء التاريخ 2
تاريخ واضح
خط أنابيب
خط الأنابيب في بوويرشيل هو عندما يتم تمرير نتيجة الوظيفة الأولى إلى الثانية. فيما يلي مثال باستخدام خط الأنابيب:
Get-Verb | Measure-Object
ولكن لفهم خط الأنابيب بشكل أفضل ، دعنا نأخذ مثالًا أبسط. لدي فريق
Get-Verb "get"
إذا اتصلت بـ Get-Help Get-Verb -Full help ، فسنرى أن معلمة الفعل تأخذ إدخال خط الأنابيب وأن ByValue مكتوب بين قوسين.
هذا يعني أنه يمكننا إعادة كتابة Get-Verb "get" إلى "get" | GetVerb.
أي أن نتيجة التعبير الأول عبارة عن سلسلة ويتم تمريرها إلى معلمة الفعل لأمر Get-Verb عبر إدخال خط الأنابيب حسب القيمة.
يمكن أيضًا أن يكون إدخال خط الأنابيب ByPropertyName. في هذه الحالة ، سنمرر كائنًا له خاصية تحمل اسمًا مشابهًا فعل.
المتغيرات
لا يتم كتابة المتغيرات بدقة ويتم تحديدها بعلامة $ في المقدمة
$example = 4
الرمز> يعني إدخال البيانات
على سبيل المثال ، $ example> File.txt
باستخدام هذا التعبير ، سنضع البيانات من المتغير $ example في ملف
مثل Set-Content -Value $ example -Path File.txt
المصفوفات
تهيئة الصفيف:
$ArrayExample = @(“First”, “Second”)
تهيئة صفيف فارغ:
$ArrayExample = @()
الحصول على القيمة بالمؤشر:
$ArrayExample[0]
احصل على المجموعة الكاملة:
$ArrayExample
إضافة عنصر:
$ArrayExample += “Third”
$ArrayExample += @(“Fourth”, “Fifth”)
الترتيب حسب:
$ArrayExample | Sort
$ArrayExample | Sort -Descending
لكن المصفوفة نفسها لم تتغير مع هذا الفرز. وإذا أردنا أن تقوم المصفوفة بفرز البيانات ، فسنحتاج إلى تعيين القيم المصنفة:
$ArrayExample = $ArrayExample | Sort
لا توجد طريقة لإزالة عنصر من مصفوفة في PowerShell ، ولكن يمكنك القيام بذلك على النحو التالي:
$ArrayExample = $ArrayExample | where { $_ -ne “First” }
$ArrayExample = $ArrayExample | where { $_ -ne $ArrayExample[0] }
إزالة مصفوفة:
$ArrayExample = $null
الحلقات
بناء جملة الحلقة:
for($i = 0; $i -lt 5; $i++){}
$i = 0
while($i -lt 5){}
$i = 0
do{} while($i -lt 5)
$i = 0
do{} until($i -lt 5)
ForEach($item in $items){}
اخرج من حلقة الفاصل.
تخطي عنصر المتابعة.
عبارات شرطية
if () {} elseif () {} else
switch($someIntValue){
1 { “Option 1” }
2 { “Option 2” }
default { “Not set” }
}
المسمى الوظيفي
تعريف الوظيفة:
function Example () {
echo &args
}
إطلاق الوظيفة:
Example “First argument” “Second argument”
تحديد وسيطات في دالة:
function Example () {
param($first, $second)
}
function Example ($first, $second) {}
إطلاق الوظيفة:
Example -first “First argument” -second “Second argument”
استثناء
try{
} catch [System.Net.WebException],[System.IO.IOException]{
} catch {
} finally{
}
المصدر: www.habr.com