ค้นหาเว็บไซต์

คำสั่ง 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 ได้มากขึ้น และทำให้งานของคุณง่ายขึ้นมาก

  1. รับความช่วยเหลือ - แสดงข้อมูลความช่วยเหลือเกี่ยวกับ PowerShell cmdlets และแนวคิด
  2. รับคำสั่ง - แสดงรายการ cmdlets ที่มีอยู่ทั้งหมดใน PowerShell
  3. เขียน-โฮสต์ - เขียนเอาต์พุตโดยตรงไปยังคอนโซลหรือโฮสต์อื่น
  4. รับประวัติ - แสดงรายการคำสั่งที่ดำเนินการก่อนหน้านี้
  5. รับเนื้อหา - ดึงเนื้อหาของไฟล์หรือรายการอื่น ๆ
  6. ที่ไหน-วัตถุ - กรองวัตถุอินพุตตามเกณฑ์ที่ระบุ
  7. Format-List - จัดรูปแบบเอาต์พุตเป็นรายการ
  8. จัดรูปแบบตาราง - จัดรูปแบบเอาต์พุตเป็นตาราง
  9. Get-ChildItem - แสดงรายการในตำแหน่งที่ระบุ
  10. รับข้อมูลประจำตัว - แจ้งให้ผู้ใช้ใส่ข้อมูลรับรอง

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
    None

cmdlet ส่วนใหญ่มีตัวอย่างที่คุณสามารถดูได้โดยใช้คำสั่ง 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 -UseRPSSession

2. รับคำสั่ง

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,EmailAddresses

5. รับเนื้อหา

Get-Content cmdlet จะดึงเนื้อหาของไฟล์หรือรายการอื่น ๆ คำสั่งนี้สามารถใช้เพื่ออ่านเนื้อหาของไฟล์หรือเรียกข้อมูลประเภทอื่น

หากต้องการดึงเนื้อหาของไฟล์ชื่อ "example.txt" ให้รันคำสั่งต่อไปนี้:

Get-Content example.txt

6. ที่ไหน-วัตถุ

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        : Local

Format-Table จะจัดรูปแบบผลลัพธ์ให้เป็นตาราง cmdlets ส่วนใหญ่ที่ส่งคืนหลายรายการจะจัดรูปแบบผลลัพธ์เป็นตารางตามค่าเริ่มต้น มิฉะนั้น คุณสามารถใช้ Format-Table cmdlet ได้ หากคอลัมน์ไม่พอดีกับคอนโซลของคุณ คุณสามารถเพิ่มพารามิเตอร์ -Autosize ลงใน cmdlet ได้

Get-Hotfix | ft -AutoSize

9. รับ-ChildItem

คำสั่ง Get-ChildItem ใช้เพื่อดึงรายการไฟล์และ/หรือไดเร็กทอรีในพาธที่ระบุ คล้ายกับคำสั่ง dir ใน Command Prompt ข้อดีเฉพาะของ Get-ChildItem cmdlet คือเราสามารถใช้ตัวกรองและพารามิเตอร์อื่นๆ เพื่อเลือกเฉพาะผลลัพธ์ที่เราต้องการ

ตัวอย่างเช่น หากต้องการรับไฟล์ txt ทั้งหมดจากไดเร็กทอรี c:\test และเป็นโฟลเดอร์ย่อย เราสามารถใช้คำสั่งด้านล่างใน PowerShell:

Get-ChildItem -Path C:\Test\*.txt -Recurse

10. รับข้อมูลรับรอง

คำสั่ง Get-Credential ใช้เพื่อแจ้งให้ผู้ใช้ระบุชื่อผู้ใช้และรหัสผ่าน โดยส่งคืนออบเจ็กต์ PSCredential ที่สามารถใช้เพื่อตรวจสอบสิทธิ์ผู้ใช้ในคำสั่งอื่น

$cred = Get-Credential
Connect-MsolService -Credential $cred

ซึ่งจะแจ้งให้ผู้ใช้ใส่ชื่อผู้ใช้และรหัสผ่าน จากนั้นใช้ข้อมูลประจำตัวที่ส่งคืนเพื่อเชื่อมต่อกับ Microsoft Online Services

25 คำสั่ง PowerShell ที่มีประโยชน์

