Powershell: Überprüfen ob ein Programm gestartet ist un wem es gehört

fr0d

Cadet 1st Year
Registriert
Apr. 2017
Beiträge
13
Hallo,
ich möchte ein Programm starten, muß aber vorher ausschließen, daß es schon gestartet ist.

Das Programm soll gestartet werden
Code:
$Start =  "c:\Programme\TightVNC\tvnserver.exe -run "
Invoke-Expression $Start

Mit diesem Aufruf bekomme ich mehrere Prozesse angezeigt
Code:
 $proc = Get-Process | Where-Object {$_.ProcessName -eq "tvnserver"}

Ich müßte also noch zusätzlich wissen:
- wer das Programm gestartet hat
- oder besser, wie das Programm gestartet wurde, also "tvnserver.exe -run"
- oder wie kann ich das Problem anders lösen?

Wie kann ich das herausfinden und testen?

Vielen Dank für Hinweise.
 
Probier doch:

$proc = Get-Process -IncludeUserName | Where-Object {$_.ProcessName -eq "tvnserver"}
 
Leider meckert er:
---------------------
Get-Process : Der IncludeUserName-Parameter erfordert erhöhte Benutzerrechte. Versuchen Sie, den Befehl in einer
Sitzung auszuführen, die mit erhöhten Rechten geöffnet wurde (d. h. "Als Administrator ausführen").
In Zeile:1 Zeichen:9
+ $proc = Get-Process -IncludeUserName | Where-Object {$_.ProcessName - ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Get-Process], InvalidOperationException
+ FullyQualifiedErrorId : IncludeUserNameRequiresElevation,Microsoft.PowerShell.Commands.GetProcessCommand
-----------------------

Und als Administrator soll das nicht ausgeführt werden.
 
naja, erweiterte Prozessinfos gibts ja auch im Taskmanager nur mit Admin-Rechten .... dann wird das nix als User.
 
http://stackoverflow.com/a/35195953
Code:
$owners = @{}
gwmi win32_process |% {$owners[$_.handle] = $_.getowner().user}
$ps = get-process | select processname,Id,@{l="Owner";e={$owners[$_.id.tostring()]}}
In $ps kannst du dann nachsehen.
 
Und den Befehl, mit dem das Programm gestartet wurde, kann man nicht feststellen?
Ergänzung ()

Gut, jetzt habe ich alle Prozesse, die dem aktuellen "owner"gehören.
Wie finde ich den Prozeß, dem "owner"und das Programm "tvnserver" gehören?
 
Zuletzt bearbeitet:
Mit dem Script oben bekommst du Infos zu allen Prozessen und dessen Owner, nicht nur zum Aktuellen. Je nach Rechteausweitung hast du Zugriff oder nicht, das kannst du natürlich nur umgehen, wenn du das Script selbst bzw. PowerShell mit Adminrechten ausführst.
Code:
(($ps | ? { $_.ProcessName -eq "lalala" }).Owner
 
Gut, damit probiere ich es jetzt mal; allerdings habe ich im Moment keine Zeit mehr.

Vielen Dank jedenfalls.
 
Zurück
Oben