PowerShell برای مبتدیان

هنگام کار با 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 آورده شده است

PowerShell برای مبتدیان

اگر پارامترها در براکت [] محصور شده باشند، اختیاری هستند.
یعنی در این مثال نام خود مجله اجباری است و نام پارامتر خیر اگر نوع پارامتر و نام آن در داخل پرانتز قرار گرفته باشند، آنگاه پارامتر اختیاری است.

اگر به پارامتر 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 داخل پرانتز نوشته شده است.

PowerShell برای مبتدیان

این به این معنی است که می توانیم 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

اضافه کردن نظر