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, 922 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
Access ein Script alle X Minuten ausführen und bei Bedarf stoppen (5)

Frage von thomas1972 zum Thema Microsoft Office ...

Datenbanken
MySQL: Zwei Spalten in einer View zählen (11)

Frage von Memo66 zum Thema Datenbanken ...

Datenbanken
gelöst Täglicher Export einer View aus MS SQL 2008 in Excel oder CSV (9)

Frage von Arafat zum Thema Datenbanken ...

Visual Studio
gelöst C-Sharp WPF Grid Visibility (4)

Frage von mayho33 zum Thema Visual Studio ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...