Powershell - คู่มือฉบับย่อ
Windows PowerShell คือไฟล์ command-line shell และ scripting languageออกแบบมาโดยเฉพาะสำหรับการดูแลระบบ อะนาล็อกใน Linux เรียกว่า Bash Scripting Windows PowerShell สร้างขึ้นบน. NET Framework ช่วยให้ผู้เชี่ยวชาญด้านไอทีสามารถควบคุมและดำเนินการบริหารระบบปฏิบัติการ Windows และแอปพลิเคชันที่ทำงานบนสภาพแวดล้อม Windows Server โดยอัตโนมัติ
คำสั่ง Windows PowerShell เรียกว่า cmdletsให้คุณจัดการคอมพิวเตอร์จากบรรทัดคำสั่ง ผู้ให้บริการ Windows PowerShell ช่วยให้คุณเข้าถึงที่เก็บข้อมูลเช่น Registry และ Certificate Store ได้อย่างง่ายดายเช่นเดียวกับที่คุณเข้าถึงระบบไฟล์
นอกจากนี้ Windows PowerShell ยังมีตัวแยกวิเคราะห์นิพจน์ที่สมบูรณ์และภาษาสคริปต์ที่พัฒนาขึ้นอย่างสมบูรณ์ พูดง่ายๆคือคุณสามารถทำงานทั้งหมดที่คุณทำด้วย GUI และอื่น ๆ อีกมากมาย
PowerShell ISE
Windows PowerShell Integrated Scripting Environment(ISE) เป็นแอปพลิเคชันโฮสต์สำหรับ Windows PowerShell ใน Windows PowerShell ISE คุณสามารถเรียกใช้คำสั่งและเขียนทดสอบและดีบักสคริปต์ในอินเทอร์เฟซผู้ใช้แบบกราฟิกบน Windows เดียวพร้อมการแก้ไขหลายบรรทัดการทำให้แท็บเสร็จสมบูรณ์การลงสีไวยากรณ์การดำเนินการที่เลือกวิธีใช้ตามบริบทและการสนับสนุนขวาไป - ภาษาด้านซ้าย
คุณสามารถใช้รายการเมนูและแป้นพิมพ์ลัดเพื่อทำงานหลายอย่างเช่นเดียวกับที่คุณทำในคอนโซล Windows PowerShell ตัวอย่างเช่นเมื่อคุณดีบักสคริปต์ใน Windows PowerShell ISE เมื่อต้องการตั้งค่าจุดพักบรรทัดในสคริปต์ให้คลิกขวาที่บรรทัดของโค้ดจากนั้นคลิกToggle Breakpoint.
คำสั่งพื้นฐานของ PowerShell
มีคำสั่ง PowerShell จำนวนมากและเป็นการยากมากที่จะใส่คำสั่งเหล่านี้ในบทช่วยสอนนี้เราจะเน้นไปที่คำสั่งที่สำคัญที่สุดและคำสั่งพื้นฐานของ PowerShell
ขั้นตอนแรกคือไปที่คำสั่ง Get-Help ซึ่งจะให้คำอธิบายเกี่ยวกับวิธีการให้คำสั่งและพารามิเตอร์
ไอคอน PowerShell อยู่ในแถบงานและในเมนูเริ่ม เพียงแค่คลิกที่ไอคอนก็จะเปิดขึ้น
หากต้องการเปิดเพียงคลิกที่ไอคอนจากนั้นหน้าจอต่อไปนี้จะเปิดขึ้นและหมายความว่า PowerShell พร้อมให้คุณทำงาน
เวอร์ชัน PowerShell
PowerShell เวอร์ชันล่าสุดคือ 5.0 และเพื่อตรวจสอบสิ่งที่ติดตั้งในเซิร์ฟเวอร์ของเราเราพิมพ์คำสั่งต่อไปนี้ - :$PSVersionTable ดังที่แสดงในภาพหน้าจอต่อไปนี้และจากหน้าจอเราทราบด้วยว่าเรามี PSVersion 4.0
หากต้องการอัปเดตเป็นเวอร์ชันล่าสุดที่มี Cmdlets เพิ่มเติมเราต้องดาวน์โหลด Windows Management Framework 5.0 จากลิงค์ต่อไปนี้ - https://www.microsoft.com/en-us/download/details.aspx?id=50395 และติดตั้ง
PowerShell ISE
Windows PowerShell Integrated Scripting Environment(ISE) เป็นแอปพลิเคชันโฮสต์สำหรับ Windows PowerShell ใน Windows PowerShell ISE คุณสามารถเรียกใช้คำสั่งและเขียนทดสอบและดีบักสคริปต์ในอินเทอร์เฟซผู้ใช้แบบกราฟิกบน Windows เดียวพร้อมการแก้ไขหลายบรรทัดการทำให้แท็บเสร็จสมบูรณ์การลงสีไวยากรณ์การดำเนินการที่เลือกวิธีใช้ตามบริบทและการสนับสนุนขวาไป - ภาษาด้านซ้าย
คุณสามารถใช้รายการเมนูและแป้นพิมพ์ลัดเพื่อทำงานหลายอย่างเช่นเดียวกับที่คุณทำในคอนโซล Windows PowerShell ตัวอย่างเช่นเมื่อคุณดีบักสคริปต์ใน Windows PowerShell ISE เมื่อต้องการตั้งค่าจุดพักบรรทัดในสคริปต์ให้คลิกขวาที่บรรทัดของโค้ดจากนั้นคลิกToggle Breakpoint.
หากต้องการเปิดคุณเพียงไปที่เริ่ม - ค้นหาแล้วพิมพ์ - PowerShell ดังที่แสดงในภาพหน้าจอต่อไปนี้
จากนั้นคลิกที่ Windows PowerShell ISE หรือคลิกที่ลูกศรชี้ลงตามที่แสดงในภาพหน้าจอต่อไปนี้
มันจะแสดงรายการแอพพลิเคชั่นทั้งหมดที่ติดตั้งบนเซิร์ฟเวอร์จากนั้นคลิกที่ Windows PowerShell ISE
ตารางต่อไปนี้จะเปิด -
มีสามส่วนซึ่งรวมถึง - PowerShell Console ด้วยหมายเลข 1 แล้ว Scripting File หมายเลข 2 และสามคือ Command Module คุณจะพบโมดูลได้ที่ไหน
ในขณะที่สร้างสคริปต์คุณสามารถเรียกใช้โดยตรงและดูผลลัพธ์ดังตัวอย่างต่อไปนี้ -
คำสั่งพื้นฐานของ PowerShell
มีคำสั่ง PowerShell จำนวนมากและเป็นการยากมากที่จะใส่คำสั่งเหล่านี้ในบทช่วยสอนนี้เราจะเน้นไปที่คำสั่งที่สำคัญที่สุดและคำสั่งพื้นฐานของ PowerShell
ขั้นตอนแรกคือไปที่คำสั่ง Get-Help ซึ่งจะให้คำอธิบายเกี่ยวกับวิธีการให้คำสั่งและพารามิเตอร์
To get the list of Updates -
- รับโปรแกรมแก้ไขด่วนและการติดตั้งโปรแกรมแก้ไขด่วนดังต่อไปนี้
- รับโปรแกรมแก้ไขด่วน -id kb2741530
cmdlet หรือ "Command let" เป็นคำสั่งที่ใช้งานง่ายในสภาพแวดล้อม Windows PowerShell รันไทม์ของ Windows PowerShell เรียกใช้ cmdlet เหล่านี้ที่พร้อมท์คำสั่ง คุณสามารถสร้างและเรียกใช้โดยทางโปรแกรมผ่าน Windows PowerShell APIs
Cmdlet vs Command
Cmdlets แตกต่างจากคำสั่งในสภาพแวดล้อม command-shell อื่น ๆ ตามลักษณะต่อไปนี้ -
Cmdlets คือวัตถุคลาส. NET Framework และไม่ใช่แค่ปฏิบัติการแบบสแตนด์อะโลนเท่านั้น
Cmdlets สามารถสร้างได้อย่างง่ายดายจากโค้ดเพียงไม่กี่สิบบรรทัด
การแยกวิเคราะห์การนำเสนอข้อผิดพลาดและการจัดรูปแบบเอาต์พุตไม่ได้รับการจัดการโดย cmdlet ทำได้โดยรันไทม์ Windows PowerShell
กระบวนการ Cmdlets ทำงานบนอ็อบเจ็กต์ที่ไม่ได้อยู่บนสตรีมข้อความและอ็อบเจ็กต์สามารถส่งผ่านเป็นเอาต์พุตสำหรับการไปป์ไลน์
Cmdlets เป็นแบบเร็กคอร์ดเมื่อประมวลผลทีละอ็อบเจ็กต์
การขอความช่วยเหลือ
ขั้นตอนแรกคือไปที่คำสั่ง Get-Help ซึ่งจะให้คำอธิบายเกี่ยวกับวิธีการให้คำสั่งและพารามิเตอร์
ต่อไปนี้เป็นตัวอย่างของสคริปต์ powershell บนไฟล์และโฟลเดอร์
ซีเนียร์ | การทำงานและคำอธิบาย |
---|---|
1 | การสร้างโฟลเดอร์ ตัวอย่างสคริปต์เพื่อแสดงวิธีสร้างโฟลเดอร์โดยใช้สคริปต์ PowerShell |
2 | การสร้างไฟล์ ตัวอย่างสคริปต์เพื่อแสดงวิธีสร้างไฟล์โดยใช้สคริปต์ PowerShell |
3 | การคัดลอกโฟลเดอร์ ตัวอย่างสคริปต์เพื่อแสดงวิธีการคัดลอกไฟล์โดยใช้สคริปต์ PowerShell |
4 | การคัดลอกไฟล์ ตัวอย่างสคริปต์เพื่อแสดงวิธีสร้างไฟล์โดยใช้สคริปต์ PowerShell |
5 | การลบโฟลเดอร์ ตัวอย่างสคริปต์เพื่อแสดงวิธีการลบโฟลเดอร์โดยใช้สคริปต์ PowerShell |
6 | การลบไฟล์ ตัวอย่างสคริปต์เพื่อแสดงวิธีการลบไฟล์โดยใช้สคริปต์ PowerShell |
7 | การย้ายโฟลเดอร์ ตัวอย่างสคริปต์เพื่อแสดงวิธีการย้ายโฟลเดอร์โดยใช้สคริปต์ PowerShell |
8 | การย้ายไฟล์ ตัวอย่างสคริปต์เพื่อแสดงวิธีการย้ายไฟล์โดยใช้สคริปต์ PowerShell |
9 | เปลี่ยนชื่อโฟลเดอร์ ตัวอย่างสคริปต์เพื่อแสดงวิธีการเปลี่ยนชื่อโฟลเดอร์โดยใช้สคริปต์ PowerShell |
10 | เปลี่ยนชื่อไฟล์ ตัวอย่างสคริปต์เพื่อแสดงวิธีการเปลี่ยนชื่อไฟล์โดยใช้สคริปต์ PowerShell |
11 | กำลังดึงรายการ ตัวอย่างสคริปต์เพื่อแสดงวิธีการดึงข้อมูลรายการโดยใช้สคริปต์ PowerShell |
12 | ตรวจสอบการมีอยู่ของโฟลเดอร์ ตัวอย่างสคริปต์เพื่อแสดงวิธีตรวจสอบการมีอยู่ของโฟลเดอร์โดยใช้สคริปต์ PowerShell |
13 | ตรวจสอบการมีอยู่ของไฟล์ ตัวอย่างสคริปต์เพื่อแสดงวิธีตรวจสอบการมีอยู่ของไฟล์โดยใช้สคริปต์ PowerShell |
ต่อไปนี้เป็นตัวอย่างของสคริปต์ powershell ในวันที่และเวลาของระบบ
ซีเนียร์ | การทำงานและคำอธิบาย |
---|---|
1 | รับวันที่ของระบบ ตัวอย่างสคริปต์เพื่อแสดงวิธีรับวันที่ของระบบโดยใช้สคริปต์ PowerShell |
2 | ตั้งวันที่ของระบบ ตัวอย่างสคริปต์เพื่อแสดงวิธีตั้งวันที่ของระบบโดยใช้สคริปต์ PowerShell |
3 | รับเวลาของระบบ ตัวอย่างสคริปต์เพื่อแสดงวิธีรับเวลาของระบบโดยใช้สคริปต์ PowerShell |
4 | ตั้งเวลาระบบ ตัวอย่างสคริปต์เพื่อแสดงวิธีตั้งเวลาระบบโดยใช้สคริปต์ PowerShell |
ต่อไปนี้เป็นตัวอย่างสคริปต์ powershell ในการสร้างและอ่านไฟล์ประเภทต่างๆ
ซีเนียร์ | การทำงานและคำอธิบาย |
---|---|
1 | สร้างไฟล์ข้อความ ตัวอย่างสคริปต์เพื่อแสดงวิธีสร้างไฟล์ข้อความโดยใช้สคริปต์ PowerShell |
2 | อ่านไฟล์ข้อความ ตัวอย่างสคริปต์เพื่อแสดงวิธีการอ่านไฟล์ข้อความโดยใช้สคริปต์ PowerShell |
3 | สร้างไฟล์ XML ตัวอย่างสคริปต์เพื่อแสดงวิธีสร้างไฟล์ XML โดยใช้สคริปต์ PowerShell |
4 | อ่านไฟล์ XML ตัวอย่างสคริปต์เพื่อแสดงวิธีการอ่านไฟล์ XML โดยใช้สคริปต์ PowerShell |
5 | สร้างไฟล์ CSV ตัวอย่างสคริปต์เพื่อแสดงวิธีสร้างไฟล์ CSV โดยใช้สคริปต์ PowerShell |
6 | อ่านไฟล์ CSV ตัวอย่างสคริปต์เพื่อแสดงวิธีการอ่านไฟล์ CSV โดยใช้สคริปต์ PowerShell |
7 | สร้างไฟล์ HTML ตัวอย่างสคริปต์เพื่อแสดงวิธีสร้างไฟล์ HTML โดยใช้สคริปต์ PowerShell |
8 | อ่านไฟล์ HTML ตัวอย่างสคริปต์เพื่อแสดงวิธีการอ่านไฟล์ HTML โดยใช้สคริปต์ PowerShell |
9 | การลบเนื้อหาไฟล์ ตัวอย่างสคริปต์เพื่อแสดงวิธีการลบเนื้อหาไฟล์โดยใช้สคริปต์ PowerShell |
10 | ผนวกข้อมูลข้อความ ตัวอย่างสคริปต์เพื่อแสดงวิธีการต่อท้ายข้อความในเนื้อหาไฟล์โดยใช้สคริปต์ PowerShell |
Cmdlets
cmdlet หรือ "Command let" เป็นคำสั่งที่ใช้งานง่ายในสภาพแวดล้อม Windows PowerShell รันไทม์ของ Windows PowerShell เรียกใช้ cmdlet เหล่านี้ที่พร้อมท์คำสั่ง คุณสามารถสร้างและเรียกใช้โดยทางโปรแกรมผ่าน Windows PowerShell APIs ต่อไปนี้เป็นตัวอย่างการใช้งานขั้นสูงของ cmdlets
ซีเนียร์ | ประเภท Cmdlet และคำอธิบาย |
---|---|
1 | รับ Cmdlet ที่ไม่ซ้ำใคร ตัวอย่างโปรแกรมเพื่อแสดง Get-Unique Cmdlet |
2 | Group-Object Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Group-Object Cmdlet |
3 | การวัดวัตถุ Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Measure-Object Cmdlet |
4 | เปรียบเทียบวัตถุ Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Compare-Object Cmdlet |
5 | รูปแบบรายการ Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Format-List Cmdlet |
6 | รูปแบบกว้าง Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Format-Wide Cmdlet |
7 | Cmdlet ของวัตถุที่ไหน ตัวอย่างโปรแกรมเพื่อแสดง Where-Object Cmdlet |
8 | รับ ChildItem Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Get-ChildItem Cmdlet |
9 | ForEach-Object Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง ForEach-Object Cmdlet |
10 | เริ่ม - สลีป Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Start-Sleep Cmdlet |
11 | อ่านโฮสต์ Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Read-Host Cmdlet |
12 | เลือกวัตถุ Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Select-Object Cmdlet |
13 | เรียงลำดับวัตถุ Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Sort-Object Cmdlet |
14 | Cmdlet คำเตือนการเขียน ตัวอย่างโปรแกรมเพื่อแสดง Cmdlet คำเตือนการเขียน |
15 | เขียนโฮสต์ Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Write-Host Cmdlet |
16 | Invoke-Item Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Invoke-Item Cmdlet |
17 | Invoke-Expression Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Invoke-Expression Cmdlet |
18 | Cmdlet คำสั่งการวัด ตัวอย่างโปรแกรมเพื่อแสดง Measure-Command Cmdlet |
19 | Invoke-History Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Invoke-History Cmdlet |
20 | Add-History Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Add-History Cmdlet |
21 | รับประวัติ Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Get-History Cmdlet |
22 | รับวัฒนธรรม Cmdlet ตัวอย่างโปรแกรมเพื่อแสดง Get-Culture Cmdlet |
Windows PowerShell คือไฟล์ command-line shell และ scripting languageออกแบบมาโดยเฉพาะสำหรับการดูแลระบบ อะนาล็อกใน Linux เรียกว่า Bash Scripting Windows PowerShell สร้างขึ้นบน. NET Framework ช่วยให้ผู้เชี่ยวชาญด้านไอทีสามารถควบคุมและดำเนินการบริหารระบบปฏิบัติการ Windows และแอปพลิเคชันที่ทำงานบนสภาพแวดล้อม Windows Server โดยอัตโนมัติ
คำสั่ง Windows PowerShell เรียกว่า cmdletsให้คุณจัดการคอมพิวเตอร์จากบรรทัดคำสั่ง ผู้ให้บริการ Windows PowerShell ช่วยให้คุณเข้าถึงที่เก็บข้อมูลเช่น Registry และ Certificate Store ได้อย่างง่ายดายเช่นเดียวกับที่คุณเข้าถึงระบบไฟล์
นอกจากนี้ Windows PowerShell ยังมีตัวแยกวิเคราะห์นิพจน์ที่สมบูรณ์และภาษาสคริปต์ที่พัฒนาขึ้นอย่างสมบูรณ์ พูดง่ายๆคือคุณสามารถทำงานทั้งหมดที่คุณทำด้วย GUI และอื่น ๆ อีกมากมาย Windows PowerShell Scripting เป็นภาษาสคริปต์ที่พัฒนาขึ้นอย่างสมบูรณ์และมีตัวแยกวิเคราะห์นิพจน์ที่หลากหลาย /
คุณสมบัติ
Cmdlets - Cmdlets ทำหน้าที่ดูแลระบบทั่วไปเช่นการจัดการรีจิสทรีบริการกระบวนการบันทึกเหตุการณ์และการใช้ Windows Management Instrumentation (WMI)
Task oriented - ภาษาสคริปต์ PowerShell ขึ้นอยู่กับงานและให้การสนับสนุนสำหรับสคริปต์ที่มีอยู่และเครื่องมือบรรทัดคำสั่ง
Consistent design- เนื่องจาก cmdlets และที่เก็บข้อมูลระบบใช้ไวยากรณ์ทั่วไปและมีรูปแบบการตั้งชื่อทั่วไปการแบ่งปันข้อมูลจึงทำได้ง่าย เอาต์พุตจาก cmdlet หนึ่งสามารถไปป์ไลน์ไปยัง cmdlet อื่นได้โดยไม่ต้องมีการจัดการใด ๆ
Simple to Use - การนำทางที่เรียบง่ายและใช้คำสั่งช่วยให้ผู้ใช้นำทางไปยังรีจิสทรีและที่เก็บข้อมูลอื่น ๆ ที่คล้ายกับการนำทางระบบไฟล์
Object based- PowerShell มีความสามารถในการจัดการวัตถุที่มีประสิทธิภาพ ออบเจ็กต์สามารถส่งไปยังเครื่องมือหรือฐานข้อมูลอื่นได้โดยตรง
Extensible interface. - PowerShell สามารถปรับแต่งได้ในฐานะผู้จำหน่ายซอฟต์แวร์อิสระและนักพัฒนาองค์กรสามารถสร้างเครื่องมือและยูทิลิตี้แบบกำหนดเองโดยใช้ PowerShell เพื่อจัดการซอฟต์แวร์ของตน
ตัวแปร
ตัวแปร PowerShell เป็นชื่อวัตถุ เนื่องจาก PowerShell ทำงานกับอ็อบเจ็กต์ตัวแปรเหล่านี้จึงถูกใช้เพื่อทำงานกับอ็อบเจ็กต์
กำลังสร้างตัวแปร
ชื่อตัวแปรควรขึ้นต้นด้วย $ และสามารถมีอักขระที่เป็นตัวเลขและตัวอักษรและขีดล่างในชื่อได้ สามารถสร้างตัวแปรได้โดยพิมพ์ชื่อตัวแปรที่ถูกต้อง
พิมพ์คำสั่งต่อไปนี้ใน PowerShell ISE Console สมมติว่าคุณอยู่ในโฟลเดอร์ D: \ test
$location = Get-Location
ที่นี่เราได้สร้างตัวแปร $ location และกำหนดผลลัพธ์ของ Get-Location cmdlet ตอนนี้มีตำแหน่งปัจจุบัน
การใช้ตัวแปร
พิมพ์คำสั่งต่อไปนี้ใน PowerShell ISE Console
$location
เอาต์พุต
คุณสามารถดูผลลัพธ์ต่อไปนี้ในคอนโซล PowerShell
Path
----
D:\test
รับข้อมูลของตัวแปร
Get-Member cmdlet สามารถบอกประเภทของตัวแปรที่ใช้ ดูตัวอย่างด้านล่าง
$location | Get-Member
เอาต์พุต
คุณสามารถดูผลลัพธ์ต่อไปนี้ในคอนโซล PowerShell
TypeName: System.Management.Automation.PathInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Drive Property System.Management.Automation.PSDriveInfo Drive {get;}
Path Property System.String Path {get;}
Provider Property System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath Property System.String ProviderPath {get;}
ตัวแปรพิเศษของ PowerShell เก็บข้อมูลเกี่ยวกับ PowerShell สิ่งเหล่านี้เรียกอีกอย่างว่าตัวแปรอัตโนมัติ ต่อไปนี้เป็นรายการตัวแปรอัตโนมัติ -
ตัวดำเนินการ | คำอธิบาย |
---|---|
$$ | แสดงโทเค็นสุดท้ายในบรรทัดสุดท้ายที่เซสชันได้รับ |
$? | แสดงสถานะการดำเนินการของการดำเนินการล่าสุด ประกอบด้วย TRUE หากการดำเนินการล่าสุดสำเร็จและ FALSE หากล้มเหลว |
$ ^ | แสดงโทเค็นแรกในบรรทัดสุดท้ายที่เซสชันได้รับ |
$ _ | เหมือนกับ $ PSItem มีวัตถุปัจจุบันในวัตถุไปป์ไลน์ คุณสามารถใช้ตัวแปรนี้ในคำสั่งที่ดำเนินการกับทุกออบเจ็กต์หรือบนวัตถุที่เลือกในไปป์ไลน์ |
$ ARGS | แสดงอาร์เรย์ของพารามิเตอร์ที่ไม่ได้ประกาศและ / หรือค่าพารามิเตอร์ที่ส่งผ่านไปยังฟังก์ชันสคริปต์หรือบล็อกสคริปต์ |
$ CONSOLEFILENAME | แสดงเส้นทางของไฟล์คอนโซล (.psc1) ที่ใช้ล่าสุดในเซสชัน |
$ ERROR | แสดงอาร์เรย์ของวัตถุข้อผิดพลาดที่แสดงถึงข้อผิดพลาดล่าสุด |
$ EVENT | แสดงวัตถุ PSEventArgs ที่แสดงถึงเหตุการณ์ที่กำลังประมวลผล |
$ EVENTARGS | แสดงอ็อบเจ็กต์ที่แสดงอาร์กิวเมนต์เหตุการณ์แรกที่มาจาก EventArgs ของเหตุการณ์ที่กำลังประมวลผล |
$ EVENTSUBSCRIBER | แสดงอ็อบเจ็กต์ PSEventSubscriber ที่แสดงถึงสมาชิกเหตุการณ์ของเหตุการณ์ที่กำลังประมวลผล |
$ EXECUTIONCONTEXT | แสดงอ็อบเจ็กต์ EngineIntrinsics ที่แสดงบริบทการดำเนินการของโฮสต์ PowerShell |
$ FALSE | แสดงถึง FALSE คุณสามารถใช้ตัวแปรนี้เพื่อแทนค่า FALSE ในคำสั่งและสคริปต์แทนการใช้สตริง "false" |
$ FOREACH | แสดงถึงตัวแจงนับ (ไม่ใช่ค่าผลลัพธ์) ของ ForEach loop คุณสามารถใช้คุณสมบัติและวิธีการของตัวแจงนับกับค่าของตัวแปร $ ForEach |
$ HOME | แสดงเส้นทางแบบเต็มของโฮมไดเร็กทอรีของผู้ใช้ |
$ โฮสต์ | แสดงวัตถุที่แสดงถึงแอปพลิเคชันโฮสต์ปัจจุบันสำหรับ PowerShell |
$ INPUT | แสดงถึงตัวแจงนับที่ระบุอินพุตทั้งหมดที่ส่งผ่านไปยังฟังก์ชัน |
$ LASTEXITCODE | แสดงรหัสออกของโปรแกรมที่ใช้ Windows ล่าสุดที่เรียกใช้ |
$ MATCHES | ตัวแปร $ Matches ทำงานร่วมกับตัวดำเนินการ -match และ -notmatch |
$ MYINVOCATION | $ MyInvocation ถูกเติมสำหรับสคริปต์ฟังก์ชันและบล็อกสคริปต์เท่านั้น คุณสมบัติ PSScriptRoot และ PSCommandPath ของตัวแปรอัตโนมัติ $ MyInvocation มีข้อมูลเกี่ยวกับตัวเรียกใช้หรือสคริปต์การเรียกไม่ใช่สคริปต์ปัจจุบัน |
$ NESTEDPROMPTLEVEL | แสดงระดับพร้อมต์ปัจจุบัน |
$ NULL | $ null เป็นตัวแปรอัตโนมัติที่มีค่า NULL หรือค่าว่าง คุณสามารถใช้ตัวแปรนี้เพื่อแสดงค่าที่ขาดหรือไม่ได้กำหนดในคำสั่งและสคริปต์ |
$ PID | แสดงถึงตัวระบุกระบวนการ (PID) ของกระบวนการที่โฮสต์เซสชัน PowerShell ปัจจุบัน |
$ โปรไฟล์ | แสดงเส้นทางแบบเต็มของโปรไฟล์ PowerShell สำหรับผู้ใช้ปัจจุบันและแอปพลิเคชันโฮสต์ปัจจุบัน |
$ PSCMDLET | แสดงวัตถุที่แสดงถึง cmdlet หรือฟังก์ชันขั้นสูงที่กำลังรัน |
$ PSCOMMANDPATH | แสดงพา ธ แบบเต็มและชื่อไฟล์ของสคริปต์ที่กำลังรัน |
$ PSCULTURE | แสดงชื่อของวัฒนธรรมที่ใช้ในระบบปฏิบัติการในปัจจุบัน |
$ PSDEBUGCONTEXT | ในขณะที่ดีบักตัวแปรนี้มีข้อมูลเกี่ยวกับสภาพแวดล้อมการดีบัก มิฉะนั้นจะมีค่า NULL |
$ PSHOME | แสดงเส้นทางแบบเต็มของไดเร็กทอรีการติดตั้งสำหรับ PowerShell |
$ PSITEM | เหมือนกับ $ _ มีวัตถุปัจจุบันในวัตถุไปป์ไลน์ |
$ PSSCRIPTROOT | แสดงถึงไดเร็กทอรีที่สคริปต์กำลังรัน |
$ PSSENDERINFO | แสดงข้อมูลเกี่ยวกับผู้ใช้ที่เริ่ม PSSession รวมถึงข้อมูลประจำตัวของผู้ใช้และเขตเวลาของคอมพิวเตอร์ต้นทาง |
$ PSUICULTURE | แสดงชื่อของวัฒนธรรมอินเทอร์เฟซผู้ใช้ (UI) ที่ใช้อยู่ในระบบปฏิบัติการ |
$ PSVERSIONTABLE | แสดงตารางแฮชแบบอ่านอย่างเดียวที่แสดงรายละเอียดเกี่ยวกับเวอร์ชันของ PowerShell ที่กำลังทำงานในเซสชันปัจจุบัน |
$ SENDER | แสดงออบเจ็กต์ที่สร้างเหตุการณ์นี้ |
$ SHELLID | แสดงถึงตัวระบุของเชลล์ปัจจุบัน |
$ STACKTRACE | แสดงการติดตามสแต็กสำหรับข้อผิดพลาดล่าสุด |
$ นี้ | ในบล็อกสคริปต์ที่กำหนดคุณสมบัติสคริปต์หรือวิธีการสคริปต์ตัวแปร $ นี้อ้างถึงอ็อบเจ็กต์ที่ถูกขยาย |
$ จริง | แสดงถึง TRUE คุณสามารถใช้ตัวแปรนี้เพื่อแทนค่า TRUE ในคำสั่งและสคริปต์ |
PowerShell มีชุดตัวดำเนินการที่หลากหลายเพื่อจัดการกับตัวแปร เราสามารถแบ่งตัวดำเนินการ PowerShell ทั้งหมดออกเป็นกลุ่มต่อไปนี้ -
- ตัวดำเนินการเลขคณิต
- ผู้ดำเนินการมอบหมาย
- ตัวดำเนินการเปรียบเทียบ
- ตัวดำเนินการทางตรรกะ
- ตัวดำเนินการเปลี่ยนทิศทาง
- ผู้ปฏิบัติงานที่รั่วไหลและเข้าร่วม
- พิมพ์ Operators
- ตัวดำเนินการ Unary
ตัวดำเนินการเลขคณิต
ตัวดำเนินการทางคณิตศาสตร์ใช้ในนิพจน์ทางคณิตศาสตร์ในลักษณะเดียวกับที่ใช้ในพีชคณิต ตารางต่อไปนี้แสดงรายการตัวดำเนินการเลขคณิต -
สมมติตัวแปรจำนวนเต็ม A ถือ 10 และตัวแปร B ถือ 20 จากนั้น -
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
+ (เพิ่มเติม) | เพิ่มค่าที่ด้านใดด้านหนึ่งของตัวดำเนินการ | A + B จะให้ 30 |
- (การลบ) | ลบตัวถูกดำเนินการทางขวามือออกจากตัวถูกดำเนินการด้านซ้าย | A - B จะให้ -10 |
* (การคูณ) | คูณค่าที่ด้านใดด้านหนึ่งของตัวดำเนินการ | A * B จะให้ 200 |
/ (แผนก) | แบ่งตัวถูกดำเนินการทางซ้ายด้วยตัวถูกดำเนินการทางขวามือ | B / A จะให้ 2 |
% (โมดูลัส) | แบ่งตัวถูกดำเนินการทางซ้ายด้วยตัวถูกดำเนินการทางขวามือและส่งคืนส่วนที่เหลือ | B% A จะให้ 0 |
ตัวดำเนินการเปรียบเทียบ
ต่อไปนี้เป็นตัวดำเนินการกำหนดที่รองรับโดยภาษา PowerShell -
สมมติตัวแปรจำนวนเต็ม A ถือ 10 และตัวแปร B ถือ 20 จากนั้น -
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
eq (เท่ากับ) | เปรียบเทียบค่าสองค่าว่าเท่ากันหรือไม่ | A -eq B จะให้เท็จ |
ne (ไม่เท่ากับ) | เปรียบเทียบค่าสองค่าให้ไม่เท่ากัน | A -ne B จะให้จริง |
gt (มากกว่า) | เปรียบเทียบค่าแรกให้มากกว่าค่าที่สอง | B -gt A จะให้จริง |
ge (มากกว่าหรือเท่ากับ) | เปรียบเทียบค่าแรกว่ามากกว่าหรือเท่ากับค่าที่สอง | B -ge A จะให้จริง |
lt (น้อยกว่า) | เปรียบเทียบค่าแรกให้น้อยกว่าค่าที่สอง | B -lt A จะให้เท็จ |
le (น้อยกว่าหรือเท่ากับ) | เปรียบเทียบค่าแรกให้น้อยกว่าหรือเท่ากับค่าที่สอง | B -le A จะให้เท็จ |
ผู้ดำเนินการมอบหมาย
ต่อไปนี้เป็นตัวดำเนินการกำหนดที่รองรับโดยภาษา PowerShell -
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
= | ตัวดำเนินการกำหนดง่าย กำหนดค่าจากตัวถูกดำเนินการด้านขวาไปยังตัวถูกดำเนินการด้านซ้าย | C = A + B จะกำหนดค่า A + B ให้เป็น C |
+ = | เพิ่มและกำหนดโอเปอเรเตอร์ เพิ่มตัวถูกดำเนินการด้านขวาให้กับตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย | C + = A เทียบเท่ากับ C = C + A |
- = | ตัวดำเนินการลบและกำหนด มันจะลบตัวถูกดำเนินการด้านขวาออกจากตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย | C - = A เทียบเท่ากับ C = C - A |
ตัวดำเนินการทางตรรกะ
ตารางต่อไปนี้แสดงรายการตัวดำเนินการทางตรรกะ -
สมมติว่าตัวแปรบูลีน A ถือเป็นจริงและตัวแปร B ถือเป็นเท็จจากนั้น -
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
AND (ตรรกะและ) | เรียกว่าตัวดำเนินการ Logical AND ถ้าตัวถูกดำเนินการทั้งสองไม่ใช่ศูนย์เงื่อนไขจะกลายเป็นจริง | (A -AND B) เป็นเท็จ |
หรือ (ตรรกะหรือ) | เรียกว่า Logical OR Operator หากตัวถูกดำเนินการสองตัวใดตัวหนึ่งไม่เป็นศูนย์เงื่อนไขจะกลายเป็นจริง | (A -OR B) เป็นจริง |
ไม่ (ตรรกะไม่) | เรียกว่า Logical NOT Operator ใช้เพื่อย้อนกลับสถานะตรรกะของตัวถูกดำเนินการ หากเงื่อนไขเป็นจริงตัวดำเนินการ Logical NOT จะสร้างเท็จ | -NOT (A -AND B) เป็นจริง |
ตัวดำเนินการเบ็ดเตล็ด
ต่อไปนี้เป็นตัวดำเนินการสำคัญต่างๆที่รองรับโดยภาษา PowerShell -
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
> (ตัวดำเนินการเปลี่ยนทิศทาง) | ตัวดำเนินการเปลี่ยนทิศทาง กำหนดเอาต์พุตที่จะพิมพ์ลงในไฟล์ / อุปกรณ์เอาต์พุตที่เปลี่ยนทิศทาง | dir> test.log จะพิมพ์รายการไดเร็กทอรีในไฟล์ test.log |
อาจมีสถานการณ์ที่คุณต้องเรียกใช้บล็อกโค้ดหลาย ๆ ครั้ง โดยทั่วไปคำสั่งจะดำเนินการตามลำดับ: คำสั่งแรกในฟังก์ชันจะถูกเรียกใช้งานก่อนตามด้วยคำสั่งที่สองและอื่น ๆ
ภาษาโปรแกรมจัดเตรียมโครงสร้างการควบคุมต่างๆที่ช่วยให้เส้นทางการดำเนินการซับซ้อนมากขึ้น
ก loop คำสั่งอนุญาตให้เราดำเนินการคำสั่งหรือกลุ่มของคำสั่งหลาย ๆ ครั้งและต่อไปนี้เป็นรูปแบบทั่วไปของคำสั่งวนซ้ำในภาษาโปรแกรมส่วนใหญ่ -
ภาษาการเขียนโปรแกรม PowerShell มีประเภทของลูปต่อไปนี้เพื่อจัดการกับข้อกำหนดการวนซ้ำ คลิกลิงก์ต่อไปนี้เพื่อตรวจสอบรายละเอียด
ซีเนียร์ | ห่วงและคำอธิบาย |
---|---|
1 | สำหรับห่วง เรียกใช้ลำดับของคำสั่งหลาย ๆ ครั้งและย่อโค้ดที่จัดการตัวแปรลูป |
2 | สำหรับแต่ละวง ปรับปรุงสำหรับการวนซ้ำ ส่วนใหญ่จะใช้เพื่อสำรวจคอลเลกชันขององค์ประกอบรวมถึงอาร์เรย์ |
3 | ในขณะที่วนซ้ำ ทำซ้ำคำสั่งหรือกลุ่มของคำสั่งในขณะที่เงื่อนไขที่กำหนดเป็นจริง จะทดสอบเงื่อนไขก่อนที่จะดำเนินการร่างกายลูป |
4 | ทำ ... ในขณะที่วนซ้ำ เช่นเดียวกับคำสั่ง while ยกเว้นว่าจะทดสอบเงื่อนไขที่ส่วนท้ายของตัวห่วง |
โครงสร้างการตัดสินใจมีเงื่อนไขอย่างน้อยหนึ่งเงื่อนไขที่จะได้รับการประเมินหรือทดสอบโดยโปรแกรมพร้อมกับคำสั่งหรือคำสั่งที่จะดำเนินการหากเงื่อนไขถูกกำหนดให้เป็นจริงและเป็นทางเลือกที่จะเรียกใช้คำสั่งอื่น ๆ หากเงื่อนไขถูกกำหนด เป็นเท็จ
ต่อไปนี้เป็นรูปแบบทั่วไปของโครงสร้างการตัดสินใจทั่วไปที่พบในภาษาโปรแกรมส่วนใหญ่ -
ภาษาสคริปต์ PowerShell มีประเภทของคำสั่งประกอบการตัดสินใจดังต่อไปนี้ คลิกลิงก์ต่อไปนี้เพื่อตรวจสอบรายละเอียด
ซีเนียร์ | คำชี้แจงและคำอธิบาย |
---|---|
1 | ถ้าคำสั่ง อัน if statement ประกอบด้วยนิพจน์บูลีนตามด้วยหนึ่งคำสั่งขึ้นไป |
2 | if ... else คำสั่ง อัน if statement ตามด้วยตัวเลือกก็ได้ else statementซึ่งดำเนินการเมื่อนิพจน์บูลีนเป็นเท็จ |
3 | คำสั่ง if ซ้อนกัน คุณสามารถใช้ if หรือ elseif คำสั่งภายในอื่น if หรือ elseif คำสั่ง (s) |
4 | สลับคำสั่ง ก switch คำสั่งอนุญาตให้ทดสอบตัวแปรเพื่อความเท่าเทียมกับรายการค่า |
PowerShell จัดเตรียมโครงสร้างข้อมูลไฟล์ arrayซึ่งเก็บคอลเล็กชันองค์ประกอบตามลำดับขนาดคงที่ของประเภทใด ๆ อาร์เรย์ใช้ในการจัดเก็บชุดข้อมูล แต่มักจะมีประโยชน์มากกว่าที่จะคิดว่าอาร์เรย์เป็นชุดของตัวแปรหรือวัตถุ
แทนที่จะประกาศตัวแปรเดี่ยวเช่น number0, number1, ... และ number99 คุณจะประกาศตัวแปรอาร์เรย์หนึ่งตัวเช่นตัวเลขและใช้ตัวเลข [0], ตัวเลข [1] และ ... , ตัวเลข [99] เพื่อแสดง ตัวแปรแต่ละตัว
บทช่วยสอนนี้แนะนำวิธีการประกาศตัวแปรอาร์เรย์สร้างอาร์เรย์และประมวลผลอาร์เรย์โดยใช้ตัวแปรที่จัดทำดัชนี
การประกาศตัวแปรอาร์เรย์
ในการใช้อาร์เรย์ในโปรแกรมคุณต้องประกาศตัวแปรเพื่ออ้างอิงอาร์เรย์และคุณสามารถระบุประเภทของอาร์เรย์ที่ตัวแปรอ้างอิงได้ นี่คือไวยากรณ์สำหรับการประกาศตัวแปรอาร์เรย์ -
ไวยากรณ์
$A = 1, 2, 3, 4
or
$A = 1..4
Note- ตามค่าเริ่มต้นของวัตถุของอาร์เรย์คือ System.Object GetType () วิธีการส่งกลับประเภทของอาร์เรย์ ประเภทสามารถส่งผ่านได้
ตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้เป็นตัวอย่างของไวยากรณ์นี้ -
[int32[]]$intA = 1500,2230,3350,4000
$A = 1, 2, 3, 4
$A.getType()
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
องค์ประกอบอาร์เรย์สามารถเข้าถึงได้ผ่านไฟล์ index. ดัชนีอาร์เรย์เป็นแบบ 0 นั่นคือพวกมันเริ่มจาก 0 ถึงarrayRefVar.length-1.
ตัวอย่าง
คำสั่งต่อไปนี้ประกาศตัวแปรอาร์เรย์ myList สร้างอาร์เรย์ 10 องค์ประกอบประเภทคู่และกำหนดการอ้างอิงไปยัง myList -
$myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123
ภาพต่อไปนี้แสดงถึงอาร์เรย์ myList ที่นี่ myList มีค่าสองค่าสิบค่าและดัชนีอยู่ระหว่าง 0 ถึง 9
อาร์เรย์การประมวลผล
เมื่อประมวลผลองค์ประกอบอาร์เรย์เรามักใช้อย่างใดอย่างหนึ่ง for ห่วงหรือ foreach วนซ้ำเนื่องจากองค์ประกอบทั้งหมดในอาร์เรย์เป็นประเภทเดียวกันและทราบขนาดของอาร์เรย์
ตัวอย่าง
นี่คือตัวอย่างที่สมบูรณ์ที่แสดงวิธีการสร้างเริ่มต้นและประมวลผลอาร์เรย์ -
$myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123
write-host("Print all the array elements")
$myList
write-host("Get the length of array")
$myList.Length
write-host("Get Second element of array")
$myList[1]
write-host("Get partial array")
$subList = $myList[1..3]
write-host("print subList")
$subList
write-host("using for loop")
for ($i = 0; $i -le ($myList.length - 1); $i += 1) {
$myList[$i]
}
write-host("using forEach Loop")
foreach ($element in $myList) {
$element
}
write-host("using while Loop")
$i = 0
while($i -lt 4) {
$myList[$i];
$i++
}
write-host("Assign values")
$myList[1] = 10
$myList
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
Print all the array elements
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
Get the length of array
10
Get Second element of array
4.5
Get partial array
print subList
4.5
3.3
13.2
using for loop
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
using forEach Loop
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
using while Loop
5.6
4.5
3.3
13.2
Assign values
5.6
10
3.3
13.2
4
34.33
34
45.45
99.993
11123
ตัวอย่างวิธีการอาร์เรย์
นี่คือตัวอย่างที่สมบูรณ์ที่แสดงการดำเนินการกับอาร์เรย์โดยใช้วิธีการ
$myList = @(0..4)
write-host("Print array")
$myList
$myList = @(0..4)
write-host("Assign values")
$myList[1] = 10
$myList
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
Clear array
Print array
0
1
2
3
4
Assign values
0
10
2
3
4
Hashtable เก็บคู่คีย์ / ค่าไว้ในตารางแฮช เมื่อใช้ Hashtable คุณต้องระบุวัตถุที่ใช้เป็นคีย์และค่าที่คุณต้องการเชื่อมโยงกับคีย์นั้น โดยทั่วไปเราใช้ String หรือตัวเลขเป็นคีย์
บทช่วยสอนนี้จะแนะนำวิธีการประกาศตัวแปรแฮชแท็กสร้างแฮชแท็กและประมวลผลแฮชแท็กโดยใช้วิธีการ
การประกาศตัวแปรแฮชแท็ก
ในการใช้แฮชแท็กในโปรแกรมคุณต้องประกาศตัวแปรเพื่ออ้างอิงแฮชแท็ก นี่คือไวยากรณ์สำหรับการประกาศตัวแปรแฮชแท็ก -
ไวยากรณ์
$hash = @{ ID = 1; Shape = "Square"; Color = "Blue"}
or
$hash = @{}
Note- สามารถสร้างพจนานุกรมตามลำดับได้โดยใช้ไวยากรณ์ที่คล้ายกัน พจนานุกรมที่ได้รับคำสั่งจะรักษาลำดับการเพิ่มรายการในขณะที่แฮชแท็บไม่ได้
ตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้เป็นตัวอย่างของไวยากรณ์นี้ -
$hash = [ordered]@{ ID = 1; Shape = "Square"; Color = "Blue"}
พิมพ์แฮชแท็ก
$hash
เอาต์พุต
Name Value
---- -----
ID 1
Color Blue
Shape Square
สามารถเข้าถึงค่าแฮชแท็กได้ผ่านไฟล์ keys.
> $hash["ID"]
1
การประมวลผล Hashtable
สัญลักษณ์จุดสามารถใช้เพื่อเข้าถึงคีย์หรือค่าของแฮชแท็บได้
> $hash.keys
ID
Color
Shape
> $hash.values
1
Blue
Square
ตัวอย่าง
นี่คือตัวอย่างที่สมบูรณ์ที่แสดงวิธีสร้างเริ่มต้นและประมวลผลแฮชแท็ก -
$hash = @{ ID = 1; Shape = "Square"; Color = "Blue"}
write-host("Print all hashtable keys")
$hash.keys
write-host("Print all hashtable values")
$hash.values
write-host("Get ID")
$hash["ID"]
write-host("Get Shape")
$hash.Number
write-host("print Size")
$hash.Count
write-host("Add key-value")
$hash["Updated"] = "Now"
write-host("Add key-value")
$hash.Add("Created","Now")
write-host("print Size")
$hash.Count
write-host("Remove key-value")
$hash.Remove("Updated")
write-host("print Size")
$hash.Count
write-host("sort by key")
$hash.GetEnumerator() | Sort-Object -Property key
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
Print all hashtable keys
ID
Color
Shape
Print all hashtable values
1
Blue
Square
Get ID
1
Get Shape
print Size
3
Add key-value
Add key-value
print Size
5
Remove key-value
print Size
4
sort by key
Name Value
---- -----
Color Blue
Created Now
ID 1
Shape
Square
นิพจน์ทั่วไปคือลำดับพิเศษของอักขระที่ช่วยให้คุณจับคู่หรือค้นหาสตริงหรือชุดของสตริงอื่น ๆ โดยใช้ไวยากรณ์เฉพาะที่จัดขึ้นในรูปแบบ สามารถใช้เพื่อค้นหาแก้ไขหรือจัดการข้อความและข้อมูล
นี่คือตารางที่แสดงรายการไวยากรณ์ของนิพจน์ทั่วไป metacharacter ทั้งหมดที่มีอยู่ใน PowerShell -
Subexpression | ตรงกัน |
---|---|
^ | ตรงกับจุดเริ่มต้นของบรรทัด |
$ | ตรงกับจุดสิ้นสุดของบรรทัด |
. | จับคู่อักขระเดี่ยวใด ๆ ยกเว้นขึ้นบรรทัดใหม่ การใช้m ตัวเลือกช่วยให้สามารถจับคู่ขึ้นบรรทัดใหม่ได้เช่นกัน |
[... ] | จับคู่อักขระเดี่ยวใด ๆ ในวงเล็บ |
[^ ... ] | จับคู่อักขระเดี่ยวใด ๆ ที่ไม่อยู่ในวงเล็บ |
\ ก | จุดเริ่มต้นของสตริงทั้งหมด |
\ z | สิ้นสุดสตริงทั้งหมด |
\ Z | สิ้นสุดสตริงทั้งหมดยกเว้นตัวยุติบรรทัดสุดท้ายที่อนุญาต |
re * | จับคู่ 0 หรือมากกว่าที่เกิดขึ้นของนิพจน์ก่อนหน้า |
re + | ตรงกับสิ่งก่อนหน้าอย่างน้อย 1 อย่าง |
รี? | จับคู่ 0 หรือ 1 ครั้งของนิพจน์ก่อนหน้า |
อีกครั้ง {n} | ตรงกับจำนวนครั้งที่เกิดขึ้นของนิพจน์ก่อนหน้า |
อีก {n,} | จับคู่ n เหตุการณ์ขึ้นไปของนิพจน์ก่อนหน้า |
ใหม่ {n, m} | จับคู่อย่างน้อย n และมากที่สุด m ที่เกิดขึ้นของนิพจน์ก่อนหน้า |
ก | ข | จับคู่ a หรือ b |
(อีกครั้ง) | จัดกลุ่มนิพจน์ทั่วไปและจดจำข้อความที่ตรงกัน |
(?: อีกครั้ง) | จัดกลุ่มนิพจน์ทั่วไปโดยไม่จำข้อความที่ตรงกัน |
(?> อีกครั้ง) | จับคู่รูปแบบอิสระโดยไม่ต้องย้อนรอย |
\ w | จับคู่อักขระคำ |
\ ว | จับคู่อักขระที่ไม่ใช่คำหลัก |
\ s | ตรงกับช่องว่าง เทียบเท่ากับ [\ t \ n \ r \ f] |
\ S | ตรงกับ nonwhitespace |
\ d | ตรงกับตัวเลข เทียบเท่ากับ [0-9] |
\ D | ตรงกับ nondigits |
\ ก | ตรงกับจุดเริ่มต้นของสตริง |
\ Z | ตรงกับจุดสิ้นสุดของสตริง หากมีขึ้นบรรทัดใหม่จะตรงกับก่อนขึ้นบรรทัดใหม่ |
\ z | ตรงกับจุดสิ้นสุดของสตริง |
\ G | ตรงกับจุดที่นัดสุดท้ายจบ |
\ n | อ้างอิงกลับเพื่อจับหมายเลขกลุ่ม "n" |
\ b | จับคู่ขอบเขตของคำเมื่ออยู่นอกวงเล็บ จับคู่ backspace (0x08) เมื่ออยู่ในวงเล็บ |
\ B | ตรงกับขอบเขตที่ไม่ใช่คำ |
\ n, t ฯลฯ | จับคู่การขึ้นบรรทัดใหม่การคืนค่าขนส่งแท็บ ฯลฯ |
\ Q | Escape (quote) อักขระทั้งหมดไม่เกิน \ E |
\ E | เริ่มต้นการอ้างอิงด้วย \ Q |
นี่คือตัวอย่างทั้งหมดที่แสดงวิธีใช้ regex ใน PowerShell
ซีเนียร์ | จับคู่และคำอธิบาย |
---|---|
1 | จับคู่อักขระ ตัวอย่างอักขระนิพจน์ทั่วไปที่รองรับ |
2 | จับคู่คลาสตัวละคร ตัวอย่างคลาสอักขระที่รองรับ |
3 | จับคู่ Quantifiers ตัวอย่างปริมาณที่รองรับ |
ตัวดำเนินการ Backtick (`) เรียกอีกอย่างว่าตัวดำเนินการตัดคำ อนุญาตให้เขียนคำสั่งในหลายบรรทัด สามารถใช้สำหรับบรรทัดใหม่ (`n) หรือ tab (` t) ในประโยคได้เช่นกัน ดูตัวอย่างด้านล่าง -
ตัวอย่าง 1
Get-Service * | Sort-Object ServiceType `
| Format-Table Name, ServiceType, Status -AutoSize
มันจะกลายเป็น
Get-Service * | Sort-Object ServiceType | Format-Table Name, ServiceType, Status -AutoSize
ตรวจสอบผลลัพธ์เป็น
Name ServiceType Status
---- ----------- ------
MSSQLServerADHelper100 Win32OwnProcess Stopped
ntrtscan Win32OwnProcess Running
...
ตัวอย่าง 2
การใช้บรรทัดและแท็บใหม่
> Write-host "Title Subtitle"
Title Subtitle
> Write-host "Title `nSubtitle"
Title
Subtitle
> Write-host "Title `tSubtitle"
Title Subtitle
Powershell รองรับวงเล็บสามประเภท
Parenthesis brackets. − ()
Braces brackets. − {}
Square brackets. − []
วงเล็บปีกกา
วงเล็บประเภทนี้ใช้เพื่อ
ผ่านข้อโต้แย้ง
แนบชุดคำสั่งหลายชุด
แก้ไขความคลุมเครือ
สร้างอาร์เรย์
ตัวอย่าง
> $array = @("item1", "item2", "item3")
> foreach ($element in $array) { $element }
item1
item2
item3
วงเล็บปีกกา
วงเล็บประเภทนี้ใช้เพื่อ
ปิดคำสั่ง
คำสั่งบล็อก
ตัวอย่าง
$x = 10
if($x -le 20){
write-host("This is if statement")
}
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
This is if statement.
วงเล็บเหลี่ยม
วงเล็บประเภทนี้ใช้เพื่อ
เข้าถึงอาร์เรย์
เข้าถึงแฮชแท็ก
กรองโดยใช้นิพจน์ทั่วไป
ตัวอย่าง
> $array = @("item1", "item2", "item3")
> for($i = 0; $i -lt $array.length; $i++){ $array[$i] }
item1
item2
item3
>Get-Process [r-s]*
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
320 72 27300 33764 227 3.95 4028 SCNotification
2298 77 57792 48712 308 2884 SearchIndexer
...
นามแฝงของ PowerShell เป็นชื่ออื่นสำหรับ cmdlet หรือสำหรับองค์ประกอบคำสั่งใด ๆ
การสร้างนามแฝง
ใช้ New-Aliascmdlet เพื่อสร้างนามแฝง ในตัวอย่างด้านล่างเราได้สร้างนามแฝง help สำหรับ Get-Help cmdlet
New-Alias -Name help -Value Get-Help
ตอนนี้เรียกใช้นามแฝง
help Get-WmiObject -Detailed
คุณจะเห็นผลลัพธ์ต่อไปนี้
NAME
Get-WmiObject
SYNOPSIS
Gets instances of Windows Management Instrumentation (WMI) classes or information about the available classes.
SYNTAX
Get-WmiObject [
...
การรับนามแฝง
ใช้ get-alias cmdlet เพื่อรับนามแฝงทั้งหมดที่มีอยู่ในเซสชันปัจจุบันของ powershell
Get-Alias
คุณจะเห็นผลลัพธ์ต่อไปนี้
CommandType Name Definition
----------- ---- ----------
Alias % ForEach-Object
Alias ? Where-Object
Alias ac Add-Content
Alias asnp Add-PSSnapIn
...
พิมพ์