Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Powershelle Prozess über Out-Grid-View stoppen

Frage Entwicklung Batch & Shell

Mitglied: Bugger

Bugger (Level 1) - Jetzt verbinden

11.11.2014 um 09:31 Uhr, 941 Aufrufe, 11 Kommentare

Hallo,

ich habe folgenden Code:

01.
Get-WmiObject Win32_Process -computername $objListbox.SelectedItems -Filter "Name='firefox.exe' OR Name='AcroRd32.exe'" | 
02.
select Name, Path, PSComputername, @{n="User";e={$_.GetOwner().user}} | sort PSComputername | ogv -title "Prozesse" -PassThru |
Gibt es einen Kill Befehl sodass man im ogv Fenster die Prozesse auswählen kann die gestoppt werden sollen?

Im grunde möchte ich das gleiche wie das hier:

01.
Get-Process | 
02.
 
03.
Out-GridView -PassThru | 
04.
 
05.
Stop-Process 
Nur ist das für meinen Code nicht wirklich anwendbar, da es nicht über WMI läuft. Danke im Voraus.
Mitglied: colinardo
11.11.2014, aktualisiert um 11:18 Uhr
Bitte warten ..
Mitglied: Bugger
11.11.2014 um 10:36 Uhr
Schade, dachte es wäre vielleicht so einfach wie mit dem anderen Befehl.

