System.Windows.Forms.MessageBox
Hallo Mädels und Jungs,
in einem kleinen Script soll die Anweisung
ausgeführt werden.
Dazu wird vorher
abgearbeitet.
Seit kurzem kommt eine Fehlermeldung:
Das ps1 Script wird mit
aufgerufen.
Trotz Fehlermeldung erscheint die die MessageBox und nach <OK> wird das Programm sauber beendet.
Ich denke, die Sache tritt nach einem PS Update auf.
Wie löse ich das Problem?
Vielen Dank allen Mitdenkenden.
Groß
Peter
in einem kleinen Script soll die Anweisung
[System.Windows.Forms.MessageBox]::Show($msg, 'PowerShell', 0)
ausgeführt werden.
Dazu wird vorher
[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
Seit kurzem kommt eine Fehlermeldung:
False v4.0.30319 C:\Program Files\PowerShell\7\System.Windows.Forms.dll
Das ps1 Script wird mit
"C:\Program Files\PowerShell\7\pwsh.exe" "C:\Users\XXXXXX\AppData\Roaming\Lexware\FinanzManager\2024\DelReminder.ps1"
Trotz Fehlermeldung erscheint die die MessageBox und nach <OK> wird das Programm sauber beendet.
Ich denke, die Sache tritt nach einem PS Update auf.
Wie löse ich das Problem?
Vielen Dank allen Mitdenkenden.
Groß
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 92678358558
Url: https://administrator.de/contentid/92678358558
Ausgedruckt am: 19.12.2024 um 13:12 Uhr
4 Kommentare
Neuester Kommentar
Zitat von @PeterleB:
[System.Windows.Forms.MessageBox]::Show($msg, 'PowerShell', 0)
Was ist mit dem DialogResult?
Dazu wird vorher
[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
Macht man nicht eher ein
Add-Type -AssemblyName System.Windows.Forms
Hi.
Das ist kein Problem sondern ganz normal!
Per Default gibt die Methode LoadPartitialWithName immer das Assembly zurück sofern es gefunden wurde, was es hier auch ganz normal tut.
Siehe dazu
https://learn.microsoft.com/de-de/dotnet/api/system.reflection.assembly. ...
Du hast nur vergessen die Ausgabe zu unterdrücken.
Willst du die Ausgabe unterdrücken machst du ein [void] davor oder pipest das Ergebnis via out-null ins Nirvana.
Außerdem ist die Methode LoadPartitialWithName mittlerweile als deprecated/veraltet markiert
Steht ebenfalls hier:
https://learn.microsoft.com/de-de/dotnet/api/system.reflection.assembly. ...
Ersatz dafür ist Load()
Sie alle machen aber im Endeffekt das gleiche wie das präferierte CMDLet Add-Type mit dem Parameter -AssemblyName
Das gab es aber erst seit der PowerShell 3, deswegen haben diverse Skripte noch die .NET Methode drin stehen die auch schon unter der PS 2.0 funktionierte.
Hoffe das klärt dein Missverständnis damit auf. 😉
H.
Das ist kein Problem sondern ganz normal!
Zitat von @PeterleB:
Seit kurzem kommt eine Fehlermeldung:
Das ist keine Fehlermeldung!Seit kurzem kommt eine Fehlermeldung:
False v4.0.30319 C:\Program Files\PowerShell\7\System.Windows.Forms.dll
>
Per Default gibt die Methode LoadPartitialWithName immer das Assembly zurück sofern es gefunden wurde, was es hier auch ganz normal tut.
Siehe dazu
https://learn.microsoft.com/de-de/dotnet/api/system.reflection.assembly. ...
Du hast nur vergessen die Ausgabe zu unterdrücken.
Willst du die Ausgabe unterdrücken machst du ein [void] davor oder pipest das Ergebnis via out-null ins Nirvana.
[void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
# oder
[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | out-null
Außerdem ist die Methode LoadPartitialWithName mittlerweile als deprecated/veraltet markiert
Steht ebenfalls hier:
https://learn.microsoft.com/de-de/dotnet/api/system.reflection.assembly. ...
Ersatz dafür ist Load()
[void][System.Reflection.Assembly]::Load('System.Windows.Forms')
Sie alle machen aber im Endeffekt das gleiche wie das präferierte CMDLet Add-Type mit dem Parameter -AssemblyName
Add-Type -AssemblyName System.Windows.Forms
Hoffe das klärt dein Missverständnis damit auf. 😉
H.