Powershell/Windows/Windows-Notification.ps1
2023-07-04 12:59:44 +02:00

42 lines
1.2 KiB
PowerShell

[CmdletBinding(
SupportsShouldProcess = $true
)]
Param(
[Parameter(Mandatory = $false)]
[ValidateNotNullOrEmpty()]
[ValidateSet("Info", "Warning", "Error", "None")]
[string]$Type,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[string]$Title,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[string]$Text,
[Parameter(Mandatory = $false)]
[ValidateNotNullOrEmpty()]
[int]$Timeout = 10
)
#Ajouter les librairies Windows
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
#Créer l'objet notification
$notify = new-object system.windows.forms.notifyicon
$notify.icon = [system.drawing.icon]::ExtractAssociatedIcon((join-path $pshome powershell.exe))
$notify.visible = $True
$notify.showballoontip($Timeout, $title, $text, $type)
switch ($Host.Runspace.ApartmentState) {
STA {
$null = Register-ObjectEvent -InputObject $notify -EventName BalloonTipClosed -Action {
$Sender.Dispose()
Unregister-Event $EventSubscriber.SourceIdentifier
Remove-Job $EventSubscriber.Action
}
}
default {
continue
}
}