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
Please also mark the comments that contributed to the solution of the article
Content-ID: 1258073130
Url: https://administrator.de/contentid/1258073130
Printed on: September 7, 2024 at 12:09 o'clock
10 Comments
Latest comment
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