Überprüfen Sie bei einer scheinbar im Leerlauf befindlichen Powershell-Sitzung eine hohe CPU

432
Alex KeySmith

Ich finde, dass Powershell 20% CPU verwendet, nachdem eine Reihe von Skripten ausgeführt wurden.

Das Skript besteht aus einer Reihe von AzureRM-Modulen, Posh-Git- und Vssetup-Modulen und einer Reihe von benutzerdefinierten Modulen (von denen keines Schleifen enthalten sollte - es sei denn, es liegt ein Fehler vor).

Der Verdacht eines der Module befindet sich in einer Endlosschleife. Ich habe jedes Modul entladen. Wenn jedoch alle Module entladen werden, ist die CPU immer noch hoch.

Mit procmonkann ich sehen:

GetMetaDataPublicInterfaceFromInternal in den Fäden.

Irgendwelche Vorschläge für den nächsten Schritt, um zu diagnostizieren, warum die hohe CPU immer noch auftritt?

Es scheint nicht bei einer neuen Powershell-Sitzung (mit posh-gitgeladenem) zu passieren .

0
Sie können mit dem Debugging mit `Set-PSDebug -Trace 1` beginnen. root vor 5 Jahren 0
Danke, @root, theoretisch habe ich keine Skripte zum Debuggen, da die Skripten (theoretisch) bereits abgeschlossen sind. Wenn Set-PSDebug nicht andere Dinge tut (ich habe es nicht oft verwendet), nur in ISE debuggen? Alex KeySmith vor 5 Jahren 0
Ich sehe jetzt, alles, was ich mit Set-PSDebug ausführte, wird an die Konsole ausgegeben, danke für den Tipp. Alex KeySmith vor 5 Jahren 0
Ich habe mich gefragt, ob es sich um ein Skript mit Hintergrundjob handelt, aber Get-Job zeigt nichts. Auch Get-ScheduledTask (und dann alles stoppen) hilft nicht. Alex KeySmith vor 5 Jahren 0
Schwer zu sagen, ohne jedes Skript zu durchforsten. Die Verwendung von `Set-PSDebug` kann beim nächsten Ausführen der Skripte hilfreich sein. Wenn Sie eine Endlosschleife haben, ist dies offensichtlich, wenn Sie die Konsole mit aktiviertem Debugging betrachten. Ansonsten haben Sie Recht, procmon auszuprobieren. root vor 5 Jahren 0

0 Antworten auf die Frage