ralus67
Goto Top

Prozess beenden welcher eine bestimmte Datei verwendet

Hallo Community

Ich bin auf der Suche nach einer Lösung um einen bestimmten Prozess zu löschen, welcher von einer bestimmten Datei verwendet wird.

Die Lösung sollte wenn möglich über Powershell oder Batch ausgeführt werden

Ich habe folgendes ausprobiert

tasklist /FI "MODULES eq NppShell_06.dll"

Anschliessend wird mir folgendes angezeigt

Abbildname PID Sitzungsname Sitz-Nr. Speichernutzung
======= ==================== ======== ==================
explorer.exe 5916 Conosole 1 53'232 K

Nun möchte ich diese PID 5916 beenden, welche mir die NppShell_06.dll in Verwendung hält. Ich möchte keinen Taskkill auf den Namen explorer.exe durchführen, da sonst alle offenen explorer.exe Prozesse beendet weren.

Wie kann ich das lösen? Also suchen nach dll. PID ermitteln und diese beenden.....

Danke im Voraus für Eure Hilfe

Content-ID: 625589

Url: https://administrator.de/contentid/625589

Ausgedruckt am: 19.11.2024 um 06:11 Uhr

killtec
killtec 25.11.2020 um 10:18:48 Uhr
Goto Top
HI,
du kannst im Taskkill auch die PID mit geben...

Gruß
Doskias
Doskias 25.11.2020 um 10:22:07 Uhr
Goto Top
Moin
Zitat von @killtec:
du kannst im Taskkill auch die PID mit geben...
in deinem Fall wäre es dann:
taskkill /pid 5916 
Ralus67
Ralus67 25.11.2020 um 10:30:41 Uhr
Goto Top
taskkill /pid ist ein manueller Eingriff

Ich möchte, dass mir das Batch / Powershell Skript den Prozess finded, welche die DLL gesperrt hat. Diesen Prozess dann automatisch löschen
146707
146707 25.11.2020 aktualisiert um 10:36:11 Uhr
Goto Top
Handle ist dein Freund...
taskkill /pid ist ein manueller Eingriff
Nö, wieso??
Ralus67
Ralus67 25.11.2020 um 10:41:40 Uhr
Goto Top
Erklär mir bitte wie das lösen soll in einer Batch. Ich kenne die DLL aber die PID nicht.

tasklist /FI "MODULES eq NppShell_06.dll"

Die PID welche mir ausgegeben wird muss ausgelesen und zwischengespeichert werden z.B als Variable $TMPPid anschliessend dies $TMPPid kann anschliessen mit taskkill /pid $TMPPid gelöscht werden.

Ich hab mich vielleich nicht korrekt ausgedrückt. Die Frage war nicht wie ich es mit Taskkill lösche, sondern wie finde ich die entsprechende PID aus anhand des tasklist Befehls, wie lese ich diese PID aus und speichere diese ab, so dass ich dies anschliessend mit taskkill löschen kann.
146707
146707 25.11.2020 aktualisiert um 10:46:42 Uhr
Goto Top
Wie immer bei sowas in 80er Batch die FOR-Schleife dein Freund!
@echo off
for /f "skip=3 tokens=2" %%a in ('tasklist /FI "MODULES eq NppShell_06.dll"') do taskkill /pid %%a  
Ralus67
Ralus67 25.11.2020 um 10:48:12 Uhr
Goto Top
Danke für den Input, das ist ein guter Lösungsansatz. Hättest du das Skript auch für Powershell?
146707
146707 25.11.2020 aktualisiert um 10:58:56 Uhr
Goto Top
Zitat von @Ralus67:

Danke für den Input, das ist ein guter Lösungsansatz. Hättest du das Skript auch für Powershell?
Warum nicht gleich direkt explizit nach der PS Variante fragen? Erst die Leute hier schreiben lassen heute schon wieder Freitag ... Salamitaktik 🐟
gps | ?{$_.Modules.ModuleName -contains 'NppShell_06.dll'} | kill -Force -verbose  
Ralus67
Ralus67 25.11.2020 um 11:42:05 Uhr
Goto Top
danke, das war die Lösung
146707
146707 25.11.2020 aktualisiert um 11:55:13 Uhr
Goto Top
Dann markiere diese bitte für die Nachwelt auch.