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

Windows Powershell Prozesse und Dienste auslesen

Frage Entwicklung

Mitglied: 116770

116770 (Level 1)

30.06.2014 um 18:48 Uhr, 2813 Aufrufe, 12 Kommentare, 1 Danke

Hallo liebe Foren Gemeinde,

ich hoffe ich bin hier richtig und ihr könnt mir helfen.
Zu meinen Typ, ich bin total der Anfänger was das Programmieren (Scripten) betrifft und brauch unbedingt Hilfe bei einer Aufgabe.

Hier die Aufgabe:

Erstellen Sie ein Script in PowerShell, welches mit Hilfe eines Menüs das Verwalten von Prozessen und Diensten unter Windows ermöglicht.

Welche Möglichkeiten soll das Script bieten:

- Verwaltung
- Auswahl Prozesse oder Dienste
- Suche nach bestimmten Prozessen oder Diensten.
- Statusanzeige eines bestimmten Prozesses oder Dienstes
- Anzeige einer möglichen Parameterliste zur weiteren Auswahl
- Auswahl von Optionen
- Auslastung
- Es soll der Gesamte RAM-Verbrauch aller Prozesse angezeigt werden
- Es soll die Gesamte CPU-Auslastung angezeigt werden


Kriterien: Ablauf des Scripts:

- Muss-Kriterien
- Abfrage bezüglich Dienst-, Prozessverwaltung oder Auslastung
- Abfrage bezüglich Korrektheit der Auswahl oder Neuwahl
- Kalibriert Dienst/Prozess und gibt mögliche Parameter an
- Parameter kann ausgewählt werden, welcher dann an dem ausgewählten wird Dienst/Prozess angewendet
- Kann-Kriterien
- RAM und CPU-Auslastung sollen in einer Log-File gespeichert werden können

Info: Soll grafisch dargestellt werden!

Ich habe mir als ersten ein Menüstrukturplan/Ablaufplan erstellt der im Anhang zu sehen ist.


Mein aktueller Fortschritt sieht derzeit so aus(Menü steht, Funktionen gehen leider nicht, komme einfach nicht weiter) Bitte um eine starke tolle Hilfe, Vielen Dank im vorraus:


[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

#System.Windows.Forms ist hier dafür zuständig, dass man überhaupt ein Fenster und grafische Objekte erstellen kann.
#System.Drawing verwenden wir um die Größe und Position der einzelnen Elemente im Fenster zu bestimmen.

  1. Grundgerüst für grafische Darstellung.

#Das Grundfenster unseres Dialogs erstellen wir wie folgt:
$Form1 = New-Object System.Windows.Forms.Form
#Variablename in Rot, Objektname folgt nach dem gleich Zeichen
$Form1.Text = "Prozesse und Dienste"
#Überschrift bzw. Name des geöffnetens Fensters
$Form1.Size = New-Object System.Drawing.Size(300,280)
#Größe des geöffneten Fensters
$Form1.StartPosition = "CenterScreen"
#Wo wird das Fenster auf dem Desktop geöffnet

  1. Buttons werden angelegt.

#Nun erzeugen wir uns noch zwei Buttons OK und Cancel:
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Text = "Fortfahren"
#Button 1 Ausführen
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Text = "Beenden"
#Button 2 Schließen

#Und fügen diese zum Fenster an einer festen Position und Größe hinzu:

#OK Button
$OKButton.Location = New-Object System.Drawing.Size(75,200)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$Form1.Controls.Add($OKButton)

#Cancel Button
$CancelButton.Location = New-Object System.Drawing.Size(150,200)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$Form1.Controls.Add($CancelButton)


#Aktionen der Button:

#Cancel Button
$CancelButton.Add_Click({$Form1.Close()})
#Fenster wird geschlossen

#Combobox wird durch Button der ersten Form aufgerufen
$OKButton.Add_Click({


$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Auswahlmenü"
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{
foreach ($objItem in $objCombobox.SelectedItem)
{$x += $objItem}
$objForm.Close()
}
})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$objForm.Close()}})
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click(
{
foreach ($objItem in $objCombobox.SelectedItem)
{$x += $objItem}
$objForm.Close()
})
$objForm.Controls.Add($OKButton)
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Zurück"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Treffen Sie bitte eine Auswahl:"
$objForm.Controls.Add($objLabel)
$objCombobox = New-Object System.Windows.Forms.Combobox
$objCombobox.Location = New-Object System.Drawing.Size(10,40)
$objCombobox.Size = New-Object System.Drawing.Size(260,20)
[void] $objCombobox.Items.Add("Auswahl Prozesse")
[void] $objCombobox.Items.Add("Auswahl Dienste ")
[void] $objCombobox.Items.Add("RAM-Auslastung")
[void] $objCombobox.Items.Add("CPU-Auslastung")
$objCombobox.Height = 70
$objForm.Controls.Add($objCombobox)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
$x

})







