116770
Goto Top

Windows Powershell Prozesse und Dienste auslesen

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

Content-Key: 242267

Url: https://administrator.de/contentid/242267

Ausgedruckt am: 28.03.2024 um 18:03 Uhr

Mitglied: Xaero1982
Xaero1982 30.06.2014 um 19:35:56 Uhr
Goto Top
Hi,

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

Gruß
Mitglied: colinardo
colinardo 30.06.2014, aktualisiert am 01.07.2014 um 18:02:15 Uhr
Goto Top
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.
#Form Function
function GenerateForm {

#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null  
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null  
#endregion

#region Generated Form Objects
$formMain = New-Object System.Windows.Forms.Form
$tabs = New-Object System.Windows.Forms.TabControl
$tabProcesses = New-Object System.Windows.Forms.TabPage
$txtSearchProcess = New-Object System.Windows.Forms.TextBox
$label1 = New-Object System.Windows.Forms.Label
$dgvProcesses = New-Object System.Windows.Forms.DataGridView
$tabServices = New-Object System.Windows.Forms.TabPage
$txtSearchServices = New-Object System.Windows.Forms.TextBox
$label2 = New-Object System.Windows.Forms.Label
$dgvServices = New-Object System.Windows.Forms.DataGridView
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
#endregion Generated Form Objects

#----------------------------------------------
# Event Script Blocks
#----------------------------------------------

# Wird bei jedem ändern des aktiven Tabs aufgerufen
$handler_tabs_SelectedIndexChanged =
{
    # je nachdem welcher Tab aktiviert wurde zeige entweder Prozesse oder Dienste
    switch($tabs.SelectedIndex){
        0 {
            # rufe den Scriptblock zum auflisten der Prozesse auf
            &$enumAllProcesses
            break
        }
        1{
            # rufe den Scriptblock zum auflisten der Dienste auf
            &$enumAllServices
            break
        }
    }

}

# Fängt das Keypress-Event in der Suchbox ab
$handler_txtSearchProcess_KeyPress= 
{
    # 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
    # wenn die Suchbox leer ist und Enter gedrückt wurde liste stattdessen alle Prozesse auf
    if($_.KeyChar -eq 13 -and $txtSearchProcess.Text -ne ""){  
        &$enumAllProcesses -namefilter $txtSearchProcess.Text
    }elseif($_.KeyChar -eq 13 -and $txtSearchProcess.Text -eq ""){  
        &$enumAllProcesses
    }

}
# das selbe wie oben nur für die zweite Suchbox
$handler_txtSearchServices_KeyPress= 
{
    if($_.KeyChar -eq 13 -and $txtSearchServices.Text -ne ""){  
        &$enumAllServices -namefilter $txtSearchServices.Text
    }elseif($_.KeyChar -eq 13 -and $txtSearchServices.Text -eq ""){  
         &$enumAllServices
    }

}

# beim Laden der Form den Scriptblock zum Auflisten aller Prozesse ausführen
$handler_formMain_Load={
    &$enumAllProcesses
}

$OnLoadForm_StateCorrection=
{#Correct the initial state of the form to prevent the .Net maximized form issue
	$formMain.WindowState = $InitialFormWindowState
}

# ------------------- Prozedur die die Prozesse auflistet und im DataGridView anzeigt
$enumAllProcesses = {
param([string]$namefilter = "*")  # parameter für eine eventuelle Filterung (wenn Parameter nicht übergeben wird werden alle Prozesse angezeigt")  
    # Filtere Prozesse und sortiere nach dem Namen
    $allProcesses = Get-Process | ?{$_.ProcessName -like $namefilter} | select -Property * -ExcludeProperty "__NounName" | Sort Name  
    if($allProcesses){
        # Arraylist erzeugen dem alle Prozesse zugewiesen werden (wird benötigt um die Powershell-Objekte direkt und ohne Umwege im DataGridView als Datenquelle anzugeben)
        $arr = New-Object System.Collections.ArrayList
        # wenn es mehr als 1 Prozess ist unterschiedliche Methoden verwenden um die Objekte der Arraylist hinzuzufügen
        if($allProcesses.Count -gt 1){
            $arr.AddRange($allProcesses)
        }else{
            $arr.Add($allProcesses)
        }
        # die Arraylist als Datenquelle des DataGridView Steuerelementes festlegen (Daten werden ab jetzt darin angezeigt)
        $dgvProcesses.DataSource = $arr
    }
}

# äquivalente Funktion wie oben nur für die Dienste
$enumAllServices = {
param([string]$namefilter = "*")  
    $allServices = Get-Service | ?{$_.ServiceName -like $namefilter} | sort Name
    if($allServices){
        $arr = New-Object System.Collections.ArrayList
        if($allServices.Count -gt 1){
            $arr.AddRange($allServices)
        }else{
            $arr.Add($allServices)
        }
        $dgvServices.DataSource = $arr
    }
}

#----------------------------------------------
#region Form Code
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 505
$System_Drawing_Size.Width = 589
$formMain.ClientSize = $System_Drawing_Size
$formMain.DataBindings.DefaultDataSourceUpdateMode = 0
$formMain.Name = "formMain"  
$formMain.Text = "Process Management"  
$formMain.add_Load($handler_formMain_Load)

$tabs.Anchor = 15
$tabs.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 12
$tabs.Location = $System_Drawing_Point
$tabs.Name = "tabs"  
$tabs.SelectedIndex = 0
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 481
$System_Drawing_Size.Width = 565
$tabs.Size = $System_Drawing_Size
$tabs.TabIndex = 3
$tabs.add_SelectedIndexChanged($handler_tabs_SelectedIndexChanged)

$formMain.Controls.Add($tabs)
$tabProcesses.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabProcesses.Location = $System_Drawing_Point
$tabProcesses.Name = "tabProcesses"  
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabProcesses.Padding = $System_Windows_Forms_Padding
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 455
$System_Drawing_Size.Width = 557
$tabProcesses.Size = $System_Drawing_Size
$tabProcesses.TabIndex = 0
$tabProcesses.Text = "Prozesse"  
$tabProcesses.UseVisualStyleBackColor = $True

$tabs.Controls.Add($tabProcesses)
$txtSearchProcess.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 58
$System_Drawing_Point.Y = 6
$txtSearchProcess.Location = $System_Drawing_Point
$txtSearchProcess.Name = "txtSearchProcess"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 20
$System_Drawing_Size.Width = 100
$txtSearchProcess.Size = $System_Drawing_Size
$txtSearchProcess.TabIndex = 2
$txtSearchProcess.add_KeyPress($handler_txtSearchProcess_KeyPress)

$tabProcesses.Controls.Add($txtSearchProcess)

$label1.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 6
$System_Drawing_Point.Y = 9
$label1.Location = $System_Drawing_Point
$label1.Name = "label1"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 17
$System_Drawing_Size.Width = 46
$label1.Size = $System_Drawing_Size
$label1.TabIndex = 1
$label1.Text = "Suche"  

$tabProcesses.Controls.Add($label1)

$dgvProcesses.Anchor = 15
$dgvProcesses.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 6
$System_Drawing_Point.Y = 33
$dgvProcesses.Location = $System_Drawing_Point
$dgvProcesses.Name = "dgvProcesses"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 416
$System_Drawing_Size.Width = 545
$dgvProcesses.Size = $System_Drawing_Size
$dgvProcesses.TabIndex = 0

$tabProcesses.Controls.Add($dgvProcesses)

$tabServices.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabServices.Location = $System_Drawing_Point
$tabServices.Name = "tabServices"  
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabServices.Padding = $System_Windows_Forms_Padding
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 455
$System_Drawing_Size.Width = 557
$tabServices.Size = $System_Drawing_Size
$tabServices.TabIndex = 1
$tabServices.Text = "Dienste"  
$tabServices.UseVisualStyleBackColor = $True

$tabs.Controls.Add($tabServices)
$txtSearchServices.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 58
$System_Drawing_Point.Y = 6
$txtSearchServices.Location = $System_Drawing_Point
$txtSearchServices.Name = "txtSearchServices"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 20
$System_Drawing_Size.Width = 100
$txtSearchServices.Size = $System_Drawing_Size
$txtSearchServices.TabIndex = 2
$txtSearchServices.add_KeyPress($handler_txtSearchServices_KeyPress)

$tabServices.Controls.Add($txtSearchServices)

$label2.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 6
$System_Drawing_Point.Y = 9
$label2.Location = $System_Drawing_Point
$label2.Name = "label2"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 55
$label2.Size = $System_Drawing_Size
$label2.TabIndex = 1
$label2.Text = "Suche"  

$tabServices.Controls.Add($label2)

$dgvServices.Anchor = 15
$dgvServices.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 6
$System_Drawing_Point.Y = 33
$dgvServices.Location = $System_Drawing_Point
$dgvServices.Name = "dgvServices"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 416
$System_Drawing_Size.Width = 545
$dgvServices.Size = $System_Drawing_Size
$dgvServices.TabIndex = 0

$tabServices.Controls.Add($dgvServices)

#endregion Form Code

#Save the initial state of the form
$InitialFormWindowState = $formMain.WindowState
#Init the OnLoad event to correct the initial state of the form
$formMain.add_Load($OnLoadForm_StateCorrection)
#Show the Form
$formMain.ShowDialog()| Out-Null

} #End Function

