我有一个PowerShell
代码,我将.NET
引用称为执行Toast通知,它在之前的更新中效果很好。但是当Windows 10的创建者(FCU)更新时,它已经消失了,相同的代码现在不能正常工作:
$app = "HTML Report"
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime]
$Template = [Windows.UI.Notifications.ToastTemplateType]::ToastImageAndText01
#Gets the Template XML so we can manipulate the values
[xml]$ToastTemplate = ([Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent($Template).GetXml())
[xml]$ToastTemplate = @"
<toast launch="app-defined-string">
<visual>
<binding template="ToastGeneric">
<text>DNS Alert...</text>
<text>We noticed that you are near Wasaki. Thomas left a 5 star rating after his last visit, do you want to try it?</text>
</binding>
</visual>
<actions>
<action activationType="background" content="Remind me later" arguments="later"/>
</actions>
</toast>
"@
$ToastXml = New-Object -TypeName Windows.Data.Xml.Dom.XmlDocument
$ToastXml.LoadXml($ToastTemplate.OuterXml)
$notify = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($app)
$notify.Show($ToastXml)
答案 0 :(得分:12)
正如评论中所提到的,最近必须在BurntToast模块中解决这个问题。这个变化伴随着blog post,但我会尽力总结这个答案的完整性。
这归结为&#34;应用程序用户模型ID&#34;您(以下简称AppId),您正在向Toast Notification Manager提供。
严格地说,此AppId需要匹配嵌入在“开始”菜单中的快捷方式中的AppId。一直都是这种情况,但是在以前版本的Windows 10中存在允许任何旧AppId的各种漏洞。
对于我们这些从脚本创建Toasts的人来说,这个漏洞已经被关闭了,而且我们的AppIds,就像Fall Creators Update一样,需要是真实的。&#34;
您可以通过运行找到有效AppIds列表:
Get-StartApps
我选择默认使用PowerShell.exe:
{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7} \ WindowsPowerShell \ V1.0 \ powershell.exe
应该注意的是,您仍然需要配置其中一些(包括PowerShell),以便它们的Toast在超时时实际显示在Action Center中。
您可以通过&#34;设置&#34;:
执行此操作设置 - &gt;系统 - &gt;通知&amp;行动 - &gt; PowerShell(向下滚动,您需要至少发送一个Toast才能显示) - &gt;在行动中心显示通知。
您也可以通过HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings
对于PowerShell示例,您将在以下位置添加名为ShowInActionCenter
的DWORD(设置为1):
HKCU:\ SOFTWARE \微软\的Windows \ CurrentVersion \通知\设置{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7} \ WindowsPowerShell \ V1.0 \ powershell.exe \
如果您想自己创建AppId,则需要了解如何创建shortcut with an AppId或通过AppxManifest.xml创建虚拟UWP应用。我仍在以用户友好的方式开展其中一项工作。