มีคำสั่ง PowerShell มากกว่า 200 รายการ ที่เราสามารถใช้ได้ ฉันจะไม่แสดงรายการทั้งหมดในบทความนี้ แต่นี่คือคำสั่ง 25 ที่มีประโยชน์ที่สุด สำหรับ PowerShell:

  1. รับ-สุ่ม: สร้างตัวเลขสุ่มหรือเลือกรายการสุ่มจากคอลเลกชัน
  2. รับเนื้อหา: ดึงเนื้อหาของไฟล์และส่งออกเป็นออบเจ็กต์ใน PowerShell
  3. รับคลิปบอร์ด: ดึงเนื้อหาของคลิปบอร์ด
  4. รับวันที่: ดึงข้อมูลวันที่และเวลาปัจจุบัน
  5. Out-File: ส่งเอาต์พุตไปยังไฟล์แทนคอนโซล
  6. Out-GridView: แสดงข้อมูลในมุมมองตารางเชิงโต้ตอบเพื่อการสำรวจที่ง่ายดาย
  7. นำเข้า-CSV: นำเข้าข้อมูลจากไฟล์ CSV และสร้างออบเจ็กต์ตามข้อมูล
  8. ส่งออก-CSV: ส่งออกข้อมูลเป็นไฟล์ CSV
  9. คัดลอกรายการ: คัดลอกไฟล์หรือไดเรกทอรีจากที่หนึ่งไปยังอีกที่หนึ่ง
  10. ย้ายรายการ: ย้ายไฟล์หรือไดเรกทอรีจากที่หนึ่งไปยังอีกที่หนึ่ง
  11. Remove-Item: ลบไฟล์หรือไดเร็กทอรี
  12. เส้นทางทดสอบ: ตรวจสอบว่ามีไฟล์หรือไดเรกทอรีอยู่ในตำแหน่งที่ระบุหรือไม่
  13. PSDrive ใหม่: สร้างไดรฟ์ PowerShell ใหม่ (นามแฝง) ที่แมปกับตำแหน่งในที่เก็บข้อมูล
  14. Enter-PSSession: สร้างเซสชันแบบโต้ตอบกับคอมพิวเตอร์ระยะไกล
  15. เริ่มกระบวนการ: เริ่มกระบวนการใหม่ (ปฏิบัติการ) บนเครื่องหรือคอมพิวเตอร์ระยะไกล
  16. Select-String: ค้นหารูปแบบข้อความในไฟล์หรือวัตถุอินพุต
  17. เริ่มการถอดเสียง: เริ่มบันทึกการถอดเสียงของเซสชัน PowerShell ปัจจุบัน
  18. Start-Sleep: ระงับการทำงานของสคริปต์หรือ cmdlet ตามเวลาที่กำหนด
  19. Measure-Command: วัดเวลาดำเนินการของบล็อกสคริปต์หรือคำสั่ง
  20. หน่วยวัด-วัตถุ: คำนวณคุณสมบัติทางสถิติของวัตถุ เช่น ผลรวม ค่าเฉลี่ย ค่าต่ำสุด หรือค่าสูงสุด
  21. เปรียบเทียบ-วัตถุ: เปรียบเทียบวัตถุสองชุดและแสดงความแตกต่าง
  22. แปลงเป็น HTML: แปลงวัตถุ PowerShell เป็นรูปแบบ HTML เพื่อให้แสดงผลได้ง่าย
  23. ConvertTo-SecureString: แปลงสตริงมาตรฐานที่เข้ารหัสให้เป็นสตริงที่ปลอดภัย
  24. Set-Alias: สร้างหรือเปลี่ยนนามแฝง (ทางลัด) สำหรับ cmdlet หรือคำสั่ง
  25. จัดเรียงวัตถุ: จัดเรียงวัตถุตามคุณสมบัติที่ระบุ

11. รับ-สุ่ม

เมื่อเขียนสคริปต์ ไม่ใช่เรื่องแปลกที่จะใช้ฟังก์ชันสุ่มเพื่อสร้างจำนวนเต็มแบบสุ่ม แต่ Get-Random cmdlet ใน PowerShell สามารถทำได้มากกว่าการสร้างจำนวนเต็ม นอกจากนี้ยังสามารถเลือกรายการสุ่มจากอาเรย์ได้อีกด้วย

Get-Random cmdlet ใช้คลาส RandomNumberGenerator ซึ่งช่วยให้สร้างการสุ่มที่ปลอดภัยด้วยการเข้ารหัส โดยจะส่งกลับจำนวนเต็มระหว่าง 0 ถึง 2,147,483,647 ตามค่าเริ่มต้น แต่แน่นอนว่าเราระบุค่าต่ำสุดและค่าสูงสุดไว้

Get-Random -Minimum -50 -Maximum 150

# Result
111

Get-Random ยังสามารถใช้เพื่อเลือกรายการสุ่มจากอาร์เรย์:

$array = 'apple','pear','raspberry','kiwi','banana','melon','blueberry'

$array | Get-Random

# Result
raspberry

12. รับเนื้อหา

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-Table

18. ส่งออก-CSV

คำสั่ง Export-CSV ยังเป็นหนึ่งในคำสั่งที่ใช้งานได้ดีเมื่อคุณดึงข้อมูลด้วย PowerShell เราทุกคนรู้ดีว่า Excel นั้นยอดเยี่ยมในการประมวลผลข้อมูลเพิ่มเติม คำสั่ง Export-CSV จะสร้างไฟล์ CSV จากข้อมูลของคุณ

เพิ่มพารามิเตอร์ NoTypeInformation และ Encoding ไว้ด้านหลัง รายการแรกจะลบข้อมูลส่วนหัวในไฟล์ CSV ของคุณ และรายการหลังจะตรวจสอบให้แน่ใจว่ามีการใช้การเข้ารหัสที่ถูกต้อง

อ่านเพิ่มเติมเกี่ยวกับการส่งออก-CSV ในบทความนี้