Der Befehl oben ist bereits bestandteil einer GUI. Wie müsste denn der Befehl lauten, damit er nach sort PSComputername | den Befehl an ein neues sich dann öffnentes GUI Fenster weiter gibt?
Bitte warten ..
Mitglied: colinardo
11.11.2014, aktualisiert um 11:00 Uhr
Hier eine Beispiel-Form zum Auflisten und Beenden von Prozessen. In der Demo werden die lokalen Prozesse aufgelistet, aber das kannst du ja in den Parametern von Get-WmiObject ändern.
01.
function GenerateForm { 
02.
 
03.
#region Import the Assemblies 
04.
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null 
05.
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null 
06.
#endregion 
07.
 
08.
#region Generated Form Objects 
09.
$form1 = New-Object System.Windows.Forms.Form 
10.
$btnKill = New-Object System.Windows.Forms.Button 
11.
$dgv = New-Object System.Windows.Forms.DataGridView 
12.
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState 
13.
#endregion Generated Form Objects 
14.
 
15.
#---------------------------------------------- 
16.
# Event Script Blocks 
17.
#---------------------------------------------- 
18.
 
19.
$update_gridview = { 
20.
    $processes = gwmi Win32_Process -ComputerName localhost | select Name,Path,PSComputername,@{n="User";e={$_.GetOwner().user}},ProcessId 
21.
    $arrList = New-Object System.Collections.ArrayList 
22.
    $arrList.AddRange($processes) 
23.
    $dgv.DataSource = $arrList 
24.
 
25.
26.
 
27.
$btnKill_OnClick=  
28.
29.
    $sel_proc = $dgv.Rows[$dgv.SelectedRows[0].Index].Cells['ProcessId'].Value 
30.
    [System.Windows.Forms.MessageBox]::Show("Killing Process wih ID: $sel_proc") 
31.
    gwmi Win32_Process -ComputerName localhost -Filter "ProcessId='$sel_proc'" | %{$_.Terminate()} 
32.
    &$update_gridview 
33.
34.
 
35.
$handler_form1_Load=  
36.
37.
   &$update_gridview 
38.
39.
 
40.
$OnLoadForm_StateCorrection= 
41.
{#Correct the initial state of the form to prevent the .Net maximized form issue 
42.
	$form1.WindowState = $InitialFormWindowState 
43.
44.
 
45.
#---------------------------------------------- 
46.
#region Generated Form Code 
47.
$System_Drawing_Size = New-Object System.Drawing.Size 
48.
$System_Drawing_Size.Height = 307 
49.
$System_Drawing_Size.Width = 525 
50.
$form1.ClientSize = $System_Drawing_Size 
51.
$form1.DataBindings.DefaultDataSourceUpdateMode = 0 
52.
$form1.Name = "form1" 
53.
$form1.Text = "Prozesse" 
54.
$form1.add_Load($handler_form1_Load) 
55.
 
56.
$btnKill.Anchor = 10 
57.
 
58.
$btnKill.DataBindings.DefaultDataSourceUpdateMode = 0 
59.
 
60.
$System_Drawing_Point = New-Object System.Drawing.Point 
61.
$System_Drawing_Point.X = 419 
62.
$System_Drawing_Point.Y = 278 
63.
$btnKill.Location = $System_Drawing_Point 
64.
$btnKill.Name = "btnKill" 
65.
$System_Drawing_Size = New-Object System.Drawing.Size 
66.
$System_Drawing_Size.Height = 23 
67.
$System_Drawing_Size.Width = 94 
68.
$btnKill.Size = $System_Drawing_Size 
69.
$btnKill.TabIndex = 1 
70.
$btnKill.Text = "Kill process" 
71.
$btnKill.UseVisualStyleBackColor = $True 
72.
$btnKill.add_Click($btnKill_OnClick) 
73.
 
74.
$form1.Controls.Add($btnKill) 
75.
 
76.
$dgv.AllowUserToAddRows = $False 
77.
$dgv.AllowUserToDeleteRows = $False 
78.
$dgv.AllowUserToResizeRows = $False 
79.
$dgv.Anchor = 15 
80.
$dgv.DataBindings.DefaultDataSourceUpdateMode = 0 
81.
$System_Drawing_Point = New-Object System.Drawing.Point 
82.
$System_Drawing_Point.X = 12 
83.
$System_Drawing_Point.Y = 12 
84.
$dgv.Location = $System_Drawing_Point 
85.
$dgv.MultiSelect = $False 
86.
$dgv.Name = "dgv" 
87.
$dgv.ReadOnly = $True 
88.
$dgv.RowHeadersVisible = $False 
89.
$dgv.RowHeadersWidth = 40 
90.
$dgv.SelectionMode = 1 
91.
$System_Drawing_Size = New-Object System.Drawing.Size 
92.
$System_Drawing_Size.Height = 260 
93.
$System_Drawing_Size.Width = 501 
94.
$dgv.Size = $System_Drawing_Size 
95.
$dgv.TabIndex = 0 
96.
 
97.
$form1.Controls.Add($dgv) 
98.
 
99.
#endregion Generated Form Code 
100.
 
101.
#Save the initial state of the form 
102.
$InitialFormWindowState = $form1.WindowState 
103.
#Init the OnLoad event to correct the initial state of the form 
104.
$form1.add_Load($OnLoadForm_StateCorrection) 
105.
#Show the Form 
106.
$form1.ShowDialog()| Out-Null 
107.
 
108.
} #End Function 
109.
 
110.
#Call the Function 
111.
GenerateForm
Grüße Uwe
Bitte warten ..
Mitglied: colinardo
11.11.2014, aktualisiert um 11:22 Uhr
Ach jetzt weis ich was du meinst, sorry, war gerade auf dem falschen Dampfer Du kannst du es natürlich auch so mit Out-GridView machen:
01.
.............. | sort PSComputername | ogv -title "Prozesse" -PassThru | %{$_.Terminate()}
indem du dann einfach die Terminate()-Methode für jedes in der Pipe übergebene Objekt aufrufst.
Bitte warten ..
Mitglied: Bugger
11.11.2014, aktualisiert um 11:25 Uhr
Funktioniert perfekt! Habe es in mein Script eingetragen, Computername geändert und es funktioniert auch remote.

Habe allerdings noch ein kleines Problem mit meiner Haupt GUI und zwar bleibt diese immer im Vordergrund egal wo ich sonst hin klicke, dadurch habe ich zuerst garnicht das Fenster bzgl. der Prozess Kills gesehen. Weißt du welcher Befehl mir dafür fehlt oder wo das stehen könnte?

-edit-
Habe gerade noch deinen Nachtrag gesehen, also mit dem funktioniert es leider nicht. Den hatte ich bei meinen Recherchen auch schon gefunden, da bekomme ich immer:

Fehler beim Aufrufen der Methode, da [Selected.System.Management.ManagementObject] keine Methode mit dem Namen "Terminate" enthält.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 11.11.2014, aktualisiert 20.11.2014
Zitat von Bugger:
Fehler beim Aufrufen der Methode, da [Selected.System.Management.ManagementObject] keine Methode mit dem Namen
"Terminate" enthält.
ah ja stimmt, der geht so nur wenn keine Selects davor sitzen.
Alternativ geht es aber auch so:
01.
........ | sort PSComputername | ogv -title "Prozesse" -PassThru | %{gwmi Win32_Process -Computername XYZ -Filter "Name='$($_.Name)'" | %{$_.Terminate()}}
Den Computernamen natürlich anpassen.
Bitte warten ..
Mitglied: Bugger
11.11.2014 um 11:38 Uhr
Ja, so funktioniert es, vielen Dank! Der andere "Taskmanager" ist aber auch klasse.^^

Hast du noch eine Idee bzgl. der Vordergrund Problematik?
Bitte warten ..
Mitglied: colinardo
11.11.2014, aktualisiert um 11:45 Uhr
Zitat von Bugger:
Ja, so funktioniert es, vielen Dank! Der andere "Taskmanager" ist aber auch klasse.^^
Hast du noch eine Idee bzgl. der Vordergrund Problematik?
Ohne zu wissen wie deinen Code aussieht, schwer zu sagen.

Hier hast du ein Beispiel mit 2 Forms, die HauptForm ruft den Taskmanager auf welcher im Vordergrund als Child-Form läuft.
01.
 
02.
function TaskmanagerForm { 
03.
 
04.
#region Import the Assemblies 
05.
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null 
06.
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null 
07.
#endregion 
08.
 
09.
#region Generated Form Objects 
10.
$form1 = New-Object System.Windows.Forms.Form 
11.
$btnKill = New-Object System.Windows.Forms.Button 
12.
$dgv = New-Object System.Windows.Forms.DataGridView 
13.
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState 
14.
#endregion Generated Form Objects 
15.
 
16.
#---------------------------------------------- 
17.
#Generated Event Script Blocks 
18.
#---------------------------------------------- 
19.
 
20.
$update_gridview = { 
21.
    $processes = gwmi Win32_Process -ComputerName localhost | select Name,Path,PSComputername,@{n="User";e={$_.GetOwner().user}},ProcessId 
22.
    $arrList = New-Object System.Collections.ArrayList 
23.
    $arrList.AddRange($processes) 
24.
    $dgv.DataSource = $arrList 
25.
 
26.
27.
 
28.
$btnKill_OnClick=  
29.
30.
    $sel_proc = $dgv.Rows[$dgv.SelectedRows[0].Index].Cells['ProcessId'].Value 
31.
    [System.Windows.Forms.MessageBox]::Show("Killing Process wih ID: $sel_proc") 
32.
    gwmi Win32_Process -ComputerName localhost -Filter "ProcessId='$sel_proc'" | %{$_.Terminate()} 
33.
    &$update_gridview 
34.
35.
 
36.
$handler_form1_Load=  
37.
38.
   &$update_gridview 
39.
40.
 
41.
$OnLoadForm_StateCorrection= 
42.
{#Correct the initial state of the form to prevent the .Net maximized form issue 
43.
	$form1.WindowState = $InitialFormWindowState 
44.
45.
 
46.
#---------------------------------------------- 
47.
#region Generated Form Code 
48.
$System_Drawing_Size = New-Object System.Drawing.Size 
49.
$System_Drawing_Size.Height = 307 
50.
$System_Drawing_Size.Width = 525 
51.
$form1.ClientSize = $System_Drawing_Size 
52.
$form1.DataBindings.DefaultDataSourceUpdateMode = 0 
53.
$form1.Name = "form1" 
54.
$form1.Text = "Prozesse" 
55.
$form1.add_Load($handler_form1_Load) 
56.
 
57.
$btnKill.Anchor = 10 
58.
 
59.
$btnKill.DataBindings.DefaultDataSourceUpdateMode = 0 
60.
 
61.
$System_Drawing_Point = New-Object System.Drawing.Point 
62.
$System_Drawing_Point.X = 419 
63.
$System_Drawing_Point.Y = 278 
64.
$btnKill.Location = $System_Drawing_Point 
65.
$btnKill.Name = "btnKill" 
66.
$System_Drawing_Size = New-Object System.Drawing.Size 
67.
$System_Drawing_Size.Height = 23 
68.
$System_Drawing_Size.Width = 94 
69.
$btnKill.Size = $System_Drawing_Size 
70.
$btnKill.TabIndex = 1 
71.
$btnKill.Text = "Kill process" 
72.
$btnKill.UseVisualStyleBackColor = $True 
73.
$btnKill.add_Click($btnKill_OnClick) 
74.
 
75.
$form1.Controls.Add($btnKill) 
76.
 
77.
$dgv.AllowUserToAddRows = $False 
78.
$dgv.AllowUserToDeleteRows = $False 
79.
$dgv.AllowUserToResizeRows = $False 
80.
$dgv.Anchor = 15 
81.
$dgv.DataBindings.DefaultDataSourceUpdateMode = 0 
82.
$System_Drawing_Point = New-Object System.Drawing.Point 
83.
$System_Drawing_Point.X = 12 
84.
$System_Drawing_Point.Y = 12 
85.
$dgv.Location = $System_Drawing_Point 
86.
$dgv.MultiSelect = $False 
87.
$dgv.Name = "dgv" 
88.
$dgv.ReadOnly = $True 
89.
$dgv.RowHeadersVisible = $False 
90.
$dgv.RowHeadersWidth = 40 
91.
$dgv.SelectionMode = 1 
92.
$System_Drawing_Size = New-Object System.Drawing.Size 
93.
$System_Drawing_Size.Height = 260 
94.
$System_Drawing_Size.Width = 501 
95.
$dgv.Size = $System_Drawing_Size 
96.
$dgv.TabIndex = 0 
97.
 
98.
$form1.Controls.Add($dgv) 
99.
 
100.
#endregion Generated Form Code 
101.
 
102.
#Save the initial state of the form 
103.
$InitialFormWindowState = $form1.WindowState 
104.
#Init the OnLoad event to correct the initial state of the form 
105.
$form1.add_Load($OnLoadForm_StateCorrection) 
106.
#Show the Form 
107.
$form1.ShowDialog()| Out-Null 
108.
 
109.
} #End Function 
110.
 
111.
 
112.
# Main Form 
113.
function GenerateMainForm { 
114.
 
115.
 
116.
#region Import the Assemblies 
117.
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null 
118.
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null 
119.
#endregion 
120.
 
121.
#region Generated Form Objects 
122.
$form1 = New-Object System.Windows.Forms.Form 
123.
$button1 = New-Object System.Windows.Forms.Button 
124.
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState 
125.
#endregion Generated Form Objects 
126.
 
127.
#---------------------------------------------- 
128.
#Generated Event Script Blocks 
129.
#---------------------------------------------- 
130.
#Provide Custom Code for events specified in PrimalForms. 
131.
$handler_button1_Click=  
132.
133.
    TaskmanagerForm 
134.
135.
 
136.
$OnLoadForm_StateCorrection= 
137.
{#Correct the initial state of the form to prevent the .Net maximized form issue 
138.
	$form1.WindowState = $InitialFormWindowState 
139.
140.
 
141.
#---------------------------------------------- 
142.
#region Generated Form Code 
143.
$System_Drawing_Size = New-Object System.Drawing.Size 
144.
$System_Drawing_Size.Height = 272 
145.
$System_Drawing_Size.Width = 292 
146.
$form1.ClientSize = $System_Drawing_Size 
147.
$form1.DataBindings.DefaultDataSourceUpdateMode = 0 
148.
$form1.Name = "form1" 
149.
$form1.Text = "Primal Form" 
150.
 
151.
 
152.
$button1.DataBindings.DefaultDataSourceUpdateMode = 0 
153.
 
154.
$System_Drawing_Point = New-Object System.Drawing.Point 
155.
$System_Drawing_Point.X = 12 
156.
$System_Drawing_Point.Y = 12 
157.
$button1.Location = $System_Drawing_Point 
158.
$button1.Name = "button1" 
159.
$System_Drawing_Size = New-Object System.Drawing.Size 
160.
$System_Drawing_Size.Height = 23 
161.
$System_Drawing_Size.Width = 75 
162.
$button1.Size = $System_Drawing_Size 
163.
$button1.TabIndex = 0 
164.
$button1.Text = "button1" 
165.
$button1.UseVisualStyleBackColor = $True 
166.
$button1.add_Click($handler_button1_Click) 
167.
 
168.
$form1.Controls.Add($button1) 
169.
 
170.
#endregion Generated Form Code 
171.
 
172.
#Save the initial state of the form 
173.
$InitialFormWindowState = $form1.WindowState 
174.
#Init the OnLoad event to correct the initial state of the form 
175.
$form1.add_Load($OnLoadForm_StateCorrection) 
176.
#Show the Form 
177.
$form1.ShowDialog()| Out-Null 
178.
 
179.
} #End Function 
180.
 
181.
GenerateMainForm
Bitte warten ..
Mitglied: Bugger
11.11.2014 um 12:11 Uhr
Mein Script basiert auf den Multi Select Box von Microsoft, wenn du da den Fehler findest, findest du ihn auch bei mir:

http://technet.microsoft.com/en-us/library/ff730950.aspx
Bitte warten ..
Mitglied: colinardo
11.11.2014, aktualisiert um 15:49 Uhr
Zitat von Bugger:
Mein Script basiert auf den Multi Select Box von Microsoft, wenn du da den Fehler findest, findest du ihn auch bei mir:
http://technet.microsoft.com/en-us/library/ff730950.aspx
Na dann ist es klar. Dein Problem verursacht folgende Zeile im Script, die die Haupt-Form immer im Vordergrund darstellt
$objForm.Topmost = $True
Kommentiere oder lösche die Zeile, feddich

Grüße Uwe
Bitte warten ..
Mitglied: Bugger
11.11.2014 um 16:02 Uhr
Oh man, ich habe vorhin noch soviel geguckt und Zeilen rausgelöscht, keine Ahnung warum ich diese nicht gefunden habe.^^ Vielen Dank.

Du hast mir jetzt soviel geholfen, da weiß ich garnicht welche Antwort ich als Lösung markieren soll :D

Ich hätte da noch eine andere Frage, hast du dich mal mit der Remote Deinstallation von Programmen mit Powershell auseinander gesetzt?
Funktioniert mit win32_product aber der Befehl ist böse weil er die Konfig aller installierten Programme umschreibt sowie unmengen an Einträgen ins Ereignislog schreibt und die bislang beste Möglichkeit mit Registry auslesen habe ich nicht wirklich zum laufen bekommen.
Bitte warten ..
Ähnliche Inhalte
Erkennung und -Abwehr
Malware-Verteilung: Hacker infiltrierten Update-Prozess der Ask.com-Toolbar (6)

Link von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Exchange Server
Nur externe Out Of Office Nachtichten (5)

Frage von DelPiero zum Thema Exchange Server ...

Monitoring
Nagios Fehlermeldung IndexError: list index out of range (4)

Frage von itazubii zum Thema Monitoring ...

Visual Studio
Eigener Prozess ist schneller als Thread (13)

Frage von Aicher1998 zum Thema Visual Studio ...

Neue Wissensbeiträge
Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(2)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Viren und Trojaner

Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Systemdateien
Warum System auf "C:" (29)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Cisco SG200: Auf bestimmtem vLAN bestimmte TCP-Ports sperren (19)

Frage von SarekHL zum Thema LAN, WAN, Wireless ...

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Cloud-Dienste
gelöst Bitcoins minen über Nacht? (16)

Frage von 1410640014 zum Thema Cloud-Dienste ...