เมื่อทำงานกับ 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 ถูกตั้งค่าเป็นเท็จ ต่อไปเราจะเห็นฟิลด์ตำแหน่งตรงข้ามซึ่งระบุว่าชื่อ ซึ่งหมายความว่าคุณสามารถอ้างถึงพารามิเตอร์โดยใช้ชื่อเท่านั้น นั่นคือ:
Get-EventLog -LogName Application -After 2020.04.26
เนื่องจากพารามิเตอร์ LogName มีเลข 0 แทนที่จะเป็น Named หมายความว่าเราสามารถอ้างถึงพารามิเตอร์โดยไม่มีชื่อ แต่ระบุตามลำดับที่ต้องการได้:
Get-EventLog Application -After 2020.04.26
สมมติว่าคำสั่งนี้:
Get-EventLog -Newest 5 Application
นามแฝง
เพื่อให้เราสามารถใช้คำสั่งปกติจากคอนโซลใน PowerShell มีนามแฝง (Alias)
ตัวอย่างนามแฝงสำหรับคำสั่ง Set-Location คือ cd
นั่นคือแทนที่จะเรียกคำสั่ง
Set-Location “D:”
เราสามารถใช้
cd “D:”
ประวัติขององค์กร
หากต้องการดูประวัติการเรียกคำสั่ง คุณสามารถใช้ Get-History
ดำเนินการคำสั่งจากประวัติการเรียกใช้ประวัติ 1; เรียกใช้ประวัติ 2
ล้างประวัติ
ท่อ
ไปป์ไลน์ใน PowerShell คือเมื่อผลลัพธ์ของฟังก์ชันแรกถูกส่งไปยังฟังก์ชันที่สอง นี่คือตัวอย่างการใช้ไปป์ไลน์:
Get-Verb | Measure-Object
แต่เพื่อให้เข้าใจไปป์ไลน์ดีขึ้น ลองยกตัวอย่างง่ายๆ กัน มีทีม
Get-Verb "get"
ถ้าเราเรียก Get-Help Get-Verb -Full help เราจะเห็นว่าพารามิเตอร์ Verb รับอินพุต pipline และ ByValue เขียนไว้ในวงเล็บ
ซึ่งหมายความว่าเราสามารถเขียน Get-Verb จาก "get" เป็น "get" | ได้ GetVerb.
นั่นคือ ผลลัพธ์ของนิพจน์แรกคือสตริง และจะถูกส่งผ่านไปยังพารามิเตอร์ Verb ของคำสั่ง Get-Verb ผ่านทาง pipline อินพุตตามค่า
อินพุตไปป์ไลน์สามารถเป็น 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{
}
ที่มา: will.com