PowerShell-ellenőrzés, hogy a folyamat fut-e [4 módszer]
A Get-Process parancsmag használatával
Használja a Get-Process parancsmagot annak ellenőrzésére, hogy a folyamat fut-e a PowerShellben. A Get-Process parancsmaggal megjeleníthetjük a rendszeren futó folyamatok listáját.
Használja a Get-Process parancsmagot:
Get-ProcessKimenet:
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
....Megfigyelhetjük, hogy a Get-Process parancsmag lekérte a rendszeremen jelenleg futó folyamat összes információját. A fenti listából csak a ProcessName; a folyamatok nevét mutatja. Ha többet szeretne tudni a többi oszlopról, tekintse meg ezt a dokumentációt.
A
Get-Processparancsmag kimenete ugyanaz a Linux és a Windows operációs rendszereken.
Most merüljünk el a további részletekben. Ez volt az egyetlen módja az összes futó folyamat listájának megtekintéséhez. Számos módja van annak ellenőrzésére, hogy egy adott folyamat fut-e a PowerShellben. A folyamat azonosítása után különféle műveletek hajthatók végre rajta.
Fontolja meg azt a forgatókönyvet, amelyben szeretné ellenőrizni, hogy a chrome fut-e a rendszeren; ha igen, akkor jelenítse meg a "Chrome fut" üzenetet a rendszeren; ellenkező esetben a „Chrome nem fut” megjelenítése.
Használja a Get-Process parancsmagot:
#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."
}Kimenet:
Chrome is running.Ebben a példában a Get-Process parancsmagot a -Name paraméterrel együtt használjuk a feladat nevének megadásához, amely a chrome értékre van állítva az ellenőrzéshez. állapotát, ha fut vagy nem. Természetesen lecserélheti a chrome elemet az ellenőrizni kívánt folyamatnévre. Itt az -ErrorAction SilentlyContinue paraméter nem kötelező; arra szolgál, hogy elkerülje a hibák megjelenítését, ha az adott folyamat nem fut.
Alapértelmezés szerint a
gpsvagy apsálnevek elérhetők aGet-Processparancsmag végrehajtásához. Azonban a PowerShell 7-ben, amely többplatformos és Linuxon fut, apsparancs ütközik a beépítettLinuxparanccsal. Ezért apsparancs nem működik Linuxon, hanem agpsálnév.
A Tasklist parancs használata a Where-Object parancsmaggal
Használja a Tasklist parancsot a Where-Object parancsmaggal annak ellenőrzésére, hogy a folyamat fut-e a PowerShellben.
Használja a Tasklist parancsot a Where-Object parancsmaggal:
#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."
}Kimenet:
Notepad is running.
Ebben a példában a Tasklist parancs lekéri a rendszeren futó folyamatok listáját, amely a kimenetet a Where-Object parancsmaggal továbbítja.
A PowerShellben a Where-Object parancsmag adott feltétel alapján szűri az objektumokat. Ebben az esetben kiszűri a Tasklist kimenetet, és megkeresi azt a folyamatot, amelynek ProcessName tulajdonsága megegyezik a notepad tulajdonsággal.
Figyelje meg a fenti példában a folyamatot, és a képernyőn megjelenik a „Jegyzettömb fut.” üzenet.
Get-WmiObject parancsmag használata Win32_Process osztályhoz
Használja a Get-WmiObject parancsmagot a Win32_Process osztállyal annak ellenőrzésére, hogy a folyamat fut-e a PowerShellben.
A Get-WmiObject használata a Win32_Processsel:
#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."
}Kimenet:
Firefox is not running.A fenti PowerShell-kód a Get-WmiObject parancsmagot használta a futó folyamatok információinak lekéréséhez a Win32_Process WMI (Windows Management Instrumentation) osztály használatával. A Win32_Process osztály egy Windows operációs rendszeren futó folyamatot jelöl. Ezután a Where-Object parancsmag a Name tulajdonság alapján szűri a gyűjteményt, hogy csak azokat a folyamatokat kérje le, amelyek nevében szerepel a firefox.exe.
Get-CimInstance parancsmag használata Win32_Process osztályhoz
Használja a Get-CimInstance parancsmagot a Win32_Process osztállyal annak ellenőrzésére, hogy a folyamat fut-e a PowerShellben.
A Get-CimInstance használata a Win32_Processsel:
#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."
}Kimenet:
GoogleDriveFS is running.
Ez a példa hasonló a fenti példához. Itt a Get-CimInstance parancsmagot a Win32_Process osztállyal használjuk, hogy információkat kapjunk a futó folyamatokról. A fenti példához hasonlóan a Where-Object parancsmag szűri a futó folyamatlistát az adott feltétel alapján. A fenti esetben kiszűrte a folyamatot, amelynek nevében a GoogleDriveFS szerepel.
A
Get-CimInstanceparancsmag hasonló aGet-WmiObjectparancsmaghoz, de a kommunikációhoz a modernebb WS-Man (Web Services for Management) protokollt használja. Ez hatékonyabbá teszi, és lehetővé teszi az erőforrások platformok közötti kezelését.
