从 PowerShell 发送的 ToastNotifications 从操作中心消失

ToastNotifications sent from PowerShell disappear from Action Center

我正在使用此代码从 PowerShell 脚本发送通知。 PowerShell 本身由(持久的)Java 应用程序启动。

[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null
[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] > $null
[Windows.UI.Notifications.ToastNotification, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null
$xml = New-Object Windows.Data.Xml.Dom.XmlDocument
$template = "<toast><visual><binding template=`"ToastText02`"><text id=`"1`">Title</text><text id=`"2`">Test results</text></binding></visual></toast>"
$xml.LoadXml($template)
$toast = New-Object Windows.UI.Notifications.ToastNotification $xml
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("sbt").Show($toast)

它们会在屏幕上弹出并在操作中心中显示一段时间,但很快就会消失。使用相同代码的 XAML 应用程序发送的通知会保留很长一段时间。有没有办法改变通过脚本发送的通知的行为?

您必须为每个 AppID 设置一个注册表项,您希望将其通知保留在操作中心。

例如,如果您希望 irssi 通知持续存在,请添加密钥:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings\irssi 和一个名为 ShowInActionCenter 的 DWORD,值为 1.

感谢 "Passing By" 在 this article's 评论中提供解决方案,感谢 Mattias Fors 创建这篇文章。

更新:您也可以在每个应用的 "Notifications & actions" 设置中切换此选项。