Messagebox - Variable nicht gespeichert
Guten Morgen zusammen,
ich bin leicht am verzweifeln. Ich habe mir eine Messagebox gemacht in der wegen einem ausstehenden Neustart gewarnt wird.
Bei Klick auf nein soll eine Variable gespeichert werden. Dies passiert aber nicht. Der Switch funktioniert wohl,
da wenn ich write-host nutze alles richtig ausgegeben wird. Hier erstmal der Code.
Dieser ist für die Messagebox.
Hier der für die Anzeige der Messagebox:
Beide Varianten $Day2 = 'OK' als auch Set-Variable -Name "Day2" -Value 'OK' funktionieren nicht.
Hat vielleicht einer ne Idee warum das so ist?
Danke schonmal und Viele Grüße
gfritz74
ich bin leicht am verzweifeln. Ich habe mir eine Messagebox gemacht in der wegen einem ausstehenden Neustart gewarnt wird.
Bei Klick auf nein soll eine Variable gespeichert werden. Dies passiert aber nicht. Der Switch funktioniert wohl,
da wenn ich write-host nutze alles richtig ausgegeben wird. Hier erstmal der Code.
#Function Message Box erstellen
Function Message {
[cmdletbinding()]
Param (
[Parameter(Position=0,Mandatory,HelpMessage="Specify a display message")]
[ValidateNotNullorEmpty()]
[string]$Message,
[ValidateSet("OkOnly","OkCancel","AbortRetryIgnore","YesNoCancel","YesNo","RetryCancel","Jetzt")]
[string]$Button="OkOnly",
[ValidateSet("Critical", "Question", "Exclamation", "Information")]
[string]$Icon="Information",
[string]$Title,
[switch]$NoPassthru
)
#load the necessary assembly
Try {
Add-Type -AssemblyName "Microsoft.VisualBasic" -ErrorAction Stop
#create the message box using the parameter values
$returnValue = [microsoft.visualbasic.interaction]::Msgbox($message,"$button,$icon",$title)
}
Catch {
Write-Warning "Failed to add Microsoft.VisualBasic assembly or create the messagebox."
Write-Warning $error.Exception.Message
}
#do not write return value if -NoPassthru is called
if (-Not $NoPassthru) {
Write-Output $returnValue
}
} #end function
Dieser ist für die Messagebox.
Hier der für die Anzeige der Messagebox:
Function MessageDay2 {
$ask = message -Title "Computer Reboot Notification" -Message "Nach der Installation von Sicherheitsupdates ist ein `nNeustart des Computers zwingend erforderlich.`nBitte führen Sie diesen Zeitnah durch oder `nklicken Sie auf Ja um den Computer jetzt neu zu starten.`nVielen Dank ihr IT-Services Team`n`nHaben Sie ihre Arbeiten gesichert?" -Button YesNo -Icon Critical
if ($ask -eq "Yes") {
$msgBoxInput = [System.Windows.MessageBox]::Show('Sind Sie bereit für den Neustart?','Reboot Confirmation','YesNo','Warning')
switch ($msgBoxInput) {
'Yes' {
#shutdown -r -f /t 0
Write-Host Shutdown
}
'No' {
$Day2 = 'OK'
}}}
elseif($ask -eq "No"){
Set-Variable -Name "Day2" -Value 'OK'
}}
Beide Varianten $Day2 = 'OK' als auch Set-Variable -Name "Day2" -Value 'OK' funktionieren nicht.
Hat vielleicht einer ne Idee warum das so ist?
Danke schonmal und Viele Grüße
gfritz74
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1258073130
Url: https://administrator.de/contentid/1258073130
Ausgedruckt am: 25.11.2024 um 16:11 Uhr
10 Kommentare
Neuester Kommentar
Und das ist die schlechteste Lösung… Normalerweise arbeitet man bei Funktionen mit Rückgabewerten.
Zitat von @gfritz74:
Dieser ist für die Messagebox.
Hier der für die Anzeige der Messagebox:
Du verwendest einfach in der Funktion das Return-Statement und gibst damit die Variable $Day2 zurück (siehe oben)Dieser ist für die Messagebox.
Hier der für die Anzeige der Messagebox:
> Function MessageDay2 {
>
> $ask = message -Title "Computer Reboot Notification" -Message "Nach der Installation von Sicherheitsupdates ist ein `nNeustart des Computers zwingend erforderlich.`nBitte führen Sie diesen Zeitnah durch oder `nklicken Sie auf Ja um den Computer jetzt neu zu starten.`nVielen Dank ihr IT-Services Team`n`nHaben Sie ihre Arbeiten gesichert?" -Button YesNo -Icon Critical
> if ($ask -eq "Yes") {
> $msgBoxInput = [System.Windows.MessageBox]::Show('Sind Sie bereit für den Neustart?','Reboot Confirmation','YesNo','Warning')
> switch ($msgBoxInput) {
> 'Yes' {
> #shutdown -r -f /t 0
> Write-Host Shutdown
> }
>
> 'No' {
> $Day2 = 'OK'
> }}}
> elseif($ask -eq "No"){
> return $Day2
> }}
>
Dann weist du den Rückgabewert einfach deiner Variable zu:
$entscheidung = MessageDay2()
Und dann arbeitest du damit weiter... Siehe auch hier: https://theitbros.com/powershell-function-return/
VG