هنگام کار با 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* شروع می شوند
همچنین مستندات دقیقی در وب سایت رسمی مایکروسافت وجود دارد.
در اینجا یک نمونه راهنما برای دستور Get-Evenlog آورده شده است
اگر پارامترها در براکت [] محصور شده باشند، اختیاری هستند.
یعنی در این مثال نام خود مجله اجباری است و نام پارامتر
اگر به پارامتر EntryType نگاه کنید، می توانید مقادیری را ببینید که در بریس های فرفری محصور شده اند. برای این پارامتر، فقط میتوانیم از مقادیر از پیش تعریفشده در بریسهای فرفری استفاده کنیم.
ما می توانیم اطلاعاتی در مورد اینکه آیا پارامتر مورد نیاز است یا خیر را در توضیحات زیر در قسمت Required مشاهده کنیم. در مثال بالا، ویژگی After اختیاری است زیرا Required روی false تنظیم شده است. در مرحله بعد فیلد Position را می بینیم که در مقابل آن Named نوشته شده است. این بدان معنی است که پارامتر فقط با نام قابل دسترسی است، یعنی:
Get-EventLog -LogName Application -After 2020.04.26
از آنجایی که پارامتر LogName به جای Named عدد 0 را مشخص کرده است، به این معنی است که میتوانیم به پارامتر بدون نام دسترسی داشته باشیم، اما با تعیین آن در ترتیب مورد نیاز:
Get-EventLog Application -After 2020.04.26
بیایید این ترتیب را فرض کنیم:
Get-EventLog -Newest 5 Application
نام مستعار
برای اینکه بتوانیم از دستورات آشنا از کنسول استفاده کنیم، PowerShell دارای نام مستعار (Alias) است.
یک نام مستعار برای دستور Set-Location cd است.
یعنی به جای فراخوانی دستور
Set-Location “D:”
ما میتوانیم استفاده کنیم
cd “D:”
تاریخچه
برای مشاهده تاریخچه فراخوانی های فرمان می توانید از Get-History استفاده کنید
اجرای دستور از history Invoke-History 1. Invoke-History 2
پاک کردن تاریخچه پاک کردن تاریخچه
خط لوله
خط لوله در powershell زمانی است که نتیجه عملکرد اول به تابع دوم منتقل می شود. در اینجا مثالی از استفاده از خط لوله آورده شده است:
Get-Verb | Measure-Object
اما برای درک بهتر خط لوله، بیایید مثال ساده تری بزنیم. یک تیم وجود دارد
Get-Verb "get"
اگر Get-Help Get-Verb -Full را راهنما فراخوانی کنیم، خواهیم دید که پارامتر Verb ورودی خط لوله را می پذیرد و ByValue داخل پرانتز نوشته شده است.
این به این معنی است که می توانیم Get-Verb "get" را به "get" | بازنویسی کنیم دریافت-فعل.
یعنی نتیجه عبارت اول یک رشته است و از طریق خط لوله ورودی با مقدار به پارامتر Verb دستور Get-Verb منتقل می شود.
همچنین ورودی خط لوله می تواند ByPropertyName باشد. در این صورت، شیئی را که دارای خاصیت با نام مشابه Verb است ارسال می کنیم.
متغیر
متغیرها به شدت تایپ نمی شوند و با نماد $ در جلو مشخص می شوند
$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