Get-EXOMailbox | Export-CSV -path c:\temp\mailbox.csv -NoTypeInformation -Encoding UTF8

19. คัดลอกรายการ

Copy-Item cmdlet ใช้เพื่อคัดลอกไฟล์และไดเรกทอรีจากที่หนึ่งไปยังอีกที่หนึ่ง ช่วยให้คุณสามารถระบุตำแหน่งต้นทางและปลายทางและยังมีตัวเลือกในการเขียนทับไฟล์ที่มีอยู่หรือคงคุณลักษณะไว้ สิ่งนี้มีประโยชน์เมื่อคุณต้องการสำรองหรือถ่ายโอนไฟล์และไดเร็กทอรี

เรียนรู้เพิ่มเติมเกี่ยวกับ Copy-Item cmdlet ในบทความนี้

ตัวอย่างเช่น คำสั่งด้านล่างนี้จะสร้างสำเนาของโฟลเดอร์เอกสารไปยังโฟลเดอร์ d:\backup

Copy-Item -Path C:\data\documents -Destination d:\backup -Recurse

20. ย้ายรายการ

นอกจากนี้เรายังสามารถย้ายรายการด้วย PowerShell ด้วยความช่วยเหลือของ cmdlet Move-Item คล้ายกับ Copy-Item cmdlet แต่แทนที่จะสร้างสำเนา จะย้ายไฟล์และไดเร็กทอรีไปยังตำแหน่งใหม่ สิ่งนี้มีประโยชน์เมื่อคุณต้องการย้ายไฟล์และไดเร็กทอรีภายในคอมพิวเตอร์ของคุณหรือระหว่างคอมพิวเตอร์เครื่องอื่น

สมมติว่าคุณต้องการย้ายไฟล์ชื่อ 'report.docx' จากเดสก์ท็อปของคุณไปยังโฟลเดอร์ชื่อ 'documents' คุณสามารถใช้คำสั่งต่อไปนี้เพื่อย้ายไฟล์ไปยังโฟลเดอร์ 'documents'

Move-Item -Path C:\users\username\desktop\report.docx -Destination C:\data\documents

21. ลบรายการ

Remove-Item cmdlet ใช้เพื่อลบไฟล์หรือไดเร็กทอรี นอกจากนี้ยังสามารถลบไฟล์ภายในไดเร็กทอรีและไดเร็กทอรีย่อยได้ด้วย คุณสามารถใช้พารามิเตอร์ -Recurse เพื่อลบไดเรกทอรีและเนื้อหาซ้ำๆ นอกจากนี้ยังสามารถลบไฟล์แบบอ่านอย่างเดียว ไฟล์ที่ซ่อน และไฟล์ระบบได้ด้วย อย่างไรก็ตาม ระบบจะแจ้งให้คุณยืนยันก่อนที่จะลบไฟล์แบบอ่านอย่างเดียวหรือไฟล์ที่ซ่อน

เรียนรู้เพิ่มเติมเกี่ยวกับ Remove-Item cmdlet ในบทความนี้

หากต้องการลบไฟล์คุณสามารถใช้คำสั่งต่อไปนี้:

Remove-Item C:\Temp\file.txt

22. เส้นทางทดสอบ

Test-Path cmdlet ใช้เพื่อตรวจสอบว่ามีไฟล์หรือไดเร็กทอรีอยู่ในตำแหน่งที่ระบุหรือไม่ จะส่งกลับ True หากมีไฟล์หรือไดเร็กทอรีอยู่ และจะส่งกลับ False หากไม่มีอยู่ เมื่อทำงานกับไฟล์หรือไดเร็กทอรี คุณควรใช้ cmdlet เป็นจำนวนมาก อ่านทั้งหมดเกี่ยวกับ Test-Path cmdlet ในบทความนี้

หากต้องการตรวจสอบว่ามีไฟล์อยู่หรือไม่ คุณสามารถใช้คำสั่งต่อไปนี้:

Test-Path C:\Temp\file.txt

23. ใหม่-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.txt

28. เริ่ม-สลีป

Start-Sleep cmdlet หยุดเซสชัน PowerShell ชั่วคราวตามระยะเวลาที่กำหนด สิ่งนี้มีประโยชน์สำหรับการสร้างสคริปต์ที่ต้องรอระยะเวลาหนึ่งก่อนที่จะดำเนินการคำสั่งถัดไป

คำสั่งด้านล่างหยุดสคริปต์ชั่วคราวเป็นเวลา 10 วินาที เรียนรู้เพิ่มเติมเกี่ยวกับคำสั่ง PowerShell Start-Sleep ในบทความนี้:

Start-Sleep -Seconds 10

29. คำสั่งวัด

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 -Average

31. เปรียบเทียบวัตถุ

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.html

33. แปลงเป็น 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 ls

35. เรียงลำดับวัตถุ

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 มีประโยชน์ หรือหากคุณมีคำถามหรือข้อเสนอแนะ โปรดแสดงความคิดเห็นด้านล่าง

บทความที่เกี่ยวข้อง