Erkennen, die Anzahl der Laufenden Prozesse mit dem gleichen Namen
Irgendwelche Ideen, wie man eine Funktion schreiben, die gibt die Anzahl der Instanzen eines Prozesses ausgeführt wird?
Vielleicht so etwas?
function numInstances([string]$process)
{
$i = 0
while(<we can get a new process with name $process>)
{
$i++
}
return $i
}
Edit: Angefangen zu schreiben eine Funktion... Es funktioniert für eine einzelne Instanz, sondern es geht in eine unendliche Schleife, wenn mehr als eine Instanz ausgeführt wird:
function numInstances([string]$process)
{
$i = 0
$ids = @()
while(((get-process $process) | where {$ids -notcontains $_.ID}) -ne $null)
{
$ids += (get-process $process).ID
$i++
}
return $i
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
BEARBEITEN: Hinzugefügt, die lautlos weiter und array-cast für die Arbeit mit null und eins-Prozesse.
Diese funktioniert bei mir:
Ausgabe:
Obwohl es einfach ist, gibt es zwei wichtige Punkte bei dieser Lösung: 1) verwenden Sie
-ErrorAction 0
(0 ist das gleiche wieSilentlyContinue
), so dass es gut funktioniert, wenn es keine festgelegten Prozesse; 2) verwenden Sie die array-operator@()
so, dass es funktioniert, wenn es eine einzelne Prozessinstanz.Seine viel einfacher zu benutzen Sie der built-in-cmdlet group-object:
Gibt es eine schöne one-liner :
(ps).count
(Get-Process | Where-Object {$_.Name-eq 'Chrome'}).Graf
Dieser wird Ihnen die Anzahl der Prozesse mit dem gleichen Namen ausgeführt wird. Sie können Filter hinzufügen, um weitere formatieren Sie Ihre Daten.