คำสั่ง PowerShell ที่คุณต้องรู้
PowerShell มีประสิทธิภาพมากและสามารถทำให้งานประจำวันของคุณง่ายขึ้นมาก
ด้วยโมดูลทั้งหมดที่คุณสามารถโหลดได้ มีคำสั่ง PowerShell มากมาย แต่คำสั่ง PowerShell ที่คุณต้องรู้คืออะไร?
คำสั่งบางคำสั่งที่คุณอาจรู้อยู่แล้ว แต่คุณรู้หรือไม่ว่าคุณสามารถเติมพารามิเตอร์ที่เป็นไปได้ทั้งหมดโดยอัตโนมัติโดยใช้คีย์ผสมได้ หรือค้นหาผ่านคำสั่งที่คุณป้อนไว้ก่อนหน้านี้?
ในบทความนี้ ฉันได้รวบรวมคำสั่ง PowerShell พื้นฐาน 10 อันดับแรกและคำสั่งที่มีประโยชน์ 25 คำสั่งที่จะช่วยคุณในการทำงานประจำวันได้อย่างแท้จริง หากคุณมีคำแนะนำอื่น ๆ โปรดเพิ่มลงในความคิดเห็นด้านล่าง!
คำสั่ง PowerShell คืออะไร
คำสั่ง PowerShell หรือที่รู้จักกันดีในชื่อ cmdlets เป็นส่วนสำคัญของสคริปต์และโมดูล PowerShell Cmdlet ได้รับการออกแบบมาเพื่อทำงานเฉพาะ เช่น การดึงข้อมูล การแก้ไขการตั้งค่า หรือการสร้างอินสแตนซ์ใหม่
PowerShell cmdlet ได้รับการออกแบบมาให้ใช้งานง่ายและเป็นไปตามรูปแบบการตั้งชื่อที่สอดคล้องกัน ชื่อ Cmdlet ประกอบด้วยคำกริยาและคำนาม คั่นด้วยยัติภังค์ ตัวอย่างเช่น Get-Process cmdlet ใช้เพื่อดึงข้อมูลเกี่ยวกับกระบวนการที่ทำงานอยู่ ในขณะที่ Set-ExecutionPolicy cmdlet ใช้เพื่อแก้ไขนโยบายการดำเนินการ PowerShell
PowerShell ยังรองรับการเรียกใช้เครื่องมือบรรทัดคำสั่งและสคริปต์แบบดั้งเดิม ช่วยให้ผู้ใช้สามารถใช้ประโยชน์จากเครื่องมือและสคริปต์ที่มีอยู่ภายในสคริปต์และโมดูล PowerShell
10 คำสั่ง PowerShell พื้นฐาน
เราจะเริ่มต้นด้วยคำสั่ง PowerShell พื้นฐาน 10 คำสั่งที่มีประโยชน์มากที่สุดระหว่างการทำงานประจำวันของคุณ การรู้คำสั่งเหล่านี้จะช่วยให้คุณใช้ประโยชน์จาก PowerShell ได้มากขึ้น และทำให้งานของคุณง่ายขึ้นมาก
- รับความช่วยเหลือ - แสดงข้อมูลความช่วยเหลือเกี่ยวกับ PowerShell cmdlets และแนวคิด
- รับคำสั่ง - แสดงรายการ cmdlets ที่มีอยู่ทั้งหมดใน PowerShell
- เขียน-โฮสต์ - เขียนเอาต์พุตโดยตรงไปยังคอนโซลหรือโฮสต์อื่น
- รับประวัติ - แสดงรายการคำสั่งที่ดำเนินการก่อนหน้านี้
- รับเนื้อหา - ดึงเนื้อหาของไฟล์หรือรายการอื่น ๆ
- ที่ไหน-วัตถุ - กรองวัตถุอินพุตตามเกณฑ์ที่ระบุ
- Format-List - จัดรูปแบบเอาต์พุตเป็นรายการ
- จัดรูปแบบตาราง - จัดรูปแบบเอาต์พุตเป็นตาราง
- Get-ChildItem - แสดงรายการในตำแหน่งที่ระบุ
- รับข้อมูลประจำตัว - แจ้งให้ผู้ใช้ใส่ข้อมูลรับรอง
1. รับความช่วยเหลือ
Get-Help cmdlet จะแสดงข้อมูลวิธีใช้โดยละเอียดเกี่ยวกับคำสั่ง PowerShell มันจะแสดงไวยากรณ์ของ cmdlet และพารามิเตอร์ที่คุณสามารถใช้ได้ เป็นวิธีที่ดีในการเรียนรู้เพิ่มเติมเกี่ยวกับ cmdlet ใหม่
ตัวอย่างเช่น เมื่อต้องการแสดงข้อมูลวิธีใช้เกี่ยวกับ cmdlet Get-Credential ให้เรียกใช้คำสั่งต่อไปนี้:
Get-Help Get-Credential
# Result
NAME
Get-Credential
SYNTAX
Get-Credential [-Credential] <pscredential> [<CommonParameters>]
Get-Credential [[-UserName] <string>] -Message <string> [<CommonParameters>]
ALIASES
Nonecmdlet ส่วนใหญ่มีตัวอย่างที่คุณสามารถดูได้โดยใช้คำสั่ง Get-Help หากต้องการดูตัวอย่าง คุณจะต้องเพิ่มพารามิเตอร์ -examples:
Get-Help Connect-ExchangeOnline -Examples
# Result
NAME
Connect-ExchangeOnline
SYNOPSIS
This cmdlet is available only in the Exchange Online PowerShell module. For more information, see About the Exchange Online PowerShell module (https://aka.ms/exov3-module).
-------------------------- Example 1 --------------------------
Connect-ExchangeOnline -UserPrincipalName chris@contoso.com
This example connects to Exchange Online PowerShell using modern authentication, with or without multi-factor authentication (MFA). We aren't using the UseRPSSession parameter, so the connection uses REST and doesn't require Basic authentication to be enabled in WinRM on the local computer.
-------------------------- Example 2 --------------------------
Connect-ExchangeOnline -UserPrincipalName chris@contoso.com -UseRPSSession2. รับคำสั่ง
Get-Command cmdlet แสดงรายการ cmdlet ทั้งหมดที่พร้อมใช้งานใน PowerShell คำสั่งนี้สามารถใช้เพื่อสำรวจ cmdlets ที่พร้อมใช้งาน และเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับพารามิเตอร์และการใช้งาน
หากต้องการแสดงรายการ cmdlet ที่มีอยู่ทั้งหมดที่มีคำว่า “กระบวนการ” อยู่ในชื่อ ให้รันคำสั่งต่อไปนี้:
Get-Command *process*3. เขียน-โฮสต์
Write-Host cmdlet เขียนเอาต์พุตโดยตรงไปยังคอนโซล คำสั่งนี้สามารถใช้เพื่อแสดงข้อมูลแก่ผู้ใช้หรือเพื่อแสดงข้อมูลเพื่อการแก้ไขปัญหา นอกจาก Write-Host แล้ว คุณยังสามารถใช้ Write-Warning เพื่อเขียนข้อความเตือน หรือใช้ Write-Error สำหรับข้อความแสดงข้อผิดพลาด
เพื่อเขียนข้อความ “Hello, World!” ไปที่คอนโซล ให้รันคำสั่งต่อไปนี้:
Write-Host "Hello, World!"4. รับประวัติ
เมื่อทำงานใน PowerShell คุณมักจะใช้ปุ่มลูกศรขึ้นเพื่อค้นหาคำสั่งที่คุณใช้ก่อนหน้านี้ ยิ่งคุณทำงานในเซสชัน PowerShell นานเท่าไร คุณอาจต้องดำเนินการตามคำสั่งมากขึ้นเท่านั้น
แต่คุณรู้หรือไม่ว่าคุณสามารถใช้ Get-History cmdlet เพื่อดูคำสั่งทั้งหมดที่คุณใช้ PowerShell ติดตามคำสั่งที่คุณป้อนระหว่างเซสชัน โดยค่าเริ่มต้น มันจะจำรายการสุดท้าย 4,096 รายการ!
เพียงพิมพ์ Get-History เพื่อดูคำสั่งล่าสุดทั้งหมดที่คุณใช้:
Get-Historyในตัวอย่างนี้ ฉันมีเพียง 8 รายการ ดังนั้นจึงง่ายต่อการค้นหาคำสั่งที่คุณต้องการ แต่เมื่อคุณมีรายการเพิ่ม ถือเป็นเรื่องดีที่รู้ว่าเราสามารถค้นหา/กรอง cmdlet Get-History ได้ด้วย โดยการวาง Where-object ลงไป:
Get-History | Where-Object {$_.Commandline -like "*EXOMailbox*"}
# Result
Id CommandLine
-- -----------
4 Get-EXOMailbox -Filter "RecipientType -eq 'UserMailbox'"
6 Get-EXOMailbox -Filter "RecipientType -eq 'UserMailbox'"
7 Get-EXOMailbox -Filter "RecipientType -eq 'UserMailbox'" | Select Name,EmailAddresses5. รับเนื้อหา
Get-Content cmdlet จะดึงเนื้อหาของไฟล์หรือรายการอื่น ๆ คำสั่งนี้สามารถใช้เพื่ออ่านเนื้อหาของไฟล์หรือเรียกข้อมูลประเภทอื่น
หากต้องการดึงเนื้อหาของไฟล์ชื่อ "example.txt" ให้รันคำสั่งต่อไปนี้:
Get-Content example.txt6. ที่ไหน-วัตถุ
cmdlet Where-Object กรองวัตถุที่ป้อนเข้าตามเกณฑ์ที่ระบุ คำสั่งนี้สามารถใช้เพื่อเลือกรายการเฉพาะจากชุดข้อมูลขนาดใหญ่ บ่อยครั้งเมื่อคุณดึงข้อมูลจากระบบหรือทรัพยากร จะมีการส่งกลับระเบียนมากกว่าหนึ่งรายการ ด้วยการไพพ์ Where-Object cmdlet ด้านหลัง เราสามารถกรองผลลัพธ์ได้
ตัวอย่างเช่น หากต้องการรับไฟล์ทั้งหมดที่มีขนาดใหญ่กว่า 10 MB จากไดเร็กทอรีที่กำหนด เราสามารถรันคำสั่งด้านล่างได้ Get-ChildItem จะได้รับไฟล์ทั้งหมด ในขณะที่ Where-Object cmdlet จะเลือกเฉพาะไฟล์ที่ใหญ่กว่า -gt ขนาดที่กำหนด
$path = "C:\temp\files\"
# Set file size
$sizeInMb = 10
# Calculate actual file size
$size = $sizeInMb*1024*1024
# Delete all files that are larger then given size
Get-ChildItem -Path $Path -Recurse -File | Where-Object { $_.length -gt $size }7. รูปแบบ-รายการ/รูปแบบ-ตาราง
Format-List และ Format-Table cmdlets จัดรูปแบบเอาต์พุตของคำสั่งเป็นรายการหรือตาราง การจัดรูปแบบเอาต์พุตทำให้อ่านผลลัพธ์ได้ง่ายขึ้น
Format-List หรือเรียกสั้นๆ ว่า fl มักใช้เมื่อคุณต้องการดูผลลัพธ์ทั้งหมดของ cmdlet Cmdlet ใน PowerShell มักจะส่งคืนเฉพาะข้อมูลที่เลือกเท่านั้น ด้วยการไพพ์ Format-List cmdlet ด้านหลัง คุณจะสามารถดูข้อมูลทั้งหมดได้ ตัวอย่างเช่น cmdlet Get-LocalUser ส่งคืนเฉพาะข้อมูลพื้นฐานของบัญชีผู้ใช้เท่านั้น:
Get-LocalUser Admin
# Result
Name Enabled Description
---- ------- -----------
admin Falseแต่เมื่อเราเพิ่ม Format-List ไว้ด้านหลัง เราจะเห็นข้อมูลทั้งหมดของบัญชีผู้ใช้:
Get-LocalUser Admin | fl
# Result
AccountExpires :
Description :
Enabled : False
FullName :
PasswordChangeableDate : 27-6-2019 12:20:44
PasswordExpires :
UserMayChangePassword : True
PasswordRequired : False
PasswordLastSet : 27-6-2019 12:20:44
LastLogon : 27-9-2022 13:43:46
Name : admin
SID : S-1-5-21-3190960386-960769250-3760335402-1001
PrincipalSource : LocalFormat-Table จะจัดรูปแบบผลลัพธ์ให้เป็นตาราง cmdlets ส่วนใหญ่ที่ส่งคืนหลายรายการจะจัดรูปแบบผลลัพธ์เป็นตารางตามค่าเริ่มต้น มิฉะนั้น คุณสามารถใช้ Format-Table cmdlet ได้ หากคอลัมน์ไม่พอดีกับคอนโซลของคุณ คุณสามารถเพิ่มพารามิเตอร์ -Autosize ลงใน cmdlet ได้
Get-Hotfix | ft -AutoSize9. รับ-ChildItem
คำสั่ง Get-ChildItem ใช้เพื่อดึงรายการไฟล์และ/หรือไดเร็กทอรีในพาธที่ระบุ คล้ายกับคำสั่ง dir ใน Command Prompt ข้อดีเฉพาะของ Get-ChildItem cmdlet คือเราสามารถใช้ตัวกรองและพารามิเตอร์อื่นๆ เพื่อเลือกเฉพาะผลลัพธ์ที่เราต้องการ
ตัวอย่างเช่น หากต้องการรับไฟล์ txt ทั้งหมดจากไดเร็กทอรี c:\test และเป็นโฟลเดอร์ย่อย เราสามารถใช้คำสั่งด้านล่างใน PowerShell:
Get-ChildItem -Path C:\Test\*.txt -Recurse10. รับข้อมูลรับรอง
คำสั่ง Get-Credential ใช้เพื่อแจ้งให้ผู้ใช้ระบุชื่อผู้ใช้และรหัสผ่าน โดยส่งคืนออบเจ็กต์ PSCredential ที่สามารถใช้เพื่อตรวจสอบสิทธิ์ผู้ใช้ในคำสั่งอื่น
$cred = Get-Credential
Connect-MsolService -Credential $credซึ่งจะแจ้งให้ผู้ใช้ใส่ชื่อผู้ใช้และรหัสผ่าน จากนั้นใช้ข้อมูลประจำตัวที่ส่งคืนเพื่อเชื่อมต่อกับ Microsoft Online Services
25 คำสั่ง PowerShell ที่มีประโยชน์
มีคำสั่ง PowerShell มากกว่า 200 รายการ ที่เราสามารถใช้ได้ ฉันจะไม่แสดงรายการทั้งหมดในบทความนี้ แต่นี่คือคำสั่ง 25 ที่มีประโยชน์ที่สุด สำหรับ PowerShell:
- รับ-สุ่ม: สร้างตัวเลขสุ่มหรือเลือกรายการสุ่มจากคอลเลกชัน
- รับเนื้อหา: ดึงเนื้อหาของไฟล์และส่งออกเป็นออบเจ็กต์ใน PowerShell
- รับคลิปบอร์ด: ดึงเนื้อหาของคลิปบอร์ด
- รับวันที่: ดึงข้อมูลวันที่และเวลาปัจจุบัน
- Out-File: ส่งเอาต์พุตไปยังไฟล์แทนคอนโซล
- Out-GridView: แสดงข้อมูลในมุมมองตารางเชิงโต้ตอบเพื่อการสำรวจที่ง่ายดาย
- นำเข้า-CSV: นำเข้าข้อมูลจากไฟล์ CSV และสร้างออบเจ็กต์ตามข้อมูล
- ส่งออก-CSV: ส่งออกข้อมูลเป็นไฟล์ CSV
- คัดลอกรายการ: คัดลอกไฟล์หรือไดเรกทอรีจากที่หนึ่งไปยังอีกที่หนึ่ง
- ย้ายรายการ: ย้ายไฟล์หรือไดเรกทอรีจากที่หนึ่งไปยังอีกที่หนึ่ง
- Remove-Item: ลบไฟล์หรือไดเร็กทอรี
- เส้นทางทดสอบ: ตรวจสอบว่ามีไฟล์หรือไดเรกทอรีอยู่ในตำแหน่งที่ระบุหรือไม่
- PSDrive ใหม่: สร้างไดรฟ์ PowerShell ใหม่ (นามแฝง) ที่แมปกับตำแหน่งในที่เก็บข้อมูล
- Enter-PSSession: สร้างเซสชันแบบโต้ตอบกับคอมพิวเตอร์ระยะไกล
- เริ่มกระบวนการ: เริ่มกระบวนการใหม่ (ปฏิบัติการ) บนเครื่องหรือคอมพิวเตอร์ระยะไกล
- Select-String: ค้นหารูปแบบข้อความในไฟล์หรือวัตถุอินพุต
- เริ่มการถอดเสียง: เริ่มบันทึกการถอดเสียงของเซสชัน PowerShell ปัจจุบัน
- Start-Sleep: ระงับการทำงานของสคริปต์หรือ cmdlet ตามเวลาที่กำหนด
- Measure-Command: วัดเวลาดำเนินการของบล็อกสคริปต์หรือคำสั่ง
- หน่วยวัด-วัตถุ: คำนวณคุณสมบัติทางสถิติของวัตถุ เช่น ผลรวม ค่าเฉลี่ย ค่าต่ำสุด หรือค่าสูงสุด
- เปรียบเทียบ-วัตถุ: เปรียบเทียบวัตถุสองชุดและแสดงความแตกต่าง
- แปลงเป็น HTML: แปลงวัตถุ PowerShell เป็นรูปแบบ HTML เพื่อให้แสดงผลได้ง่าย
- ConvertTo-SecureString: แปลงสตริงมาตรฐานที่เข้ารหัสให้เป็นสตริงที่ปลอดภัย
- Set-Alias: สร้างหรือเปลี่ยนนามแฝง (ทางลัด) สำหรับ cmdlet หรือคำสั่ง
- จัดเรียงวัตถุ: จัดเรียงวัตถุตามคุณสมบัติที่ระบุ
11. รับ-สุ่ม
เมื่อเขียนสคริปต์ ไม่ใช่เรื่องแปลกที่จะใช้ฟังก์ชันสุ่มเพื่อสร้างจำนวนเต็มแบบสุ่ม แต่ Get-Random cmdlet ใน PowerShell สามารถทำได้มากกว่าการสร้างจำนวนเต็ม นอกจากนี้ยังสามารถเลือกรายการสุ่มจากอาเรย์ได้อีกด้วย
Get-Random cmdlet ใช้คลาส RandomNumberGenerator ซึ่งช่วยให้สร้างการสุ่มที่ปลอดภัยด้วยการเข้ารหัส โดยจะส่งกลับจำนวนเต็มระหว่าง 0 ถึง 2,147,483,647 ตามค่าเริ่มต้น แต่แน่นอนว่าเราระบุค่าต่ำสุดและค่าสูงสุดไว้
Get-Random -Minimum -50 -Maximum 150
# Result
111Get-Random ยังสามารถใช้เพื่อเลือกรายการสุ่มจากอาร์เรย์:
$array = 'apple','pear','raspberry','kiwi','banana','melon','blueberry'
$array | Get-Random
# Result
raspberry12. รับเนื้อหา
Get-Content cmdlet อ่านเนื้อหาของไฟล์และส่งกลับเป็นวัตถุ คุณสามารถใช้ cmdlet นี้เพื่ออ่านไฟล์ข้อความ ไฟล์บันทึก และไฟล์ประเภทอื่นๆ ตามค่าเริ่มต้น Get-Content ส่งคืนเนื้อหาของไฟล์เป็นสตริงเดียว อย่างไรก็ตาม คุณสามารถใช้พารามิเตอร์ -Delimiter เพื่อแบ่งไฟล์ออกเป็นแต่ละบรรทัดหรือส่วนอื่นๆ ได้
เรียนรู้เพิ่มเติมเกี่ยวกับ Get-Content cmdlet ในบทความนี้
# Read the contents of a text file
Get-Content -Path "C:\Temp\example.txt"
# Read the contents of a file and display only the first 5 lines
Get-Content -Path "C:\Temp\example.txt" -TotalCount 5
13. รับคลิปบอร์ด
Get-Clipboard cmdlet ดึงข้อมูลเนื้อหาของคลิปบอร์ด Windows คุณสามารถใช้ cmdlet นี้เพื่อรับข้อความ รูปภาพ และข้อมูลประเภทอื่นๆ ที่ถูกคัดลอกไปยังคลิปบอร์ด
# Get the contents of the clipboard as text
Get-Clipboard -Format Text
# Get the contents of the clipboard as an image
Get-Clipboard -Format Imageแต่เราไม่เพียงดึงข้อมูลจากคลิปบอร์ดเท่านั้น เรายังสามารถคัดลอกข้อมูลไปยังคลิปบอร์ดด้วย PowerShell ได้อีกด้วย เพียงไพพ์ คลิป ด้านหลังคำสั่งของคุณเพื่อจัดเก็บผลลัพธ์ไว้ในคลิปบอร์ดของคุณ:
Get-Content -path "c:\temp\fruits.txt" | clipตอนนี้คุณสามารถวางเนื้อหาลงในโปรแกรมใดก็ได้ที่คุณต้องการ หากต้องการดู/วางเนื้อหาของคลิปบอร์ดใน PowerShell ให้ใช้ Get-Clipboard:
Get-Clipboard
# Result
BlueBerry;StrawBerry;BlackBerry;RaspBerry;CranBerry;14. รับวันที่
Get-Date cmdlet ส่งกลับวันที่และเวลาปัจจุบันบนเครื่องคอมพิวเตอร์ คุณสามารถใช้ cmdlet นี้เพื่อทำการคำนวณวันที่และเวลา และเพื่อแสดงวันที่และเวลาในรูปแบบเฉพาะ
ตรวจสอบให้แน่ใจว่าคุณอ่านบทความนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ Get-Date cmdlet
# Get the current date and time
Get-Date
# Get the date and time 10 days from now
Get-Date -Date (Get-Date).AddDays(10)
# Get the date and time in a specific format
Get-Date -Format "yyyy-MM-dd hh:mm:ss"15. ออกไฟล์
cmdlet Out-File ส่งออกไปยังไฟล์ คุณสามารถใช้ cmdlet นี้เพื่อบันทึกผลลัพธ์ของคำสั่งหรือสคริปต์ลงในไฟล์ข้อความ ไฟล์ CSV หรือไฟล์ประเภทอื่นๆ สำหรับไฟล์ CSV จะเป็นการดีกว่าถ้าใช้ cmdlet Export-CSV
# Save the output of a command to a text file
Get-Service | Out-File -FilePath "C:\Temp\services.txt"
# Save the output of a command to a CSV file
Get-Process | Select-Object Name, CPU | Out-File -FilePath "C:\Temp\processes.csv" -Encoding UTF8
16. ออก-GridView
เมื่อทดสอบสคริปต์หรือทำงานใน PowerShell เรามักจะส่งออกผลลัพธ์โดยตรงในคอนโซล เราสามารถจัดรูปแบบชุดผลลัพธ์เป็นตารางด้วยตารางรูปแบบหรือเป็นฟุตแบบสั้น แต่สำหรับชุดข้อมูลขนาดใหญ่ นี่ไม่ใช่ตัวเลือกที่ดีที่สุดเสมอไป ข้อมูลอาจถูกตัดทอนหรือคอลัมน์หายไปในภาพรวมของคุณ
เอาต์พุตมุมมองกริดเป็นวิธีแก้ปัญหาที่ยอดเยี่ยม มันจะส่งออกข้อมูลทั้งหมดในมุมมองที่สามารถค้นหาและจัดเรียงได้ดีในหน้าต่างใหม่ ตารางประกอบด้วยคอลัมน์ทั้งหมด ซึ่งคุณสามารถจัดเรียงและค้นหาได้
Get-EXOMailbox | Out-Gridviewที่มุมซ้ายบน คุณสามารถเพิ่มตัวกรองให้กับชุดผลลัพธ์ได้ ซึ่งช่วยให้คุณสามารถค้นหาข้อมูลที่ถูกต้องที่คุณต้องการได้อย่างง่ายดาย:
ตอนนี้ส่วนที่ดีที่สุดของ gridview ใน PowerShell เราสามารถเลือกรายการที่เราต้องการและส่งกลับไปยัง PowerShell สำหรับสิ่งนี้ คุณจะต้องเพิ่มพารามิเตอร์ -PassThru ลงใน cmdlet:
Get-EXOMailbox | Out-Gridview -PassThruเลือกเรกคอร์ดที่คุณต้องการแล้วกดตกลง คุณสามารถไพพ์ Select ไว้ด้านหลังหรือเก็บผลลัพธ์ไว้ในตัวแปรได้
17. นำเข้า-CSV
Import-CSV cmdlet ใช้เพื่อนำเข้าข้อมูลจากไฟล์ CSV ไปยัง PowerShell โดยจะแปลงข้อมูลไฟล์ CSV ให้เป็นวัตถุที่สามารถจัดการได้อย่างง่ายดายโดยใช้ cmdlets อื่น สิ่งนี้มีประโยชน์เมื่อคุณต้องการทำงานกับชุดข้อมูลขนาดใหญ่ที่จัดเก็บไว้ในไฟล์ CSV
อ่านเพิ่มเติมเกี่ยวกับ Import-CSV cmdlet ในบทความนี้
Import-CSV C:\data\employees.csv | Format-Table18. ส่งออก-CSV
คำสั่ง Export-CSV ยังเป็นหนึ่งในคำสั่งที่ใช้งานได้ดีเมื่อคุณดึงข้อมูลด้วย PowerShell เราทุกคนรู้ดีว่า Excel นั้นยอดเยี่ยมในการประมวลผลข้อมูลเพิ่มเติม คำสั่ง Export-CSV จะสร้างไฟล์ CSV จากข้อมูลของคุณ
เพิ่มพารามิเตอร์ NoTypeInformation และ Encoding ไว้ด้านหลัง รายการแรกจะลบข้อมูลส่วนหัวในไฟล์ CSV ของคุณ และรายการหลังจะตรวจสอบให้แน่ใจว่ามีการใช้การเข้ารหัสที่ถูกต้อง
อ่านเพิ่มเติมเกี่ยวกับการส่งออก-CSV ในบทความนี้
Get-EXOMailbox | Export-CSV -path c:\temp\mailbox.csv -NoTypeInformation -Encoding UTF819. คัดลอกรายการ
Copy-Item cmdlet ใช้เพื่อคัดลอกไฟล์และไดเรกทอรีจากที่หนึ่งไปยังอีกที่หนึ่ง ช่วยให้คุณสามารถระบุตำแหน่งต้นทางและปลายทางและยังมีตัวเลือกในการเขียนทับไฟล์ที่มีอยู่หรือคงคุณลักษณะไว้ สิ่งนี้มีประโยชน์เมื่อคุณต้องการสำรองหรือถ่ายโอนไฟล์และไดเร็กทอรี
เรียนรู้เพิ่มเติมเกี่ยวกับ Copy-Item cmdlet ในบทความนี้
ตัวอย่างเช่น คำสั่งด้านล่างนี้จะสร้างสำเนาของโฟลเดอร์เอกสารไปยังโฟลเดอร์ d:\backup
Copy-Item -Path C:\data\documents -Destination d:\backup -Recurse20. ย้ายรายการ
นอกจากนี้เรายังสามารถย้ายรายการด้วย PowerShell ด้วยความช่วยเหลือของ cmdlet Move-Item คล้ายกับ Copy-Item cmdlet แต่แทนที่จะสร้างสำเนา จะย้ายไฟล์และไดเร็กทอรีไปยังตำแหน่งใหม่ สิ่งนี้มีประโยชน์เมื่อคุณต้องการย้ายไฟล์และไดเร็กทอรีภายในคอมพิวเตอร์ของคุณหรือระหว่างคอมพิวเตอร์เครื่องอื่น
สมมติว่าคุณต้องการย้ายไฟล์ชื่อ 'report.docx' จากเดสก์ท็อปของคุณไปยังโฟลเดอร์ชื่อ 'documents' คุณสามารถใช้คำสั่งต่อไปนี้เพื่อย้ายไฟล์ไปยังโฟลเดอร์ 'documents'
Move-Item -Path C:\users\username\desktop\report.docx -Destination C:\data\documents21. ลบรายการ
Remove-Item cmdlet ใช้เพื่อลบไฟล์หรือไดเร็กทอรี นอกจากนี้ยังสามารถลบไฟล์ภายในไดเร็กทอรีและไดเร็กทอรีย่อยได้ด้วย คุณสามารถใช้พารามิเตอร์ -Recurse เพื่อลบไดเรกทอรีและเนื้อหาซ้ำๆ นอกจากนี้ยังสามารถลบไฟล์แบบอ่านอย่างเดียว ไฟล์ที่ซ่อน และไฟล์ระบบได้ด้วย อย่างไรก็ตาม ระบบจะแจ้งให้คุณยืนยันก่อนที่จะลบไฟล์แบบอ่านอย่างเดียวหรือไฟล์ที่ซ่อน
เรียนรู้เพิ่มเติมเกี่ยวกับ Remove-Item cmdlet ในบทความนี้
หากต้องการลบไฟล์คุณสามารถใช้คำสั่งต่อไปนี้:
Remove-Item C:\Temp\file.txt22. เส้นทางทดสอบ
Test-Path cmdlet ใช้เพื่อตรวจสอบว่ามีไฟล์หรือไดเร็กทอรีอยู่ในตำแหน่งที่ระบุหรือไม่ จะส่งกลับ True หากมีไฟล์หรือไดเร็กทอรีอยู่ และจะส่งกลับ False หากไม่มีอยู่ เมื่อทำงานกับไฟล์หรือไดเร็กทอรี คุณควรใช้ cmdlet เป็นจำนวนมาก อ่านทั้งหมดเกี่ยวกับ Test-Path cmdlet ในบทความนี้
หากต้องการตรวจสอบว่ามีไฟล์อยู่หรือไม่ คุณสามารถใช้คำสั่งต่อไปนี้:
Test-Path C:\Temp\file.txt23. ใหม่-PSDrive
New-PSDrive cmdlet ใช้เพื่อสร้างไดรฟ์ Windows PowerShell ใหม่ที่ถูก "แมป" กับตำแหน่งในที่เก็บข้อมูล เช่น ไดรฟ์เครือข่าย ไดเรกทอรีบนเครื่องคอมพิวเตอร์เฉพาะที่ หรือรีจิสทรี สำคัญ. ไดรฟ์ที่สร้างขึ้นจะทำงานเหมือนกับไดรฟ์ Windows ปกติ และสามารถเข้าถึงได้โดยใช้คำสั่ง Windows มาตรฐาน
ตัวอย่างเช่น หากต้องการสร้างไดรฟ์ใหม่ที่แมปกับการแชร์เครือข่าย คุณสามารถใช้คำสั่งด้านล่างใน PowerShell เรียนรู้เพิ่มเติมเกี่ยวกับ New-PSDrive cmdlet ในบทความนี้
New-PSDrive -Name "N" -PSProvider FileSystem -Root "\\Server\Share"24. เข้าสู่ PSSession
ต้องการเรียกใช้คำสั่ง PowerShell บนเซิร์ฟเวอร์หรือไม่ ส่วนใหญ่เปิดเดสก์ท็อประยะไกลเพื่อเริ่มเซสชัน PowerShell บนเซิร์ฟเวอร์ แต่จริงๆ แล้วไม่จำเป็นเลย ด้วย PowerShell เราสามารถเริ่มเซสชันแบบโต้ตอบกับคอมพิวเตอร์ระยะไกลโดยใช้ Enter-PSSession cmdlet
หากต้องการเริ่มเซสชันแบบโต้ตอบ เพียงพิมพ์:
Enter-PSSession -Computername LazySrvLab02
# Result
[LazySrvLab02]: PS C:\>ตอนนี้คุณสามารถรันคำสั่ง PowerShell บนเซิร์ฟเวอร์ได้ เช่นเดียวกับที่คุณกำลังทำงานบนเซิร์ฟเวอร์โดยตรง หากคุณต้องการตรวจสอบสิทธิ์ด้วยข้อมูลประจำตัวอื่น ให้ใช้พารามิเตอร์ -credential เพื่อระบุชื่อผู้ใช้ที่คุณต้องการใช้ คุณจะได้รับแจ้งให้ใส่รหัสผ่าน
หากต้องการออกจากเซสชันระยะไกล ให้พิมพ์ Exit-PSSession
25. เริ่มกระบวนการ
Start-Process cmdlet ใช้เพื่อเริ่มกระบวนการใหม่ เช่น ไฟล์ปฏิบัติการหรือสคริปต์ และอาจเลือกที่จะส่งผ่านอาร์กิวเมนต์ก็ได้ คุณสามารถระบุพาธของไฟล์ อาร์กิวเมนต์ ไดเร็กทอรีการทำงาน และพารามิเตอร์อื่นๆ เมื่อเริ่มต้นกระบวนการ cmdlet นี้มีประโยชน์เมื่อคุณต้องการเริ่มกระบวนการจากสคริปต์หรือบรรทัดคำสั่ง
Start-Process -FilePath "C:\Program Files\MyApp\MyApp.exe" -ArgumentList "-Option1", "-Option2"26. เลือก-สตริง
Select-String cmdlet ค้นหาผ่านอินพุตที่กำหนด (ไฟล์ข้อความ สตริง ฯลฯ) เพื่อหารูปแบบสตริงที่เฉพาะเจาะจง และส่งออกบรรทัดใดๆ ที่ตรงกับรูปแบบ ซึ่งคล้ายกับคำสั่ง grep ในระบบ Unix/Linux
สมมติว่าคุณมีไฟล์บันทึกที่คุณต้องการค้นหาบรรทัดที่มีคำว่า "ข้อผิดพลาด" คุณสามารถใช้ Select-String เพื่อทำสิ่งนี้ คำสั่งด้านล่างจะค้นหาในไฟล์บันทึกและส่งออกบรรทัดที่มีคำว่า "ข้อผิดพลาด" อ่านเพิ่มเติมเกี่ยวกับคำสั่ง PowerShell Select-String ในบทความนี้
Select-String -Path C:\logs\logfile.txt -Pattern "error"27. เริ่มการถอดเสียง
Start-Transcript cmdlet สร้างการถอดเสียงของเซสชัน PowerShell ซึ่งรวมถึงคำสั่งทั้งหมดที่ป้อนและเอาต์พุต การถอดเสียงจะถูกบันทึกลงในไฟล์ข้อความ
หากต้องการสร้างข้อความถอดเสียง คุณจะต้องเรียกใช้คำสั่งด้านล่างเพื่อเริ่มการบันทึก เมื่อเสร็จแล้ว คุณสามารถใช้ cmdlet Stop-Transcript ได้ เรียนรู้เพิ่มเติมเกี่ยวกับ Start-Transcript ในบทความนี้
Start-Transcript -Path C:\transcript.txt28. เริ่ม-สลีป
Start-Sleep cmdlet หยุดเซสชัน PowerShell ชั่วคราวตามระยะเวลาที่กำหนด สิ่งนี้มีประโยชน์สำหรับการสร้างสคริปต์ที่ต้องรอระยะเวลาหนึ่งก่อนที่จะดำเนินการคำสั่งถัดไป
คำสั่งด้านล่างหยุดสคริปต์ชั่วคราวเป็นเวลา 10 วินาที เรียนรู้เพิ่มเติมเกี่ยวกับคำสั่ง PowerShell Start-Sleep ในบทความนี้:
Start-Sleep -Seconds 1029. คำสั่งวัด
Measure-Command cmdlet วัดเวลาที่ใช้สำหรับคำสั่งในการรัน สิ่งนี้มีประโยชน์สำหรับการเพิ่มประสิทธิภาพสคริปต์และการระบุจุดคอขวดของประสิทธิภาพ
สมมติว่าคุณมีสคริปต์ที่คุณต้องการเพิ่มประสิทธิภาพ คุณสามารถใช้ Measure-Command เพื่อวัดเวลาที่ใช้ในการรันคำสั่งเฉพาะ ตัวอย่างเช่น คำสั่งต่อไปนี้จะวัดเวลาที่ใช้ในการคัดลอกไฟล์จากที่หนึ่งไปยังอีกที่หนึ่ง:
Measure-Command {Copy-Item -Path C:\files\file.txt -Destination D:\backup\file.txt}ผลลัพธ์ของคำสั่งจะแสดงเวลาที่ผ่านไป รวมถึงสถิติอื่นๆ เช่น เวลา CPU ที่ใช้ และจำนวนการรวบรวมขยะที่ดำเนินการ
30. วัด-วัตถุ
Measure-Object cmdlet คำนวณคุณสมบัติของวัตถุที่เป็นตัวเลข เช่น ผลรวม ค่าเฉลี่ย ค่าต่ำสุด ค่าสูงสุด และส่วนเบี่ยงเบนมาตรฐาน มีประโยชน์สำหรับการวิเคราะห์ผลลัพธ์ของคำสั่ง PowerShell อื่นๆ
สมมติว่าเราต้องการคำนวณขนาดเฉลี่ยของไฟล์ทั้งหมดในไดเร็กทอรี เราสามารถใช้ Get-ChildItem cmdlet เพื่อดึงไฟล์ในไดเร็กทอรีและไปป์เอาต์พุตไปยัง Measure-Object cmdlet เพื่อคำนวณขนาดเฉลี่ย:
Get-ChildItem C:\temp | Measure-Object -Property Length -Average31. เปรียบเทียบวัตถุ
Compare-Object cmdlet เปรียบเทียบสองชุดของวัตถุและส่งกลับค่าความแตกต่าง มีประโยชน์สำหรับการค้นหาความแตกต่างระหว่างข้อมูลสองชุด
ตัวอย่างเช่น ลองเปรียบเทียบกับอาร์เรย์กับผลไม้:
$fruits = "apple","kiwi","pear"
$basket = "kiwi","raspbery"
Compare-Object -IncludeEqual $fruit $basket
# Result
InputObject SideIndicator
----------- -------------
kiwi ==
raspbery =>
grape <=
pear <=32. แปลงเป็น Html
ConvertTo-Html cmdlet จะแปลงวัตถุ PowerShell เป็นรูปแบบ HTML มีประโยชน์สำหรับการสร้างรายงานและการแสดงข้อมูลในรูปแบบที่อ่านง่ายขึ้น
สมมติว่าเราต้องการสร้างรายงาน HTML ของกระบวนการที่ทำงานอยู่บนเครื่องคอมพิวเตอร์ เราสามารถใช้ Get-Process cmdlet เพื่อดึงข้อมูลกระบวนการที่ทำงานอยู่และไปป์เอาต์พุตไปยัง ConvertTo-Html cmdlet เพื่อสร้างรายงาน HTML:
Get-Process | ConvertTo-Html | Out-File C:\temp\processes.html33. แปลงเป็น SecureString
ConvertTo-SecureString cmdlet จะแปลงสตริงข้อความธรรมดาเป็นสตริงที่ปลอดภัยซึ่งสามารถใช้เพื่อจัดเก็บข้อมูลที่ละเอียดอ่อน เช่น รหัสผ่านหรือคีย์ API ได้อย่างปลอดภัยยิ่งขึ้น มันมีประโยชน์ในการป้องกันการเข้าถึงข้อมูลที่ละเอียดอ่อนโดยไม่ได้รับอนุญาต
เช่น เราต้องการเก็บรหัสผ่านไว้ในตัวแปรเพื่อใช้ในสคริปต์ เราสามารถใช้ Read-Host cmdlet เพื่อแจ้งให้ผู้ใช้ใส่รหัสผ่าน จากนั้นไปป์เอาต์พุตไปที่ ConvertTo-SecureString cmdlet เพื่อแปลงเป็นสตริงที่ปลอดภัย:
$password = Read-Host "Enter password" -AsSecureString
$cred = New-Object System.Management.Automation.PSCredential ("username", $password)34. ชุดนามแฝง
Set-Alias cmdlet สร้างหรือเปลี่ยนนามแฝง (ชื่อสำรอง) สำหรับ cmdlet หรือองค์ประกอบคำสั่งอื่น ๆ ในเซสชัน PowerShell ปัจจุบัน ซึ่งสามารถช่วยประหยัดเวลาในการพิมพ์ชื่อคำสั่งแบบยาวหรือสร้างตัวย่อที่กำหนดเองสำหรับคำสั่งที่ใช้บ่อย
ในตัวอย่างนี้ เราสร้างนามแฝง l สำหรับคำสั่ง ls ตอนนี้แทนที่จะพิมพ์ ls เพื่อแสดงรายการไฟล์ เราก็สามารถพิมพ์ l ได้เลย
Set-Alias -Name l -Value ls35. เรียงลำดับวัตถุ
Sort-Object cmdlet เรียงลำดับวัตถุจากน้อยไปหามากหรือจากมากไปน้อยตามคุณสมบัติอย่างน้อยหนึ่งอย่าง สามารถใช้เพื่อเรียงลำดับวัตถุประเภทใดก็ได้ เช่น ไฟล์ ไดเรกทอรี รีจิสตรีคีย์ หรือวัตถุ PowerShell
ในตัวอย่างนี้ เราใช้ Get-ChildItem เพื่อรับรายการไฟล์และไดเรกทอรีในไดเรกทอรีปัจจุบัน จากนั้นเราจะไปป์เอาต์พุตนั้นไปที่ Sort-Object เพื่อเรียงลำดับรายการตามชื่อจากมากไปน้อย และสุดท้ายใช้ Select-Object เพื่อแสดงเฉพาะ 10 รายการแรกในรายการที่เรียงลำดับ .
Get-ChildItem | Sort-Object -Property Name -Descending | Select-Object -First 10เคล็ดลับโบนัส
Ctrl + ช่องว่าง
นี่ไม่ใช่คำสั่ง PowerShell จริงๆ แต่คุณหวังว่าคุณจะรู้เกี่ยวกับชุดคีย์นี้ก่อนหน้านี้ เมื่อใช้ cmdlet เรามักจะพิมพ์ยัติภังค์ - จากนั้นกดแท็บผ่านพารามิเตอร์ที่เป็นไปได้ทั้งหมดที่ cmdlet มี
แต่คุณรู้หรือไม่ว่าคุณสามารถดูพารามิเตอร์ทั้งหมดได้ในคราวเดียว หากต้องการลองใช้ ให้พิมพ์ cmdlet แล้วกด Ctrl + Space:
มันจะแสดงคำนามและพารามิเตอร์ทั้งหมดที่คุณสามารถใช้กับ cmdlet ตอนนี้การกด Ctrl + Space เป็นวิธีที่คุณจะต้องคุ้นเคย แต่คุณสามารถตั้งค่าต่อไปนี้ในโปรไฟล์ PowerShell ของคุณ:
Set-PSReadlineKeyHandler -Key Tab -Function Completeวิธีนี้คุณจะต้องพิมพ์ยัติภังค์แล้ว กด Tab สองครั้ง เพื่อแสดงรายการพารามิเตอร์ทั้งหมด
ตั้งค่า StrictMode
คำสั่ง Set-StrictMode ใน PowerShell จะสร้างและบังคับใช้กฎการเข้ารหัส ตามค่าเริ่มต้น โหมดเข้มงวดจะถูกปิดและอาจทำให้เกิดความยุ่งเหยิงได้ เมื่อปิดโหมดเข้มงวด PowerShell จะคุกคามตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้นเป็น $null หรือ 0 เป็นต้น
หมายเหตุรหัสต่อไปนี้:
$username = 'adelev'
Get-EXOMailbox $usename | Set-mailbox -Hiddenfromaddresslist:$trueในตัวอย่างข้างต้น ฉันสะกดตัวแปร $username ในคำสั่ง Get-ExoMailbox ผิด หากไม่ได้เปิดใช้งานโหมดเข้มงวด PowerShell จะจัดการตัวแปรที่สะกดผิด $usename เป็น $null โดยผลลัพธ์ที่ cmdlet จะได้รับกล่องจดหมายทั้งหมดและซ่อนทั้งหมดจาก รายการที่อยู่
เมื่อคุณตั้งค่า StrictMode เป็นเวอร์ชัน 2 PowerShell จะส่งข้อผิดพลาดที่ไม่ได้ตั้งค่าตัวแปรแทน
Set-StrictMode -Version 2ฉันขอแนะนำให้เพิ่มคำสั่ง Set-StrictMode -Version 2 ไปยังโปรไฟล์ PowerShell ของคุณ
ห่อขึ้น
ด้วย PowerShell เราสามารถเรียนรู้สิ่งใหม่ๆ ได้ตลอดเวลา และปรับปรุงสคริปต์หรือวิธีการทำงานของเรา เพื่อให้งานของเราง่ายขึ้น คำสั่ง PowerShell เหล่านี้สามารถช่วยคุณได้จริงๆ คำสั่งเช่น Set-StrictMode และฟังก์ชันเติมข้อความอัตโนมัติทั้งหมดถือเป็นคำสั่งที่ดีที่สุดอย่างหนึ่งที่ควรทราบและใช้งาน
ฉันหวังว่าคุณจะพบว่ารายการนี้พร้อมคำสั่ง PowerShell มีประโยชน์ หรือหากคุณมีคำถามหรือข้อเสนอแนะ โปรดแสดงความคิดเห็นด้านล่าง