$Form1.ShowDialog()
#Form1 wird auf dem Desktop geöffnet






Mitglied: Xaero1982
30.06.2014 um 19:35 Uhr
Hi,

bitte gleich bearbeiten und Code Tags benutzen <"code"> <"/code"> ohne "".

Gruß
Bitte warten ..
Mitglied: colinardo
30.06.2014, aktualisiert 01.07.2014
Moin Johannes, Willkommen auf Administrator.de!
Hier mal was zum Basteln als Anregung...:
(p.s. zum Suchen können Wildcards benutzt werden z.B. "Outl*" für die Suche vom Outlook-Prozess)

Den Rest will ich dir nicht vorweg nehmen, der ist zum Lernen was ja vermutlich auch die Aufgabe deiner Hausaufgabe sein sollte.
01.
#Form Function 
02.
function GenerateForm { 
03.
 
04.
#region Import the Assemblies 
05.
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null 
06.
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null 
07.
#endregion 
08.
 
09.
#region Generated Form Objects 
10.
$formMain = New-Object System.Windows.Forms.Form 
11.
$tabs = New-Object System.Windows.Forms.TabControl 
12.
$tabProcesses = New-Object System.Windows.Forms.TabPage 
13.
$txtSearchProcess = New-Object System.Windows.Forms.TextBox 
14.
$label1 = New-Object System.Windows.Forms.Label 
15.
$dgvProcesses = New-Object System.Windows.Forms.DataGridView 
16.
$tabServices = New-Object System.Windows.Forms.TabPage 
17.
$txtSearchServices = New-Object System.Windows.Forms.TextBox 
18.
$label2 = New-Object System.Windows.Forms.Label 
19.
$dgvServices = New-Object System.Windows.Forms.DataGridView 
20.
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState 
21.
#endregion Generated Form Objects 
22.
 
23.
#---------------------------------------------- 
24.
# Event Script Blocks 
25.
#---------------------------------------------- 
26.
 
27.
# Wird bei jedem ändern des aktiven Tabs aufgerufen 
28.
$handler_tabs_SelectedIndexChanged = 
29.
30.
    # je nachdem welcher Tab aktiviert wurde zeige entweder Prozesse oder Dienste 
31.
    switch($tabs.SelectedIndex){ 
32.
        0 { 
33.
            # rufe den Scriptblock zum auflisten der Prozesse auf 
34.
            &$enumAllProcesses 
35.
            break 
36.
37.
        1{ 
38.
            # rufe den Scriptblock zum auflisten der Dienste auf 
39.
            &$enumAllServices 
40.
            break 
41.
42.
43.
 
44.
45.
 
46.
# Fängt das Keypress-Event in der Suchbox ab 
47.
$handler_txtSearchProcess_KeyPress=  
48.
49.
    # wenn die Enter-Taste gedrückt wurde und die Textbox nicht leer ist rufe den Scriptblock zum auflisten der Prozesse mit dem Suchstring als Parameter auf 
50.
    # wenn die Suchbox leer ist und Enter gedrückt wurde liste stattdessen alle Prozesse auf 
51.
    if($_.KeyChar -eq 13 -and $txtSearchProcess.Text -ne ""){ 
52.
        &$enumAllProcesses -namefilter $txtSearchProcess.Text 
53.
    }elseif($_.KeyChar -eq 13 -and $txtSearchProcess.Text -eq ""){ 
54.
        &$enumAllProcesses 
55.
56.
 
57.
58.
# das selbe wie oben nur für die zweite Suchbox 
59.
$handler_txtSearchServices_KeyPress=  
60.
61.
    if($_.KeyChar -eq 13 -and $txtSearchServices.Text -ne ""){ 
62.
        &$enumAllServices -namefilter $txtSearchServices.Text 
63.
    }elseif($_.KeyChar -eq 13 -and $txtSearchServices.Text -eq ""){ 
64.
         &$enumAllServices 
65.
66.
 
67.
68.
 
69.
# beim Laden der Form den Scriptblock zum Auflisten aller Prozesse ausführen 
70.
$handler_formMain_Load={ 
71.
    &$enumAllProcesses 
72.
73.
 
74.
$OnLoadForm_StateCorrection= 
75.
{#Correct the initial state of the form to prevent the .Net maximized form issue 
76.
	$formMain.WindowState = $InitialFormWindowState 
77.
78.
 
79.
# ------------------- Prozedur die die Prozesse auflistet und im DataGridView anzeigt 
80.
$enumAllProcesses = { 
81.
param([string]$namefilter = "*")  # parameter für eine eventuelle Filterung (wenn Parameter nicht übergeben wird werden alle Prozesse angezeigt") 
82.
    # Filtere Prozesse und sortiere nach dem Namen 
83.
    $allProcesses = Get-Process | ?{$_.ProcessName -like $namefilter} | select -Property * -ExcludeProperty "__NounName" | Sort Name 
84.
    if($allProcesses){ 
85.
        # Arraylist erzeugen dem alle Prozesse zugewiesen werden (wird benötigt um die Powershell-Objekte direkt und ohne Umwege im DataGridView als Datenquelle anzugeben) 
86.
        $arr = New-Object System.Collections.ArrayList 
87.
        # wenn es mehr als 1 Prozess ist unterschiedliche Methoden verwenden um die Objekte der Arraylist hinzuzufügen 
88.
        if($allProcesses.Count -gt 1){ 
89.
            $arr.AddRange($allProcesses) 
90.
        }else{ 
91.
            $arr.Add($allProcesses) 
92.
93.
        # die Arraylist als Datenquelle des DataGridView Steuerelementes festlegen (Daten werden ab jetzt darin angezeigt) 
94.
        $dgvProcesses.DataSource = $arr 
95.
96.
97.
 
98.
# äquivalente Funktion wie oben nur für die Dienste 
99.
$enumAllServices = { 
100.
param([string]$namefilter = "*") 
101.
    $allServices = Get-Service | ?{$_.ServiceName -like $namefilter} | sort Name 
102.
    if($allServices){ 
103.
        $arr = New-Object System.Collections.ArrayList 
104.
        if($allServices.Count -gt 1){ 
105.
            $arr.AddRange($allServices) 
106.
        }else{ 
107.
            $arr.Add($allServices) 
108.
109.
        $dgvServices.DataSource = $arr 
110.
111.
112.
 
113.
#---------------------------------------------- 
114.
#region Form Code 
115.
$System_Drawing_Size = New-Object System.Drawing.Size 
116.
$System_Drawing_Size.Height = 505 
117.
$System_Drawing_Size.Width = 589 
118.
$formMain.ClientSize = $System_Drawing_Size 
119.
$formMain.DataBindings.DefaultDataSourceUpdateMode = 0 
120.
$formMain.Name = "formMain" 
121.
$formMain.Text = "Process Management" 
122.
$formMain.add_Load($handler_formMain_Load) 
123.
 
124.
$tabs.Anchor = 15 
125.
$tabs.DataBindings.DefaultDataSourceUpdateMode = 0 
126.
$System_Drawing_Point = New-Object System.Drawing.Point 
127.
$System_Drawing_Point.X = 12 
128.
$System_Drawing_Point.Y = 12 
129.
$tabs.Location = $System_Drawing_Point 
130.
$tabs.Name = "tabs" 
131.
$tabs.SelectedIndex = 0 
132.
$System_Drawing_Size = New-Object System.Drawing.Size 
133.
$System_Drawing_Size.Height = 481 
134.
$System_Drawing_Size.Width = 565 
135.
$tabs.Size = $System_Drawing_Size 
136.
$tabs.TabIndex = 3 
137.
$tabs.add_SelectedIndexChanged($handler_tabs_SelectedIndexChanged) 
138.
 
139.
$formMain.Controls.Add($tabs) 
140.
$tabProcesses.DataBindings.DefaultDataSourceUpdateMode = 0 
141.
$System_Drawing_Point = New-Object System.Drawing.Point 
142.
$System_Drawing_Point.X = 4 
143.
$System_Drawing_Point.Y = 22 
144.
$tabProcesses.Location = $System_Drawing_Point 
145.
$tabProcesses.Name = "tabProcesses" 
146.
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding 
147.
$System_Windows_Forms_Padding.All = 3 
148.
$System_Windows_Forms_Padding.Bottom = 3 
149.
$System_Windows_Forms_Padding.Left = 3 
150.
$System_Windows_Forms_Padding.Right = 3 
151.
$System_Windows_Forms_Padding.Top = 3 
152.
$tabProcesses.Padding = $System_Windows_Forms_Padding 
153.
$System_Drawing_Size = New-Object System.Drawing.Size 
154.
$System_Drawing_Size.Height = 455 
155.
$System_Drawing_Size.Width = 557 
156.
$tabProcesses.Size = $System_Drawing_Size 
157.
$tabProcesses.TabIndex = 0 
158.
$tabProcesses.Text = "Prozesse" 
159.
$tabProcesses.UseVisualStyleBackColor = $True 
160.
 
161.
$tabs.Controls.Add($tabProcesses) 
162.
$txtSearchProcess.DataBindings.DefaultDataSourceUpdateMode = 0 
163.
$System_Drawing_Point = New-Object System.Drawing.Point 
164.
$System_Drawing_Point.X = 58 
165.
$System_Drawing_Point.Y = 6 
166.
$txtSearchProcess.Location = $System_Drawing_Point 
167.
$txtSearchProcess.Name = "txtSearchProcess" 
168.
$System_Drawing_Size = New-Object System.Drawing.Size 
169.
$System_Drawing_Size.Height = 20 
170.
$System_Drawing_Size.Width = 100 
171.
$txtSearchProcess.Size = $System_Drawing_Size 
172.
$txtSearchProcess.TabIndex = 2 
173.
$txtSearchProcess.add_KeyPress($handler_txtSearchProcess_KeyPress) 
174.
 
175.
$tabProcesses.Controls.Add($txtSearchProcess) 
176.
 
177.
$label1.DataBindings.DefaultDataSourceUpdateMode = 0 
178.
 
179.
$System_Drawing_Point = New-Object System.Drawing.Point 
180.
$System_Drawing_Point.X = 6 
181.
$System_Drawing_Point.Y = 9 
182.
$label1.Location = $System_Drawing_Point 
183.
$label1.Name = "label1" 
184.
$System_Drawing_Size = New-Object System.Drawing.Size 
185.
$System_Drawing_Size.Height = 17 
186.
$System_Drawing_Size.Width = 46 
187.
$label1.Size = $System_Drawing_Size 
188.
$label1.TabIndex = 1 
189.
$label1.Text = "Suche" 
190.
 
191.
$tabProcesses.Controls.Add($label1) 
192.
 
193.
$dgvProcesses.Anchor = 15 
194.
$dgvProcesses.DataBindings.DefaultDataSourceUpdateMode = 0 
195.
$System_Drawing_Point = New-Object System.Drawing.Point 
196.
$System_Drawing_Point.X = 6 
197.
$System_Drawing_Point.Y = 33 
198.
$dgvProcesses.Location = $System_Drawing_Point 
199.
$dgvProcesses.Name = "dgvProcesses" 
200.
$System_Drawing_Size = New-Object System.Drawing.Size 
201.
$System_Drawing_Size.Height = 416 
202.
$System_Drawing_Size.Width = 545 
203.
$dgvProcesses.Size = $System_Drawing_Size 
204.
$dgvProcesses.TabIndex = 0 
205.
 
206.
$tabProcesses.Controls.Add($dgvProcesses) 
207.
 
208.
$tabServices.DataBindings.DefaultDataSourceUpdateMode = 0 
209.
$System_Drawing_Point = New-Object System.Drawing.Point 
210.
$System_Drawing_Point.X = 4 
211.
$System_Drawing_Point.Y = 22 
212.
$tabServices.Location = $System_Drawing_Point 
213.
$tabServices.Name = "tabServices" 
214.
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding 
215.
$System_Windows_Forms_Padding.All = 3 
216.
$System_Windows_Forms_Padding.Bottom = 3 
217.
$System_Windows_Forms_Padding.Left = 3 
218.
$System_Windows_Forms_Padding.Right = 3 
219.
$System_Windows_Forms_Padding.Top = 3 
220.
$tabServices.Padding = $System_Windows_Forms_Padding 
221.
$System_Drawing_Size = New-Object System.Drawing.Size 
222.
$System_Drawing_Size.Height = 455 
223.
$System_Drawing_Size.Width = 557 
224.
$tabServices.Size = $System_Drawing_Size 
225.
$tabServices.TabIndex = 1 
226.
$tabServices.Text = "Dienste" 
227.
$tabServices.UseVisualStyleBackColor = $True 
228.
 
229.
$tabs.Controls.Add($tabServices) 
230.
$txtSearchServices.DataBindings.DefaultDataSourceUpdateMode = 0 
231.
$System_Drawing_Point = New-Object System.Drawing.Point 
232.
$System_Drawing_Point.X = 58 
233.
$System_Drawing_Point.Y = 6 
234.
$txtSearchServices.Location = $System_Drawing_Point 
235.
$txtSearchServices.Name = "txtSearchServices" 
236.
$System_Drawing_Size = New-Object System.Drawing.Size 
237.
$System_Drawing_Size.Height = 20 
238.
$System_Drawing_Size.Width = 100 
239.
$txtSearchServices.Size = $System_Drawing_Size 
240.
$txtSearchServices.TabIndex = 2 
241.
$txtSearchServices.add_KeyPress($handler_txtSearchServices_KeyPress) 
242.
 
243.
$tabServices.Controls.Add($txtSearchServices) 
244.
 
245.
$label2.DataBindings.DefaultDataSourceUpdateMode = 0 
246.
 
247.
$System_Drawing_Point = New-Object System.Drawing.Point 
248.
$System_Drawing_Point.X = 6 
249.
$System_Drawing_Point.Y = 9 
250.
$label2.Location = $System_Drawing_Point 
251.
$label2.Name = "label2" 
252.
$System_Drawing_Size = New-Object System.Drawing.Size 
253.
$System_Drawing_Size.Height = 23 
254.
$System_Drawing_Size.Width = 55 
255.
$label2.Size = $System_Drawing_Size 
256.
$label2.TabIndex = 1 
257.
$label2.Text = "Suche" 
258.
 
259.
$tabServices.Controls.Add($label2) 
260.
 
261.
$dgvServices.Anchor = 15 
262.
$dgvServices.DataBindings.DefaultDataSourceUpdateMode = 0 
263.
$System_Drawing_Point = New-Object System.Drawing.Point 
264.
$System_Drawing_Point.X = 6 
265.
$System_Drawing_Point.Y = 33 
266.
$dgvServices.Location = $System_Drawing_Point 
267.
$dgvServices.Name = "dgvServices" 
268.
$System_Drawing_Size = New-Object System.Drawing.Size 
269.
$System_Drawing_Size.Height = 416 
270.
$System_Drawing_Size.Width = 545 
271.
$dgvServices.Size = $System_Drawing_Size 
272.
$dgvServices.TabIndex = 0 
273.
 
274.
$tabServices.Controls.Add($dgvServices) 
275.
 
276.
#endregion Form Code 
277.
 
278.
#Save the initial state of the form 
279.
$InitialFormWindowState = $formMain.WindowState 
280.
#Init the OnLoad event to correct the initial state of the form 
281.
$formMain.add_Load($OnLoadForm_StateCorrection) 
282.
#Show the Form 
283.
$formMain.ShowDialog()| Out-Null 
284.
 
285.
} #End Function 
286.
 
287.
#Call the Function 
288.
GenerateForm
Grüße Uwe
Bitte warten ..
Mitglied: 116770
30.06.2014 um 21:43 Uhr
Hi Colinardo,

vielen Dank für die schnelle Antwort, echt super.
Da ich bis jetzt aber kaum was mit PowerShell gemacht habe, ist es schwer für mich das zu verstehen.
Ich würde gerne meine Auswahlmaske mit deiner Ausgabe verbinden.
Du kannst ja mal mein Code bei dir einfügen und dir das anschauen.

Vielen Dank bis dahin ich probiere noch ein wenig aus aber wenn du lust hast kannst du ja mal schauen ob du das hin bekommst.
Leider haben wir im Unterricht kaum was mit PowerShell gemacht, der Arbeitsauftrag kam nach einer Stunde cmd-lets anschauen

Vielen Dank und Grüße
Bitte warten ..
Mitglied: colinardo
30.06.2014, aktualisiert 01.07.2014
aber wenn du lust hast kannst du ja mal schauen ob du das hin bekommst.
Ohne Code-Tags für deinen Quellcode: <code> Quellcode </code>, packe ich deinen Code nicht an, also korrigiere dies zu aller erst. Danke.
Leider haben wir im Unterricht kaum was mit PowerShell gemacht, der Arbeitsauftrag kam nach einer Stunde cmd-lets anschauen
Dann vermute ich das du die Aufgabe falsch interpretiert hast. Vermutlich meinte man mit der Aufgabe eine Konsolenanwendung mit einem Textmenü und der Hilfe von read-host als Eingabeinterpreter. Denn eine Windows-Forms Anwendung in der ersten Stunde Powershell ist absolut zu schwer für einen Anfänger der die Grundlagen noch nicht alle beherrscht !!! Kannst du eurem Prof. ruhig sagen.

Werde mir dein Gerüst mal morgen ansehen ...

Bis dahin
Grüße Uwe
Bitte warten ..
Mitglied: 116770
01.07.2014 um 17:16 Uhr
01.
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
02.
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
03.
 
04.
#System.Windows.Forms ist hier dafür zuständig, dass man überhaupt ein Fenster und grafische Objekte erstellen kann. 
05.
#System.Drawing verwenden wir um die Größe und Position der einzelnen Elemente im Fenster zu bestimmen. 
06.
 
07.
# Grundgerüst für grafische Darstellung. 
08.
 
09.
#Das Grundfenster unseres Dialogs erstellen wir wie folgt: 
10.
$Form1 = New-Object System.Windows.Forms.Form 
11.
#Variablename in Rot, Objektname folgt nach dem gleich Zeichen 
12.
$Form1.Text = "Prozesse und Dienste" 
13.
#Überschrift bzw. Name des geöffnetens Fensters 
14.
$Form1.Size = New-Object System.Drawing.Size(300,280)  
15.
#Größe des geöffneten Fensters 
16.
$Form1.StartPosition = "CenterScreen" 
17.
#Wo wird das Fenster auf dem Desktop geöffnet 
18.
 
19.
# Buttons werden angelegt. 
20.
 
21.
#Nun erzeugen wir uns noch zwei Buttons OK und Cancel: 
22.
$OKButton = New-Object System.Windows.Forms.Button  
23.
$OKButton.Text = "Fortfahren" 
24.
#Button 1 Ausführen 
25.
$CancelButton = New-Object System.Windows.Forms.Button 
26.
$CancelButton.Text = "Beenden" 
27.
#Button 2 Schließen 
28.
 
29.
#Und fügen diese zum Fenster an einer festen Position und Größe hinzu: 
30.
 
31.
#OK Button 
32.
$OKButton.Location = New-Object System.Drawing.Size(75,200) 
33.
$OKButton.Size = New-Object System.Drawing.Size(75,23) 
34.
$Form1.Controls.Add($OKButton) 
35.
 
36.
#Cancel Button 
37.
$CancelButton.Location = New-Object System.Drawing.Size(150,200) 
38.
$CancelButton.Size = New-Object System.Drawing.Size(75,23) 
39.
$Form1.Controls.Add($CancelButton) 
40.
 
41.
 
42.
#Aktionen der Button: 
43.
 
44.
#Cancel Button 
45.
$CancelButton.Add_Click({$Form1.Close()}) 
46.
#Fenster wird geschlossen 
47.
 
48.
#Combobox wird durch Button der ersten Form aufgerufen 
49.
$OKButton.Add_Click({ 
50.
 
51.
 
52.
$objForm = New-Object System.Windows.Forms.Form  
53.
$objForm.Text = "Auswahlmenü" 
54.
$objForm.Size = New-Object System.Drawing.Size(300,200)  
55.
$objForm.StartPosition = "CenterScreen" 
56.
$objForm.KeyPreview = $True 
57.
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")  
58.
59.
         foreach ($objItem in $objCombobox.SelectedItem) 
60.
             {$x += $objItem} 
61.
         $objForm.Close() 
62.
63.
    }) 
64.
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")  
65.
     {$objForm.Close()}}) 
66.
$OKButton = New-Object System.Windows.Forms.Button 
67.
$OKButton.Location = New-Object System.Drawing.Size(75,120) 
68.
$OKButton.Size = New-Object System.Drawing.Size(75,23) 
69.
$OKButton.Text = "OK" 
70.
$OKButton.Add_Click( 
71.
72.
         foreach ($objItem in $objCombobox.SelectedItem) 
73.
             {$x += $objItem} 
74.
         $objForm.Close() 
75.
    }) 
76.
$objForm.Controls.Add($OKButton) 
77.
$CancelButton = New-Object System.Windows.Forms.Button 
78.
$CancelButton.Location = New-Object System.Drawing.Size(150,120) 
79.
$CancelButton.Size = New-Object System.Drawing.Size(75,23) 
80.
$CancelButton.Text = "Zurück" 
81.
$CancelButton.Add_Click({$objForm.Close()}) 
82.
$objForm.Controls.Add($CancelButton) 
83.
$objLabel = New-Object System.Windows.Forms.Label 
84.
$objLabel.Location = New-Object System.Drawing.Size(10,20)  
85.
$objLabel.Size = New-Object System.Drawing.Size(280,20)  
86.
$objLabel.Text = "Treffen Sie bitte eine Auswahl:" 
87.
$objForm.Controls.Add($objLabel)  
88.
$objCombobox = New-Object System.Windows.Forms.Combobox  
89.
$objCombobox.Location = New-Object System.Drawing.Size(10,40)  
90.
$objCombobox.Size = New-Object System.Drawing.Size(260,20)  
91.
[void] $objCombobox.Items.Add("Auswahl Prozesse") 
92.
[void] $objCombobox.Items.Add("Auswahl Dienste ") 
93.
[void] $objCombobox.Items.Add("RAM-Auslastung") 
94.
[void] $objCombobox.Items.Add("CPU-Auslastung") 
95.
$objCombobox.Height = 70 
96.
$objForm.Controls.Add($objCombobox)  
97.
$objForm.Topmost = $True 
98.
$objForm.Add_Shown({$objForm.Activate()}) 
99.
[void] $objForm.ShowDialog() 
100.
$x 
101.
 
102.
}) 
103.
 
104.
 
105.
 
106.
 
107.
 
108.
 
109.
 
110.
$Form1.ShowDialog() 
111.
#Form1 wird auf dem Desktop geöffnet 
112.
 
Bitte warten ..
Mitglied: 116770
01.07.2014 um 17:17 Uhr
Hi Colinardo,

Danke das du dich so bemühst. Es ist eine Aufgabe aus einer Berufsschule. Ich denke der Lehrer weis nicht welchen Umfang das hat.

LG

Johannes
Bitte warten ..
Mitglied: colinardo
01.07.2014 um 17:20 Uhr
Zitat von 116770:
Danke das du dich so bemühst. Es ist eine Aufgabe aus einer Berufsschule. Ich denke der Lehrer weis nicht welchen Umfang das
hat.
Dann müsst Ihr Ihm das sagen, das das für euch noch nicht zu bewältigen ist. Powershell lernt man nicht mal eben so nebenbei wenn man kein gelernter Programmierer ist.
Bitte warten ..
Mitglied: 116770
01.07.2014 um 17:23 Uhr
Nein das will ich nicht.
Ich will das schon hinbekommen egal wie.
Mein Ziel ist nur das ich dass auch verstehe was ich mache oder was ihr mir zeigt(programmiert)
Es muss auch nicht mal mehr grafisch sein.

LG Johannes
Bitte warten ..
Mitglied: colinardo
01.07.2014, aktualisiert um 17:38 Uhr
Nein das will ich nicht.
Aber uns hier betütteln schon oder

Das ist hier ist kein Kurs (den gibt's hier), sondern hier werden normalerweise explizite Fragen zu Problemen gestellt. Eine komplette Einführung kann ich hier nicht leisten. Schau dir den Code aus meinem Beispiel an und versuche ihn zu verstehen damit solltest du weit kommen. Wenn Fragen dazu sein sollten kannst du die ruhig stellen, aber fertige Lösungen werde ich hier nicht einstellen damit ist der Lerneffekt für dich nicht da. Wenn du willst versehe ich meinen obigen Code an den wichtigsten Stellen noch mit Kommentaren.

Grüße Uwe
Bitte warten ..
Mitglied: 116770
01.07.2014 um 17:48 Uhr
Hallo Colinardo,

Wäre top wenn du mir was kommentieren kannst.
Kann ich das den bei mir einbauen weil ich finde meine Maske eigentlich ganz gut.

LG

Johannes
Bitte warten ..
Mitglied: colinardo
01.07.2014, aktualisiert 02.07.2014
Zitat von 116770:
Wäre top wenn du mir was kommentieren kannst.
mach ich dir
-edit- ist jetzt oben kommentiert
Kann ich das den bei mir einbauen weil ich finde meine Maske eigentlich ganz gut.
kannst du dir als ganzes kopieren und von deinem Code aus aufrufen.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell INI Tags auslesen (2)

Frage von H41mSh1C0R zum Thema Batch & Shell ...

Batch & Shell
PowerShell on Linux and Open Source! - Windows PowerShell Blog

Link von Lochkartenstanzer zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...