Weboldal keresés

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

Kimenet:

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-Process parancsmag 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 gps vagy a ps álnevek elérhetők a Get-Process parancsmag végrehajtásához. Azonban a PowerShell 7-ben, amely többplatformos és Linuxon fut, a ps parancs ütközik a beépített Linux paranccsal. Ezért a ps parancs nem működik Linuxon, hanem a gps á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-CimInstance parancsmag hasonló a Get-WmiObject parancsmaghoz, 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.

Kapcsolódó cikkek