Une solution similaire aux autres, mais utilisant Get-Counter
au lieu de Get-Process
:
While(1) { $p = get-counter '\Process(*)\% Processor Time'; cls; $p.CounterSamples | sort -des CookedValue | select -f 15 | ft -a}
Exemple de sortie :
Path InstanceName CookedValue
---- ------------ -----------
\\server_name\process(_total)\% processor time _total 4806.03969127454
\\server_name\process(idle)\% processor time idle 1103.7573538257
\\server_name\process(program2)\% processor time program 749.692930701698
\\server_name\process(program5)\% processor time program 563.424255927765
\\server_name\process(program1)\% processor time program 535.714866291973
\\server_name\process(program6)\% processor time program 455.665518455242
\\server_name\process(program3)\% processor time program 426.416718284128
\\server_name\process(program)\% processor time program 395.628507577693
\\server_name\process(program4)\% processor time program 335.591496700144
\\server_name\process(microsoftedgecp2)\% processor time microsoftedgecp 129.310484967028
\\server_name\process(system)\% processor time system 80.0493478367316
\\server_name\process(chrome8)\% processor time chrome 1.53941053532176
J'ai constaté que la plupart des autres solutions utilisant Get-Process
rapportent le temps total du processeur depuis le démarrage du processus, ce qui n'était pas utile sur mon serveur qui reste allumé 24 heures sur 24, 7 jours sur 7 où le résultat principal était toujours svchost
et system
à des millions de secondes.
- Un véritable équivalent de
top
ou du Gestionnaire des tâches donnerait un aperçu de l'utilisation du CPU enregistrée récemment sur une période fixe et Get-Counter
fournit cela. J'ai pensé que cette alternative valait la peine d'être partagée car cette question est toujours le résultat principal sur Google pour powershell top
.
Basé sur l'Exemple 13 de la documentation de Get-Counter
docs, une explication de la commande :
-
While(1) {
: Crée une boucle
-
get-counter '\Process(*)\% Processor Time'
: Sélectionne les données du % de CPU, ce qui prend un certain temps pour revenir, donc pas besoin de sleep
-
cls
: Efface pour la nouvelle table
-
sort -des CookedValue
: Trie du plus grand au plus petit pour CookedValue
[champ qui nous intéresse]
-
select -f 15
: Affiche les 15 premiers
-
ft -a
: Affiche dans un tableau formaté
0 votes
Cela tombe clairement dans la catégorie des questions superuser.com.
0 votes
Cool - Je ne savais même pas que ce site existait! (Je suis principalement un développeur C#)
3 votes
La propriété CPU sur l'objet Process n'est pas un pourcentage de CPU, c'est le temps total du CPU depuis le démarrage du processus.
0 votes
Sinon, utilisez simplement le Gestionnaire des tâches sur Windows 10, qui peut être accédé via
ctrl
+alt
+suppr
comme raccourci.