116770
30.06.2014
7235
12
0
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.
#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
#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
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.
- 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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 242267
Url: https://administrator.de/contentid/242267
Ausgedruckt am: 17.11.2024 um 05:11 Uhr
12 Kommentare
Neuester Kommentar
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.
Grüße Uwe
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
Falls noch Bedarf an Hilfe für Powershell besteht:
Powershell Grundlagen- und Praxisvermittlung:
Powershell Grundlagen- und Praxisvermittlung:
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
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.Danke das du dich so bemühst. Es ist eine Aufgabe aus einer Berufsschule. Ich denke der Lehrer weis nicht welchen Umfang das
hat.
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