Funktion um Popups anzuzeigen
Mit dieser Function kann aus Powershell heraus schöne Popups angezeigt werden. Es ist auch in der Lage den Popuptext aus einer Pip zu übernehmen.
Beispiel mit Text von Pipeline
"Hallo Welt" | Show-Popup
Parameter
Body | String | Text der als Nachricht im Popup angezeigt wird | ||
Title | String | Text für den Nachrichtentitel | Leer | |
ButtonType | String | Buttons, die in dem Popup verwendet werden sollen | Ok | |
Icon | String | Das Symbol, das links neben dem Text angezeigt wird | Leer / kein Icon | |
Default | String | Welcher Button ist initial aktiviert | Leer / Keine Auswahl | |
Timeout | Integer | Zeit in Sekunden nachdem das Fenster automatisch geschlossen wird. Als Rückgabewert, wird dann Timeout zurückgegeben. |
0 ( Kein Timeout) |
function Show-Popup{
## https://learn.microsoft.com/de-de/dotnet/api/system.windows.messageboximage?view=windowsdesktop-7.0
## https://learn.microsoft.com/de-de/dotnet/api/system.windows.messageboxresult?view=windowsdesktop-7.0
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline=$true,Mandatory=$true)]
[string] $Body,
[Parameter()]
[string] $Title="",
[ValidateSet("OK","OkCancel","AbortRetryIgnore","YesNoCancel","YesNo","RetryCancel")]
[string] $ButtonType = "Ok",
[ValidateSet("None","Info","Warning","Error","Question","Exclamation","Stop")]
[string] $Icon = "None",
[ValidateSet("None","Yes","No","Cancel","OK")]
[string] $Default = "None",
[Parameter()]
[Int] $Timeout=0
)
$enumPopupIcon=@{"Error"=16;"Stop"=16;"Question"=32;"Warning"=48;"Exclamation"=48;"Info"=64;"None"=0}
$enumButtonTypes=@{"OK"=0;"OkCancel"=1;"AbortRetryIgnore"=2;"YesNoCancel"=3;"YesNo"=4;"RetryCancel"=5}
$enumResult=@{-1="Timeout";1="Ok";2="Cancel";3="Abort";4="Retry";5="Ignore";6="Yes";7="No"}
[Object]$shell=New-Object -ComObject WScript.Shell
[Int]$bitmatrix = $enumPopupIcon[$Icon] + $enumButtonTypes[$ButtonType];
Write-Verbose "Selected Icon: `t$($enumPopupIcon[$Icon])"
Write-Verbose "Selected Button: `t$($enumButtonTypes[$ButtonType])"
Write-Verbose "Combined: `t`t`t$($bitmatrix)";
[Int]$userinput= $shell.Popup($Body,$Timeout,$Title,$bitmatrix);
return $enumResult[$userinput];
}
No Comments