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

Mitglied: greenhorn101

greenhorn101 (Level 1) - Jetzt verbinden

18.02.2011, aktualisiert 02.11.2016, 14729 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
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 55 MinutenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 6 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 20 StundenSicherheit7 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server38 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing26 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless20 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...