Hallo zusammen,
Ich habe vor ein PowerShell Skript mit GUI zu machen.
Ohne GUI habe ich es hingekriegt, aber mit dem GUI komme ich nicht ganz klar.. Frage ganz unten.
Funktionierendes Skript ohne GUI:
------
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
Auszug halbfertiges Skript mit GUI:
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
Meine Frage wäre nun, ob mir jemand behilflich sein kann und mir erklären kann wie ich das obige Skrip mit GUI erstellen kann. - Beim unteren Skript habe ich zwei ListBoxItems, wie kann ich denen Befehle zuordnen?
Vielen Dank schon im voraus.
Freundliche Grüsse
Anfänger Skripter
Ich habe vor ein PowerShell Skript mit GUI zu machen.
Ohne GUI habe ich es hingekriegt, aber mit dem GUI komme ich nicht ganz klar.. Frage ganz unten.
Funktionierendes Skript ohne GUI:
------
Code:
#Erstellen File Neu | Variable setzen für Datei
New-Item C:\temp\pc-abfrage.txt -type file
$datei = "C:\temp\pc-abfrage.txt"
cls
write-host "---------------------------------------------------------"
write-host "---------Informationen über den Computer sammeln---------"
write-host "---------------------------------------------------------"
write-host ""
Write-Host "1. Informationen anzeigen"
Write-Host "2. Informationen in einem Text-File abspeichern"
Write-Host "3. Skript beenden"
do {
$input = Read-Host "Treffen Sie eine Auswahl"
switch ($input)
{
'1' {
cls
write-host "---------------------------------------------------------"
write-host "---------Informationen über den Computer sammeln---------"
write-host "---------------------------------------------------------"
write-host ""
Write-host "A. BIOS-Informationen anzeigen"
Write-Host "B. Laufwerksinformationen anzeigen"
Write-host "C. Füllstand der Laufwerke anzeigen"
Write-host "D. Auslastung von CPU und RAM anzeigen"
Write-host "E. Skript beenden"
$input2 = Read-Host "Treffen Sie eine Auswahl"
switch ($input2)
{
'A'{
#BIOS - Aktualisierung alle 5s
cls
1..500 | % {Get-Wmiobject win32_bios ; sleep 5; cls };
pause
}
'B'{
cls
Write-Host "Informationen über die Laufwerke: ";
Get-Wmiobject Win32_CDRomdrive;
pause
}
'C'{
cls
Write-host "Informationen über den Füllstand der Laufwerke: ";
1..500 | % {Get-Wmiobject Win32_Diskdrive ; sleep 5; cls };
pause
}
'D'{
cls
#Für RAM-Variable setzen, damit man eine übersichtliche Ausgabe erhält
function Get-MemoryUsage ($ComputerName=$ENV:ComputerName) {
if (Test-Connection -ComputerName $ComputerName -Count 1 -Quiet) {
$ComputerSystem = Get-WmiObject -ComputerName $ComputerName -Class Win32_operatingsystem -Property CSName, TotalVisibleMemorySize, FreePhysicalMemory
$FreePhysicalMemory = ($ComputerSystem.FreePhysicalMemory) / (1mb)
$TotalVisibleMemorySize = ($ComputerSystem.TotalVisibleMemorySize) / (1mb)
$TotalVisibleMemorySizeR = “{0:N2}” -f $TotalVisibleMemorySize
$TotalFreeMemPerc = ($FreePhysicalMemory/$TotalVisibleMemorySize)*100
$TotalFreeMemPercR = “{0:N2}” -f $TotalFreeMemPerc
“RAM: $TotalVisibleMemorySizeR GB”
“Noch verfügbarer RAM: $TotalFreeMemPercR %”
} }
write-host "--------------------------";
write-host "------Auslastung RAM------";
write-host "--------------------------";
Get-MemoryUsage;
#Auslastung CPU
write-host "--------------------------";
write-host "------Auslastung CPU------";
write-host "--------------------------";
Get-WmiObject win32_processor | select LoadPercentage |fl;
#Eine Liste mit genaueren Detais zum Prozessor
write-host "--------------------------";
write-host "--Detailliertes Ergebnis--";
write-host "--------------------------";
Get-Wmiobject Win32_PerfRawData_PerfOS_Processor; sleep 5;
cls;
1..500 | % {
write-host "------Auslastung RAM------";
Get-MemoryUsage;
write-host "------Auslastung CPU------";
Get-WmiObject win32_processor | select LoadPercentage |fl;
sleep 5; cls };
pause
}
'E'{return
}}
}
'2' {
cls
write-host "---------------------------------------------------------"
write-host "---------Informationen über den Computer sammeln---------"
write-host "---------------------------------------------------------"
write-host ""
Write-host "A. BIOS-Informationen anzeigen"
Write-Host "B. Laufwerksinformationen anzeigen"
Write-host "C. Füllstand der Laufwerke anzeigen"
Write-host "D. Auslastung von CPU und RAM anzeigen"
Write-host "E. Löschen der Datei-Inhalte"
Write-host "F. Skript beenden"
$input2 = Read-Host "Treffen Sie eine Auswahl"
switch ($input2)
{
'A' {
cls
Get-Wmiobject win32_bios;
#"Add-Content" fügt die Ausgabe der Befehle ins definierte Textdatei ein
"-------------------------------------" | Add-content $datei
Get-Wmiobject win32_bios | Add-content $datei
pause
}
'B'{
cls
Write-Host "Informationen über die Laufwerke: ";
Get-Wmiobject Win32_CDRomdrive;
"-------------------------------------" | Add-content $datei;
"Informationen über die Laufwerke: " | Add-content $datei;
Get-Wmiobject Win32_CDRomdrive | Add-content $datei
pause
}
'C'{
cls
Write-host "Informationen über den Füllstand der Laufwerke: ";
Get-Wmiobject Win32_Diskdrive;
"-------------------------------------" | Add-content $datei;
"Informationen über den Füllstand der Laufwerke: " | Add-content $datei;
Get-Wmiobject Win32_Diskdrive | Add-content $datei
pause
}
'D'{
cls
function Get-MemoryUsage ($ComputerName=$ENV:ComputerName) {
if (Test-Connection -ComputerName $ComputerName -Count 1 -Quiet) {
$ComputerSystem = Get-WmiObject -ComputerName $ComputerName -Class Win32_operatingsystem -Property CSName, TotalVisibleMemorySize, FreePhysicalMemory
$FreePhysicalMemory = ($ComputerSystem.FreePhysicalMemory) / (1mb)
$TotalVisibleMemorySize = ($ComputerSystem.TotalVisibleMemorySize) / (1mb)
$TotalVisibleMemorySizeR = “{0:N2}” -f $TotalVisibleMemorySize
$TotalFreeMemPerc = ($FreePhysicalMemory/$TotalVisibleMemorySize)*100
$TotalFreeMemPercR = “{0:N2}” -f $TotalFreeMemPerc
“RAM: $TotalVisibleMemorySizeR GB”
“Noch verfügbarer RAM: $TotalFreeMemPercR %”
} }
write-host "--------------------------";
write-host "------Auslastung RAM------";
write-host "--------------------------";
Get-MemoryUsage;
write-host "--------------------------";
write-host "------Auslastung CPU------";
write-host "--------------------------";
Get-WmiObject win32_processor | select LoadPercentage |fl;
write-host "--------------------------";
write-host "--Detailliertes Ergebnis--";
write-host "--------------------------";
Get-Wmiobject Win32_PerfRawData_PerfOS_Processor;
"--------------------------" | Add-content $datei;
"------Auslastung RAM------" | Add-content $datei;
"--------------------------" | Add-content $datei;
Get-MemoryUsage | Add-content $datei;
"--------------------------" | Add-content $datei;
"------Auslastung CPU------" | Add-content $datei;
"--------------------------" | Add-content $datei;
Get-WmiObject win32_processor | select LoadPercentage |fl | Add-content $datei;
"--------------------------" | Add-content $datei;
"--Detailliertes Ergebnis--" | Add-content $datei;
"--------------------------" | Add-content $datei;
Get-Wmiobject Win32_PerfRawData_PerfOS_Processor | Add-content $datei
pause
}
'E'{
#Löscht den Dateninhalt
Clear-content C:\temp\pc-abfrage.txt
}
'F'{return
}}
}
'3' {
cls
exit
}
}
}
while ($input -eq '3')
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
Auszug halbfertiges Skript mit GUI:
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
Code:
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Abschlussprojekt"
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{$x=$objListBox.SelectedItem;$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({$x=$objListBox.SelectedItem;$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 = "Abbrechen"
$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 = "Bitte treffen Sie eine Auswahl:"
$objForm.Controls.Add($objLabel)
$objListBox = New-Object System.Windows.Forms.ListBox
$objListBox.Location = New-Object System.Drawing.Size(10,40)
$objListBox.Size = New-Object System.Drawing.Size(260,20)
$objListBox.Height = 80
[void] $objListBox.Items.Add("Informationen nur anzeigen")
[void] $objListBox.Items.Add("Informationen anzeigen und abspeichern")
$objForm.Controls.Add($objListBox)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
Meine Frage wäre nun, ob mir jemand behilflich sein kann und mir erklären kann wie ich das obige Skrip mit GUI erstellen kann. - Beim unteren Skript habe ich zwei ListBoxItems, wie kann ich denen Befehle zuordnen?
Vielen Dank schon im voraus.
Freundliche Grüsse
Anfänger Skripter
Zuletzt bearbeitet von einem Moderator: