Ergebnis 1 bis 1 von 1
  1. #1
    Registriert seit
    10.08.2013
    Beiträge
    13

    Powershell GUI - Frage

    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:
    ------
    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()
    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
    Geändert von Gaby Salvisberg (18.01.2016 um 13:00 Uhr) Grund: Code-Tags gesetzt

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •