Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PowerShell Prozesse überwachen und killen

Frage Entwicklung

Mitglied: greenhorn101

greenhorn101 (Level 1) - Jetzt verbinden

18.02.2011, aktualisiert 02.11.2016, 14466 Aufrufe, 3 Kommentare

Hallo liebes Forum,

ich will auf einem Server Prozesse überwachen, damit ich ein anderes PowerShell Skript ausführen kann.
Das Problem ist, dass gewisse Prozesse hängen bleiben (auch der Task Scheduler mit dem ich das andere Skript ausführen will).
Wie man gewisse Prozesse stoppt weiß ich, aber wie kann ich das Skript so schreiben dass es erst schaut welche Prozesse laufen und welche davon hängen?
Dann eben nur diese killed die hängen??

Ich denke eine Schleife wäre am Sinnvollsten.

Prozesse beenden:

01.
Get-Process | Where-Object { $_.name -eq "iexplore" } | Foreach-Object { $_.Kill() }


Grüße greenhorn101
Mitglied: H41mSh1C0R
18.02.2011 um 11:53 Uhr
01.
Get-Process * | where {$_.responding -like "False"} | stop-process
Hier werden alle Prozesse Beendet die keine Rückmeldung liefern.

vg
Bitte warten ..
Mitglied: thl1966
04.09.2012 um 08:44 Uhr
Hallo liebe Forengemeinde,

möchte auch Prozess am Server überwachen.

Wie man den hängenden Prozess ermittelt und beendet ist mir bekannt.

Manchmal hängt ein Prozess eine bestimmte Zeit und läuft dann weiter.
Dieser Prozess soll aber dann weiterlaufen.

Wenn der Prozess sagen wir >5 min. hängt, dann erst soll der Prozess beendet werden.
Habe mir erst mal damit beholfen, eine bestimmte Zeitspanne zu warten und dann erneut den hängenden Prozess abzufragen.
Aber in der Zeitspanne, kann der Prozesszustand von Not Responding wieder auf Normalzustand sein und evtl. dann wieder kurz hängen. Nach dieser Zeitspanne kille ich dann den Prozess.

Den Prozess wird um 23 Uhr auf jeden Fall beendet.

Wie kann ich das eleganter realisieren?

Vieleicht hat jemand einen fertigen Code.

Hier mein Code:

01.
# ---------- 
02.
# Funktionen 
03.
# ---------- 
04.
 
05.
 
06.
Function Prozess_beenden($Prozessname) 
07.
08.
  get-process | where-object {$_.name -eq $Prozessname} | Foreach-Object {$_.kill()}   
09.
} # Ende Funktion Prozess_beenden 
10.
 
11.
 
12.
 
13.
Function Datum_Uhrzeit_ermitteln() 
14.
15.
  $Datum = (Get-Date).ToShortDateString() 
16.
  $Wochentag = Get-Date $Datum -Format dddd 
17.
  $Zeit = (Get-Date).ToShortTimeString() 
18.
  # Write-Host "Zeit aktuell" + $Zeit 
19.
   
20.
} # Ende Function Datum_Uhrzeit_ermitteln() 
21.
 
22.
 
23.
 
24.
# ------------------------------------- 
25.
# Variablen Deklarieren-/Initialisieren 
26.
# ------------------------------------- 
27.
 
28.
  $Datum = (Get-Date).ToShortDateString() # Datum in Variable $Datum und in String umwandeln 
29.
  $Zeit = (Get-Date).ToShortTimeString() # Zeit herausziehen und in einen String umwandeln 
30.
  $Stunden = $Zeit.substring(0,2) # Nur die Stunden extrahieren 
31.
  $Minuten = $Zeit.substring(3,2) # Nur die Minuten extrahieren 
32.
  $Tag = $Datum.substring(0,2) # Nur Tag extrahieren 
33.
  $Monat = $Datum.substring(3,2) # Nur Monat extrahieren 
34.
  $Jahr = $Datum.substring(6,4) # Nur Jahr extrahieren 
35.
  $Wochentag = Get-Date $Datum -Format dddd 
36.
 
37.
  $AbsturzZaehler=0 
38.
  $AbsturzZeit = 0 
39.
  $Prozess = "Druckerspooler" # Prozess,der überwacht werden und ggfls. beendet werden soll (Ohne die Erweiterung .exe eingeben!) 
40.
  $ProzessEnde = "23:00" 
41.
  $U = 0 # Zähler der auf 0 bleiben soll, da die Schleife nicht abbrechen darf! 
42.
 
43.
 
44.
# ------------------ 
45.
# Bildschirm löschen 
46.
# ------------------ 
47.
 
48.
  Clear-Host 
49.
 
50.
# ---------------------------------------- 
51.
# Meldung vor Start des Programms ausgeben 
52.
# ----------------------------------------- 
53.
 
54.
  Write-Host "Prozess: " $Prozess " wird um " $ProzessEnde " Uhr beendet! sowie hängende Prozess auch" 
55.
 
56.
 
57.
# Endlos-Schleife 
58.
 
59.
 
