Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Verknüpfung um Prozess zu killen möglich?
- Ersteller EmmaL
- Erstellt am
Novocain
Admiral
- Registriert
- März 2004
- Beiträge
- 8.121
Könntest dir damit was basteln
https://thegeekpage.com/kill-any-task-from-task-manager-using-command-prompt-in-windows-10/
https://thegeekpage.com/kill-any-task-from-task-manager-using-command-prompt-in-windows-10/
Alternativ modern mit Powershell und "Stop-Process -Name "notepad" -Force"
https://docs.microsoft.com/en-us/po...l.management/stop-process?view=powershell-7.2
https://docs.microsoft.com/en-us/po...l.management/stop-process?view=powershell-7.2
MORPEUS
Commander
- Registriert
- Jan. 2004
- Beiträge
- 2.398
Dank an @3PiOh & @xexex für den Input.
Die M$-Dokumentation und Google habe mich leider noch nicht ganz ans Ziel gebracht. Vielleicht kann mir jemand helfen.
Ziel:
Ich möchte, egal welche Konstellation vorliegt, sicherstellen dass der oder die Prozesse beendet werden.
Frage a)
Wie kann ich:
Frage b)
Die M$-Dokumentation und Google habe mich leider noch nicht ganz ans Ziel gebracht. Vielleicht kann mir jemand helfen.
Ziel:
Ich möchte, egal welche Konstellation vorliegt, sicherstellen dass der oder die Prozesse beendet werden.
Frage a)
Wie kann ich:
- alles in einer Datei verpackt
- die PowerShell-Verknüpfung als Admin ausführen
- den Prozess meinem Benutzer zuordnen
- und anschließend alle Prozesse mit z.B. dem Name "Bill-Gates" beenden?
Frage b)
- Gibt es einen identischen PowerShell-Parameter zu "Prozessstruktur beenden" (im Task-Manager) der alle untergeordneten Prozesse beendet?
Zuletzt bearbeitet:
G
GrayWolf
Gast
Du kannst über die Aufgabenplanung das Skript als Task ohne Bedingung anlegen und als einen anderen User aufrufen (also einem Admin Benutzer). Das ist sozusagen der erste Baustein. Dann rufst du über eine Verknüpfung oder .bat-Datei wiederum den Task-Scheduler auf der wiederum den Task startet. Siehe: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/schtasks-run
Wobei der Task hier "Security Script" heißt.
Code:
schtasks /run /tn Security Script
Wobei der Task hier "Security Script" heißt.
3PiOh
Cadet 2nd Year
- Registriert
- Dez. 2013
- Beiträge
- 24
Alternativ noch zu Stop-Process -Name von @xexex der alle Prozesse für den aktuellen User stoppt:
Mit dem folgenden Code müsste die ganze Prozessstruktur (hier für notepad.exe) für einen bestimmten User (hier xxx...bin mir nicht sicher, was du mit dem Punkt meinst: den Task meinem Benutzer zuordnen) gestoppt werden; das Skript einfach unter: yyy.ps1 speichern.
Um das Skript als Admin auszuführen zu können, kann man das PS-Skript mit erhöhten Rechten aus einer Batch-Datei aufrufen:
(ich habe das PS-Skript unter SO gefunden und um eine Userabfrage erweitert...bin mit gerade nicht sicher, ob ich Links zu anderen Foren einfach so einfügen kann)
Mit dem folgenden Code müsste die ganze Prozessstruktur (hier für notepad.exe) für einen bestimmten User (hier xxx...bin mir nicht sicher, was du mit dem Punkt meinst: den Task meinem Benutzer zuordnen) gestoppt werden; das Skript einfach unter: yyy.ps1 speichern.
Um das Skript als Admin auszuführen zu können, kann man das PS-Skript mit erhöhten Rechten aus einer Batch-Datei aufrufen:
Code:
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""yyy.ps1""' -Verb RunAs}"
(ich habe das PS-Skript unter SO gefunden und um eine Userabfrage erweitert...bin mit gerade nicht sicher, ob ich Links zu anderen Foren einfach so einfügen kann)
Code:
param(
[string]$procName = 'notepad',
[string]$userName = $env:UserName,
[string]$user = 'xxx'
)
function Kill-Tree {
Param([int]$ppid)
echo "Kill-Tree: killing $ppid ..."
Get-CimInstance Win32_Process | Where-Object { $_.ParentProcessId -eq $ppid } | ForEach-Object { Kill-Tree $_.ProcessId }
Stop-Process -Id $ppid
}
[int]$mypid = 0
[string]$myProcessToKill = (Get-Process -Name $procName -ErrorAction 0)
if ($myProcessToKill -eq "") {
echo "$procName is not running."
} else {
$mypid = (Get-Process -Name $procName -ErrorAction 0).Id
echo "The $procName PID is: $mypid"
if ($mypid -gt 1 -and $userName -eq $user) {
echo "Killing $procName and its children..."
Kill-Tree $mypid
}
else {
echo "process found with PID $mypid but user name ($userName) is different."
}
}
echo "Done!"
cumulonimbus8
Fleet Admiral
- Registriert
- Apr. 2012
- Beiträge
- 18.948
Vielleicht bin ich ja doof, aber bis eine PowerShell offen/oben ist hat altbackenes Batch in CMD das längst abgefrühstückt.
Weiterhin muss das wohl auf direkte Benutzeranforderung laufen, «einen Knopf drücken», was will ich da mit der Aufgabenplanung?
Und zuletzt - eine Verknüpfung zu TASKKILL mit den nötigen Parametern reicht völlig («Knopf drücken»).
CN8
Weiterhin muss das wohl auf direkte Benutzeranforderung laufen, «einen Knopf drücken», was will ich da mit der Aufgabenplanung?
Und zuletzt - eine Verknüpfung zu TASKKILL mit den nötigen Parametern reicht völlig («Knopf drücken»).
CN8
User007
Vice Admiral
- Registriert
- Feb. 2008
- Beiträge
- 6.403
@3PiOh:
Btw.:
Klar, warum nicht? Ansonsten wird wohl schon ein Mod/Admin tätig.3PiOh schrieb:[...] ob ich Links zu anderen Foren einfach so einfügen kann
Btw.:
Tolles Script, aber wofür braucht man sowas im 08/15-Heimgebrauch?
Ich versteh' ja noch das aus Bequemlichkeit und Faulheit heraus motivierte Ansinnen zu einer anklickbaren Batch zum Beenden des immer gleichen Programms/Dienstes, aber dann? 🤷♂️
Ich versteh' ja noch das aus Bequemlichkeit und Faulheit heraus motivierte Ansinnen zu einer anklickbaren Batch zum Beenden des immer gleichen Programms/Dienstes, aber dann? 🤷♂️
3PiOh
Cadet 2nd Year
- Registriert
- Dez. 2013
- Beiträge
- 24
Machbarkeit und Kontrolle - normalerweise würde ich aber für sowas auch einen einfachen Batch Befehl nehmen wie ganz oben geschrieben (TASKKILL).User007 schrieb:@3PiOh:
Klar, warum nicht? Ansonsten wird wohl schon ein Mod/Admin tätig.
Btw.:
Tolles Script, aber wofür braucht man sowas im 08/15-Heimgebrauch?
Ich versteh' ja noch das aus Bequemlichkeit und Faulheit heraus motivierte Ansinnen zu einer anklickbaren Batch zum Beenden des immer gleichen Programms/Dienstes, aber dann? 🤷♂️
Manche Foren reagieren recht allergisch auf Links in andere Foren - ich war einfach zu faul, um nachzuschauen, was die Forenregeln dazu sagen.
N
NotNerdNotDau
Gast
Batch is a Bitch und Taskkill ist mit Vorsicht zu genießen.
Ich stelle hier mal ein weiteres Beispiel in Form eines PS-Codes, mit dem man den Prozess "excel" beendet, rein.
Den Code gibt man in einen Texteditor und speichert die Datei dann als z.B. "StopProcess.ps1", am besten direkt auf dem Desktop.
Nach "$_.ProcessName" muss man dann eben den gewünschten Namen des Prozesses, den man beenden möchte, anpassen.
Die ersten drei Zeilen bewirken das Unterdrücken des Konsolenfensters.
Ich stelle hier mal ein weiteres Beispiel in Form eines PS-Codes, mit dem man den Prozess "excel" beendet, rein.
Den Code gibt man in einen Texteditor und speichert die Datei dann als z.B. "StopProcess.ps1", am besten direkt auf dem Desktop.
PowerShell:
$ShowWindowAsync = '[DllImport("user32.dll")]public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);'
Add-Type -Name WPS -Member $ShowWindowAsync -Namespace CNS -ErrorAction SilentlyContinue
[Void][CNS.WPS]::ShowWindowAsync(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle,0)
$CurrentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
If($CurrentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator))
{
Get-Process | Where-Object -FilterScript {$_.ProcessName -Eq "excel"} | Stop-Process -PassThru
}
Else
{
$ElevatedProcess = New-Object System.Diagnostics.ProcessStartInfo "PowerShell";
$ElevatedProcess.Arguments = "& '" + $Script:MyInvocation.MyCommand.Path + "'"
$ElevatedProcess.Verb = "runas"
[System.Diagnostics.Process]::Start($ElevatedProcess)
Exit
}
Nach "$_.ProcessName" muss man dann eben den gewünschten Namen des Prozesses, den man beenden möchte, anpassen.
Die ersten drei Zeilen bewirken das Unterdrücken des Konsolenfensters.
cumulonimbus8
Fleet Admiral
- Registriert
- Apr. 2012
- Beiträge
- 18.948
Allein das so ein… Quark… nötig fällt diskreditiert diesen übermotorisierten Bolzen PS immer mehr.NotNerdNotDau schrieb:Die ersten drei Zeilen bewirken das Unterdrücken des Konsolenfensters.
Und - auch dein PS-Skript kann nicht mehr als Excel zu kennen, ebenso wie jeder andere Task-Killer den Task, genau den Task, kennen muss.
CN8
N
NotNerdNotDau
Gast
Übermotorisiert? Wo hast du das denn ausgegraben?cumulonimbus8 schrieb:Allein das so ein… Quark… nötig fällt diskreditiert diesen übermotorisierten Bolzen PS immer mehr.
Deine Sätze sind nach wie vor spektakulär.
Wenn man sich das Konsolenfenster anzeigen lassen möchte, dann löscht man einfach diese ersten drei Zeilen.
Wo soll da denn das Problem sein?
Mehr soll es auch gar nicht können.cumulonimbus8 schrieb:Und - auch dein PS-Skript kann nicht mehr als Excel zu kennen
Man sollte sich tunlichst von dem altbackenen CMD/BAT verabschieden und PowerShell für solche Zwecke nutzen.
Darauf wird hier, aber nicht nur hier, bei jeder Gelegenheit hingewiesen -und das vollkommen zurecht.
Wenn ich es richtig verstanden habe, soll es wohl immer der Prozess einer bestimmten Anwendung sein.User007 schrieb:Dswg. ja auch meine Nachfrage zum (immer gleichen?) zu beendenden Prozess
Nur dann ergäbe das einen Sinn.
Denn jedes mal in dem Skript manuell den Namen des Prozesses zu ändern, wäre wohl zu viel Aufwand. Da kann man auch gleich über den Task-Manager gehen.
User007
Vice Admiral
- Registriert
- Feb. 2008
- Beiträge
- 6.403
Eben - siehe meinen Beitrag in #5.NotNerdNotDau schrieb:Denn jedes mal in dem Skript manuell den Namen des Prozesses zu ändern, wäre wohl zu viel Aufwand. Da kann man auch gleich über den Task-Manager gehen.
Sorry, aber das seh' ich überhaupt nicht so - solang' das Ziel erfolgreich erreicht wird, ist's doch egal, womit!NotNerdNotDau schrieb:Man sollte sich tunlichst von dem altbackenen CMD/BAT verabschieden und PowerShell für solche Zwecke nutzen.
Darauf wird hier, aber nicht nur hier, bei jeder Gelegenheit hingewiesen -und das vollkommen zurecht.
Der (angeblich überall immer) postulierte Gedanke die neuere Befehlsumgebung, in diesem Fall die PowerShell, könnte da was "besser", als die zwar alte dafür aber durchaus bewährte und nach wie vor zuverlässig arbeitende Kommandozeile, stimmt so pauschal einfach nicht.
Sie mag sicherlich speziell für modernere Anwendungsszenarien ihre Vorteile haben, aber dann handelt's sich auch meistens um komplexere Nutzungsfälle und nicht so "Befehlseinzeiler".
Ehrlich, ich kasper doch nicht für so was mit 'nem mehrzeiligen PS-Script rum, wenn mir das gleiche Ergebnis genauso zuverlässig auch auf althergebrachte Weise erledigt wird. 🤷♂️
Sie mag sicherlich speziell für modernere Anwendungsszenarien ihre Vorteile haben, aber dann handelt's sich auch meistens um komplexere Nutzungsfälle und nicht so "Befehlseinzeiler".
Ehrlich, ich kasper doch nicht für so was mit 'nem mehrzeiligen PS-Script rum, wenn mir das gleiche Ergebnis genauso zuverlässig auch auf althergebrachte Weise erledigt wird. 🤷♂️
N
NotNerdNotDau
Gast
Na ja, PowerShell ist ja im Grunde wie CMD, nur eben ausgereifter, komplexer, flexibler und vor allem sicherer.
Wir befinden uns ja schließlich nicht mehr im Zeitalter von XP.
Das würde in dem hier thematisierten Vorhaben reichen:
Das Problem hierbei könnten nur die vorgegebenen Sicherheitseinstellungen der sog. "Ausführungsrichtlinien" sein. Was aber einer der großen Vorteile gegenüber CMD darstellt.
Wenn man dahingehend die entsprechenden Einstellungen anpasst, kann man PS-Skripte sogar mit doppeltem Mausklick und mit den für solche Vorhaben erforderlichen erweiterten Rechten ausführen.
Wir befinden uns ja schließlich nicht mehr im Zeitalter von XP.
Auch das ist mit PS möglich.User007 schrieb:Befehlseinzeiler
Das würde in dem hier thematisierten Vorhaben reichen:
PowerShell:
Get-Process | Where-Object -FilterScript {$_.ProcessName -Eq "excel"} | Stop-Process -PassThru
Das Problem hierbei könnten nur die vorgegebenen Sicherheitseinstellungen der sog. "Ausführungsrichtlinien" sein. Was aber einer der großen Vorteile gegenüber CMD darstellt.
Wenn man dahingehend die entsprechenden Einstellungen anpasst, kann man PS-Skripte sogar mit doppeltem Mausklick und mit den für solche Vorhaben erforderlichen erweiterten Rechten ausführen.
Zuletzt bearbeitet von einem Moderator:
User007
Vice Admiral
- Registriert
- Feb. 2008
- Beiträge
- 6.403
NotNerdNotDau schrieb:Was aber einer der großen Vorteile gegenüber CMD darstellt.
[...]
[...] kann man PS-Skripte sogar mit doppeltem Mausklick und mit den für solche Vorhaben erforderlichen erweiterten Rechten ausführen.
Aber genau das mein' ich doch - wo im 08/15-Heimgebrauch werden denn für solche Einzeiler die komplexeren "Vorteile" bzw. großartig erweiterte Rechte benötigt?
Ich seh' da die PS auch einfach "übermotorisiert". Sie hat sicherlich ihre Daseinsberechtigung, aber warum soll man nicht bewährt Bekanntes mit dem man umgehen kann nutzen, anstatt sich mühselig in neue Methoden einarbeiten zu müssen?
Zumal die letztlich in den Grundfunktionalitäten eh den gleichen Befehlsinterpreter nutzen - vllt. halt doch mal wieder "More Practice than Design!".
Ich seh' da die PS auch einfach "übermotorisiert". Sie hat sicherlich ihre Daseinsberechtigung, aber warum soll man nicht bewährt Bekanntes mit dem man umgehen kann nutzen, anstatt sich mühselig in neue Methoden einarbeiten zu müssen?
Zumal die letztlich in den Grundfunktionalitäten eh den gleichen Befehlsinterpreter nutzen - vllt. halt doch mal wieder "More Practice than Design!".
Ähnliche Themen
- Antworten
- 58
- Aufrufe
- 1.068
- Antworten
- 11
- Aufrufe
- 503
- Antworten
- 2
- Aufrufe
- 303
- Antworten
- 7
- Aufrufe
- 1.644
- Antworten
- 21
- Aufrufe
- 1.430