#Call the Function
GenerateForm
Grüße Uwe
Mitglied: colinardo
colinardo 30.06.2014 aktualisiert um 20:57:39 Uhr
Goto Top
Mitglied: 116770
116770 30.06.2014 um 21:43:56 Uhr
Goto Top
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 face-smile

Vielen Dank und Grüße
Mitglied: colinardo
colinardo 30.06.2014, aktualisiert am 01.07.2014 um 10:04:45 Uhr
Goto Top
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
Mitglied: 116770
116770 01.07.2014 um 17:16:27 Uhr
Goto Top
[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.

# 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

# 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: 116770
116770 01.07.2014 um 17:17:52 Uhr
Goto Top
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
Mitglied: colinardo
colinardo 01.07.2014 um 17:20:34 Uhr
Goto Top
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.
Mitglied: 116770
116770 01.07.2014 um 17:23:40 Uhr
Goto Top
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
Mitglied: colinardo
colinardo 01.07.2014 aktualisiert um 17:38:13 Uhr
Goto Top
Nein das will ich nicht.
Aber uns hier betütteln schon oder face-wink

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
Mitglied: 116770
116770 01.07.2014 um 17:48:00 Uhr
Goto Top
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
Mitglied: colinardo
colinardo 01.07.2014, aktualisiert am 02.07.2014 um 10:26:44 Uhr
Goto Top
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.