Powershell Script Beenden

Robmantuto

Ensign
Registriert
Apr. 2008
Beiträge
155
Mein Skript:
Code:
[void] [System.Reflection.Assembly]::LoadWithPartialName(„System.Drawing“)
[void] [System.Reflection.Assembly]::LoadWithPartialName(„System.Windows.Forms“)
$objForm = New-Object System.Windows.Forms.Form 
$objForm.Text = „Bitlocker-Wiederherstellungsschlüssel-Report“
$objForm.Size = New-Object System.Drawing.Size(340,150)
$objForm.StartPosition = „CenterScreen“
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq „Enter“) { $objForm.DialogResult=“OK“;$objForm.Close()} })
$objForm.Add_KeyDown({if ($_.KeyCode -eq „Escape“) { $objForm.DialogResult=“Cancel“;$objForm.Close()} })
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(100,75)
$OKButton.Size = New-Object System.Drawing.Size(50,23)
$OKButton.Text = „OK“
$OKButton.DialogResult = „OK“
$OKButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($OKButton)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(180,75)
$CancelButton.Size = New-Object System.Drawing.Size(70,23)
$CancelButton.Text = „Abbrechen“
$CancelButton.DialogResult = „Cancel“
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)

$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,10) 
$objLabel.Size = New-Object System.Drawing.Size(370,40) 
$objLabel.Text = „                   Für welchen BAP soll der Report
                                    erstellt werden?“
$objForm.Controls.Add($objLabel)
$objTextBox = New-Object System.Windows.Forms.TextBox 
$objTextBox.Location = New-Object System.Drawing.Size(14,50) 
$objTextBox.Size = New-Object System.Drawing.Size(300,50)
$objTextBox.Text = „“
$objForm.Controls.Add($objTextBox)
[void] $objForm.ShowDialog()
$BAP = $objTextBox.Text
New-Item "E:\Daten\Reports\$BAP" -ItemType directory
If ($objForm.DialogResult -like „OK“) {manage-bde -protectors -get C: > "E:\Daten\Reports\$BAP\$BAP-Bitlocker-Wiederherstellungsschlüssel.txt"}
If ($objForm.DialogResult -like „OK“) {manage-bde -protectors -get D: >> "E:\Daten\Reports\$BAP\$BAP-Bitlocker-Wiederherstellungsschlüssel.txt"}
If ($objForm.DialogResult -like „Abbrechen“)
New-Item E:\Daten\Reports\$BAP.txt -ItemType file
start-process explorer.exe E:\Daten\Reports
Ich würde gerne das Skript beenden, wenn ich auf Abbrechen gehe, die beiden letzten Zeilen sollen dann nicht mehr ausgeführt werden. Wie kann ich es am besten lösen? Mit Exit habe ich es versucht, geht aber nicht.
 
Code:
    If ($objForm.DialogResult -eq „OK“) {
        manage-bde -protectors -get C: > "E:\Daten\Reports\$BAP\$BAP-Bitlocker-Wiederherstellungsschlüssel.txt"
        manage-bde -protectors -get D: >> "E:\Daten\Reports\$BAP\$BAP-Bitlocker-Wiederherstellungsschlüssel.txt"
    } else {
        break # Bessere Lösung weil alles andere als OK ist ein abbruch.
    } 
    #If ($objForm.DialogResult -eq „Cancel“) { break } # Oder so..nach Gusto

Du hast einfach deinen eigenen Code nicht angesehen, denn die Action mit dem Button hast mit "Cancel" deklariert und nicht "Abbrechen" sondern die Caption.
 
Zuletzt bearbeitet:
Danke, das hat schon mal funktioniert.
Jetzt habe ich mir noch ein anderes Problem zugezogen und zwar rufe ich diese Abfrage mit einem Skript auf. Ich habe ein Fenster mit dem Knopf Report, mit dem Knopf rufe ich die Abfrage.ps1
auf, um die Eingabe durchzuführen. Beim Drücken auf "Abbrechen" kommt eine Fehlermeldung. Ich gehe davon aus, dass der "Break"-Befehl mein erstes Skript stört, aber nicht zerstört. Wie kann ich das verhindern?

Du hast einfach deinen eigenen Code nicht angesehen, denn die Action mit dem Button hast mit "Cancel" deklariert und nicht "Abbrechen" sondern die Caption.

Habe es angepasst, trotzdem kommt ein Fehler.
 
Zuletzt bearbeitet:
Sauberer wäre es, wenn du als DialogResult die dafür vorgesehenen Eigenschaften verwendest:

Code:
[System.Windows.Forms.DialogResult]::Abort
[System.Windows.Forms.DialogResult]::Cancel
[System.Windows.Forms.DialogResult]::OK
...

Versuchs mal mit Return statt Break
 
Zuletzt bearbeitet:
Zurück
Oben