60.
do { 
61.
    do { 
62.
 
63.
        # Aktuelle Uhrzeit ermitteln 
64.
        $Datum = (Get-Date).ToShortDateString() 
65.
        $Wochentag = Get-Date $Datum -Format dddd 
66.
        $Zeit = (Get-Date).ToShortTimeString() 
67.
        # --------------------------------------- 
68.
         
69.
                 
70.
        # Prozess wird um 23:00 Uhr beendet, auch wenn der Prozess nicht abgestürzt ist 
71.
        if ($Zeit -eq $Prozessende) { Prozess_beenden($Prozess) } 
72.
        } while ($Haengender_Prozessname.Processname -ne $Prozess) # Druchlaufen, solange bis kein Dienst hängt!     
73.
        # ------------------------------------------------------------------------------------------------------ 
74.
 
75.
        # Ab hier Befehle ausführen, da der Prozess hängen geblieben ist 
76.
 
77.
        # 5 Minuten warten 
78.
        wait-event -timeout 300 
79.
        # --------------------- 
80.
 
81.
        # Aktuelle Uhrzeit auf dem Bildschirm ausgeben 
82.
          $Zeit 
83.
        # -------------------------------------------- 
84.
         
85.
        # Hinweiß-Meldung ausgeben 
86.
                 
87.
        write-host "Der Prozess: " $Prozess " scheint länger als 5 Minuten zu hängen!" -foregroundcolor red -backgroundcolor yellow 
88.
        Write-Host "Beende den Prozess: " $Prozess " auf dem Amotiq-Server" -foregroundcolor red -backgroundcolor yellow 
89.
        Write-Host $Prozess + "wird von WatchDog neu gestartet.... keine Aktion im Skript erforderlich!" 
90.
        Write-Host ""    
91.
         
92.
        # Wenn jetzt der Prozess noch hängt, dann Prozess beenden 
93.
          Prozess_beenden($Prozess) 
94.
        # ------------------------------------------------------- 
95.
         
96.
        # ---------------------------------- 
97.
        # Anzahl der Abstürze protokollieren 
98.
        # ---------------------------------- 
99.
                   
100.
        $AbsturzZaehler = $AbsturzZaehler +1 
101.
        Write-Host "Absturz Nummer: " $AbsturzZaehler 
102.
        Write-Host "" 
103.
 
104.
        # ------------------------------------------------------------------------------------------------------------------------------------- 
105.
        # Aktuelles Datum mit Wochentag und Uhrzeit holen, sonst wäre das Datum-/Uhr immer die, als die erste Do-While-Schleife verlassen wurde 
106.
        # ------------------------------------------------------------------------------------------------------------------------------------- 
107.
      
108.
        Datum_Uhrzeit_ermitteln 
109.
 
110.
        # ----------------------------------------- 
111.
        # Datum mit Wochzentag und Uhrzeit anzeigen 
112.
        # ----------------------------------------- 
113.
            
114.
        Get-Date 
115.
 
116.
        # ---------------------------------------- 
117.
        # Nachricht für den Mailversand definieren 
118.
        # ---------------------------------------- 
119.
 
120.
        $Betreff = "Prozess: " + $Prozess + " hängt am Produktiv-Server und wurde neu gestartet!" 
121.
        $Nachricht = "Prozess: " + $Prozess + " hängt am Produktiv-Server und wurde neu gestartet! -> Datum: " + $Zeit 
122.
 
123.
        # Aktuelle Uhrzeit ermitteln 
124.
        $Datum = (Get-Date).ToShortDateString() 
125.
        $Wochentag = Get-Date $Datum -Format dddd 
126.
        $Zeit = (Get-Date).ToShortTimeString() 
127.
        # --------------------------------------- 
128.
 
129.
         
130.
        # Prozess wird um 23:00 Uhr beendet 
131.
        if ($Zeit -eq $ProzessEnde) { Prozess_beenden($Prozess) } 
132.
        # ------------------------------------------------ 
133.
     
134.
} Until ($U -ne 0) # Da $U nie verändert wird, läuft die Schleife unendlich, da $U immer 0 und nicht <> ist! 
135.
 
136.
 
137.
 
138.
# ---------------------- 
139.
# Ende Powershell-Skript 
140.
# -------
Bitte warten ..
Mitglied: thl1966
05.09.2012 um 08:45 Uhr
Möchte aber den Prozess erst beenden, wenn die Rückmeldung min. eine bestimmte Zeitspanne z.b. 10 min. ist.

D.h. hängt der Prozess z.b. 10 Min. lang, dann erst Prozess beenden.

Hintergrund ist der, dass auf dem Server ein wichtigter Produktionsprozess läuft, der einmal pro Woche abstürzt.
Dann soll der Prozess beendet werden. Über das Programm Watchdog wird dann dieser Prozess neu gestartet.

Wenn z.B. der Prozess, weil er gerade ausgelastet ist ca. 2-4 Min. "hängt" bzw. Not Responding bekommt, dann soll er natürlich weiterlaufen. Erst nachdem der Prozess länger als die Zeitspanne nicht mehr reagiert, dann soll der Prozess beendet werden.

Das mit dem Druckerspooler war nur ein Test-Skript.

Gruß

Thomas
Bitte warten ..
Ähnliche Inhalte
Windows Server
Einem Benutzer erlauben Prozesse zu killen
gelöst Frage von KMP1988Windows Server3 Kommentare

Servus, kann man für einen Domänen-User ein Recht vergeben, dass er einen bestimmten Prozess beenden kann? (Taskmanager Prozesse Prozess ...

Batch & Shell
Powershell Prozess überwachen und evtl. neu starten
gelöst Frage von adminstBatch & Shell6 Kommentare

Hallo zusammen Ich habe einen Dienst welcher per Batch gestartet wird und den MainWindowTitle "Prod 1-2 Socket" hat. Der ...

Batch & Shell
Einen Prozess killen wenn die Published App geschlossen wird - Ideen?
gelöst Frage von pixel0815Batch & Shell21 Kommentare

Servus zusammen, wir haben eine Published Applikation in der ein Fremdaufruf gestartet wird. Wenn ich jetzt die Applikation beende, ...

Exchange Server
Exchange Überwachen mit powershell
gelöst Frage von digiunsoExchange Server6 Kommentare

Hallo, ich habe folgendes Anliegen: Von einem Kunden stürzen die Exchangedienste ab. Um besser nach Ursachen zu forschen soll ...

Neue Wissensbeiträge
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 4 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...