ตรวจสอบว่า PowerShell กำลังทำงานอยู่หรือไม่ [4 วิธี]
ใช้ รับกระบวนการ Cmdlet
ใช้ cmdlet Get-Process เพื่อตรวจสอบว่ากระบวนการทำงานใน PowerShell หรือไม่ ด้วย Get-Process cmdlet ทำให้เราสามารถแสดงรายการกระบวนการที่ทำงานบนระบบได้
ใช้ Get-Process cmdlet:
Get-Processเอาท์พุต :
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
470 26 19184 32148 0.38 4464 7 ApplicationFrameHost
618 44 28960 1496 0.97 10964 7 CalculatorApp
404 21 93572 146764 11.17 1800 7 chrome
247 18 19176 32068 0.11 1816 7 chrome
139 7 1576 8944 0.08 14540 7 CompPkgSrv
166 11 6956 10184 0.19 11416 7 conhost
....เราสามารถสังเกตได้ว่า Get-Process cmdlet ดึงข้อมูลทั้งหมดของกระบวนการที่ทำงานอยู่บนระบบของฉันในปัจจุบัน จากรายการข้างต้น เราต้องการเพียง ProcessName; มันแสดงชื่อของกระบวนการ หากคุณต้องการทราบเกี่ยวกับคอลัมน์อื่นๆ โปรดดูเอกสารนี้
ผลลัพธ์ cmdlet
Get-Processจะเหมือนกันสำหรับระบบปฏิบัติการ Linux และ Windows
ตอนนี้เรามาดูรายละเอียดเพิ่มเติมกันดีกว่า นี่เป็นวิธีหนึ่งในการดูรายการกระบวนการที่กำลังทำงานอยู่ทั้งหมด มีหลายวิธีในการตรวจสอบว่ากระบวนการใดกำลังทำงานอยู่ใน PowerShell หรือไม่ เมื่อระบุกระบวนการแล้ว ก็สามารถดำเนินการต่างๆ ได้
พิจารณาสถานการณ์ที่คุณต้องการตรวจสอบว่า chrome กำลังทำงานอยู่ในระบบของคุณหรือไม่ ถ้าใช่ ให้แสดงข้อความ "Chrome is running" บนระบบ มิฉะนั้น ให้แสดง "Chrome ไม่ทำงาน"
ใช้ Get-Process cmdlet:
#Check if a process named "chrome" is running
if (Get-Process -Name chrome -ErrorAction SilentlyContinue) {
Write-Host "Chrome is running."
} else {
Write-Host "Chrome is not running."
}เอาท์พุต :
Chrome is running.ในตัวอย่างนี้ Get-Process cmdlet ใช้กับพารามิเตอร์ -Name เพื่อระบุชื่องานซึ่งตั้งค่าเป็น chrome เพื่อตรวจสอบ สถานะว่ากำลังทำงานอยู่หรือไม่ แน่นอน คุณสามารถแทนที่ chrome ด้วยชื่อกระบวนการที่คุณต้องการตรวจสอบได้ ในที่นี้ พารามิเตอร์ -ErrorAction SilentlyContinue เป็นทางเลือก มันถูกใช้เพื่อหลีกเลี่ยงข้อผิดพลาดจากการแสดงหากกระบวนการที่กำหนดไม่ได้ทำงานอยู่
ตามค่าเริ่มต้น นามแฝง
gpsหรือpsจะพร้อมใช้งานเพื่อดำเนินการ cmdletGet-Processอย่างไรก็ตาม ใน PowerShell 7 ซึ่งเป็นข้ามแพลตฟอร์มและทำงานบน Linux คำสั่งpsจะขัดแย้งกับคำสั่งLinuxในตัว ดังนั้นคำสั่งpsจะไม่ทำงานบน Linux แต่เป็นนามแฝงgps
การใช้คำสั่ง Tasklist กับ Where-Object Cmdlet
ใช้คำสั่ง รายการงาน พร้อมด้วย Where-Object cmdlet เพื่อตรวจสอบว่ากระบวนการทำงานใน PowerShell หรือไม่
ใช้คำสั่ง Tasklist กับ Where-Object cmdlet:
#Check if a process named "notepad" is running
if (Tasklist | Where-Object { $_.ProcessName -eq "notepad" }) {
Write-Host "Notepad is running."
} else {
Write-Host "Notepad is not running."
}เอาท์พุต :
Notepad is running.
ในตัวอย่างนี้ คำสั่ง Tasklist จะดึงรายการกระบวนการที่ทำงานบนระบบ ซึ่งจะไปป์เอาต์พุตด้วย Where-Object cmdlet
ใน PowerShell นั้น Where-Object cmdlet จะกรองวัตถุตามเงื่อนไขที่ระบุ ในกรณีนี้ จะกรองเอาต์พุต รายการงาน และค้นหากระบวนการที่มีคุณสมบัติ ProcessName เท่ากับ notepad
สังเกตในตัวอย่างข้างต้นที่พบกระบวนการและข้อความ "Notepad is running." ปรากฏขึ้นบนหน้าจอ
การใช้ Get-WmiObject Cmdlet กับคลาส Win32_Process
ใช้ Get-WmiObject cmdlet กับคลาส Win32_Process เพื่อตรวจสอบว่ากระบวนการทำงานใน PowerShell หรือไม่
ใช้ Get-WmiObject กับ Win32_Process:
#Check if a process named "firefox" is running
if (Get-WmiObject Win32_Process | Where-Object {$_.Name -eq "firefox.exe"}) {
Write-Host "Firefox is running."
} else {
Write-Host "Firefox is not running."
}เอาท์พุต :
Firefox is not running.รหัส PowerShell ด้านบนใช้ Get-WmiObject cmdlet เพื่อดึงข้อมูลเกี่ยวกับกระบวนการที่ทำงานอยู่โดยใช้คลาส Win32_Process WMI (Windows Management Instrumentation) คลาส Win32_Process แสดงถึงกระบวนการบนระบบปฏิบัติการ Windows จากนั้น Where-Object cmdlet จะกรองคอลเลกชันตามคุณสมบัติ Name เพื่อดึงเฉพาะกระบวนการที่มี firefox.exe อยู่ในชื่อเท่านั้น
การใช้ Get-CimInstance Cmdlet กับคลาส Win32_Process
ใช้ Get-CimInstance cmdlet กับคลาส Win32_Process เพื่อตรวจสอบว่ากระบวนการทำงานใน PowerShell หรือไม่
ใช้ Get-CimInstance กับ Win32_Process:
#Check if a process named "GoogleDriveFS" is running
if (Get-CimInstance Win32_Process | Where-Object {$_ -like "*GoogleDriveFS*"}){
Write-Host "GoogleDriveFS is running."
} else {
Write-Host "GoogleDriveFS is not running."
}เอาท์พุต :
GoogleDriveFS is running.
ตัวอย่างนี้คล้ายกับตัวอย่างข้างต้น ในที่นี้ Get-CimInstance cmdlet ใช้กับคลาส Win32_Process เพื่อรับข้อมูลเกี่ยวกับกระบวนการที่กำลังทำงานอยู่ คล้ายกับตัวอย่างข้างต้น cmdlet Where-Object จะกรองรายการกระบวนการที่ทำงานอยู่ตามเงื่อนไขที่กำหนด ในกรณีข้างต้น ระบบจะกรองกระบวนการซึ่งรวมถึง GoogleDriveFS อยู่ในชื่อ
Get-CimInstancecmdlet คล้ายกับGet-WmiObjectcmdlet แต่ใช้โปรโตคอล WS-Man (Web Services for Management) ที่ทันสมัยกว่าในการสื่อสาร ทำให้มีประสิทธิภาพมากขึ้นและช่วยให้สามารถจัดการทรัพยากรข้ามแพลตฟอร์มได้
