<# .SYNOPSIS Create nice toast notifications for the logged on user in Windows 10. .DESCRIPTION Everything is customizeable through config-toast.xml. Config-toast.xml can be locally, hosted online in blob storage or set to an UNC path with the -Config parameter. This way you can quickly modify the configuration without the need to push new files to the computer running the toast. Can be used for improving the numbers in Windows Servicing as well as kindly reminding users of pending reboots (and a bunch of other use cases as well). All actions are logged to a local log file in AppData\Roaming\ToastNotificationScript\New-ToastNotification.log. .PARAMETER Config Specify the path for the config.xml. If none is specified, the script uses the local config.xml .NOTES Filename: New-ToastNotification.ps1 Version: 2.0.1 Author: Martin Bengtsson Blog: www.imab.dk Twitter: @mwbengtsson Version history: 1.0 - Script created 1.1 - Separated checks for pending reboot in registry/WMI from OS uptime. More checks for conflicting options in config.xml. The content of the config.xml is now imported with UTF-8 encoding enabling other characters to be used in the text boxes. 1.2 - Added option for personal greeting using given name retrieved from Active Directory. If no AD available, the script will use a placeholder. Added ToastReboot protocol example, enabling the toast to carry out a potential reboot. 1.3 - All text elements in the toast notification is now customizeable through the config.xml Expanded the options for finding given name. Now also looking in WMI if no local AD is available. Added Get-WindowsVersion function: Testing for supported Windows version Added Test-WindowsPushNotificationsEnabled function: Testing for OS toast blockers Added some more detailed logging Added contributions from @SuneThomsenDK @ https://www.osdsune.com - Date formatting in deadline group - Fixed a few script errors - More text options 1.4 - Added new feature for checking for local active directory password expiration. If the password is about to expire (days configured in config.xml), the toast notification will display reminding the users to change their password 1.4.1 - Get-ADPasswordExpiration function modified to not requiring the AD Powershell module. Thank you @ Andrew Wells :-) Improved logging for when no toast notifications are displayed More commenting 1.4.2 - Bug fixes to the date formatting of ADPasswordExpiration now correctly supporting different cultures 1.4.3 - Some minor corrections to the get-givenname function when retreiving first name from WMI and registry Moved the default location for New-ToastNotification.log file to the user's profile Added contribution from @kevmjohnston @ https://ccmcache.wordpress.com - Added function for retrieving deadline date and time dynamically in WMI with ConfigMgr 1.5 - Added new option to run task sequences (PackageID) directly from the toast notification action button. Enable the option in the config.xml Fixed a few script errors when running the script on a device without ConfigMgr client 1.6 - Added new option to run applications (ApplicationID) directly from the toast notification action button. Enable the option in the config.xml Created Display-ToastNotification function - Displaying the toast notification as been trimmed and merged into its own function Created Test-NTsystem function - Testing if the script is being run as SYSTEM. This is not supported Converted all Get-WMIObject to Get-CimInstance - Get-WMIObject has been deprecated and is replaced with Get-CimInstance 1.7 - Added multilanguage support. Thank you Matt Benninge @matbe - Script and config files now support multiple languages - Note that old config xml files needs to be updated to support this - Moved text values from option to the text-section for consistency 1.7.1 - Added 2 new options (LogoImageName and HeroImageName) to the config file, allowing switching of images more easily and dynamically 1.8.0 - Added support for using Windows 10 Toast Notification Script with Endpoint Analytics Proactive Remediation - Added support for having config.xml file hosted online - Added support for having images used in the script hosted online ** Most of the work done in version 2.0.0 is done by Chad Brower // @Brower_Cha on Twitter ** ** I have added the additional protocols/scripts and rewritten some minor things ** ** As well as added support for dynamic deadline retrieval for software updates ** ** Stuff has been rewritten to suit my understanding and thoughts of the script ** 2.0.0 - Huge changes to how this script handles custom protocols Added Support for Custom Actions/Protocols within the script under user context removing the need for that to be run under SYSTEM/ADMIN -