internal/functions/Show-ToastNotification.ps1
function Show-ToastNotification { <# .SYNOPSIS Create a new Toast Notification from a PackUpdateInfo object .DESCRIPTION Create a new Toast Notification from a PackUpdateInfo object Helper function used for internal commands. .PARAMETER PackageUpdateInfo The PackageUpdate.Info object to show in the toast notification .EXAMPLE PS C:\> Show-ToastNotification -PackageUpdateInfo $PackageUpdateInfo Show Toast Notification on modules with outstanding updates #> [CmdletBinding( DefaultParameterSetName = 'Default', SupportsShouldProcess = $false, ConfirmImpact = 'Low')] [Alias()] [OutputType([PackageUpdate.Info])] param ( [Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [PackageUpdate.Info[]] $PackageUpdateInfo ) begin { } process { # general toast notification header $toastHeader = New-BTHeader -Id '001' -Title 'PackageUpdateInfo - Update available' -ActivationType Foreground # the text $toastText = @() $toastText += $PackageUpdateInfo.Repository + "\" + $PackageUpdateInfo.Name + " v" + $PackageUpdateInfo.VersionOnline $toastText += "Published: " + $PackageUpdateInfo.PublishedDate.ToString() + "`n" + "Installed version: v" + $PackageUpdateInfo.VersionInstalled + "$(if (-not $PackageUpdateInfo.HasReleaseNotes) { "`n(No release notes available)" })" if ($PackageUpdateInfo.IsCurrentUserPath) { $toastText += "This is a user specific module." } else { $toastText += "This is machine wide module." } # the logo if ($PackageUpdateInfo.IconUri) { $toastLogo = $PackageUpdateInfo.IconUri.ToString() } else { $toastLogo = $script:ModuleIconPath } # the buttons $toastButton = @() #$toastButton += New-BTButton -Content 'Install' -Arguments "C:\Windows\notepad.exe" if ($PackageUpdateInfo.HasReleaseNotes) { if ($PackageUpdateInfo.ReleaseNotesIsUri) { $toastButtonArgument = $PackageUpdateInfo.ReleaseNotes } else { $toastButtonArgument = "$($script:ModuleTempPath)\$($PackageUpdateInfo.Name)_v$($PackageUpdateInfo.VersionOnline)_$(Get-Date -Format 'yyyyMMddHHmmssfff').txt" Set-Content -Path $toastButtonArgument -Value $PackageUpdateInfo.ReleaseNotes -Force -Encoding Default } $toastButton += New-BTButton -Content 'Release notes' -Arguments $toastButtonArgument } $toastButton += New-BTButton -Dismiss # create the toast notification $notificationParams = @{ Header = $toastHeader Text = $toastText AppLogo = $toastLogo Button = $toastButton } New-BurntToastNotification @notificationParams } end { } } |