以编程方式取消固定Microsoft Edge并存储任务栏快捷方式

时间:2017-07-17 19:37:08

标签: windows powershell

我每天都设置计算机,我需要删除Microsoft Edge和Store任务栏快捷方式。

我在创建脚本时遇到问题,我搜索了其他stackoverflow帖子,但它们对我没用。

是否有人可以使用可以取消固定MS Edge和Store任务栏快捷方式的脚本?

2 个答案:

答案 0 :(得分:7)

是的,您可以通过运行以下ps命令取消固定Microsoft Edge并从任务栏存储应用程序。

$appname = "Microsoft Edge"
((New-Object -Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | ?{$_.Name -eq $appname}).Verbs() | ?{$_.Name.replace('&','') -match 'Unpin from taskbar'} | %{$_.DoIt(); $exec = $true}
$appname = "Store"
((New-Object -Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | ?{$_.Name -eq $appname}).Verbs() | ?{$_.Name.replace('&','') -match 'Unpin from taskbar'} | %{$_.DoIt(); $exec = $true}

更改$appname变量应该适用于任务栏上的任何应用程序,如果它不存在,则会抛出InvokeMethodOnNull错误。

这是做什么的: 它枚举Shell /任务栏COM对象命名空间

匹配名称为$appname的项目(在本例中为边缘和存储)

获取该com对象的神奇Unpin from taskbar动词

执行动词并将其从任务栏中删除,而不必杀死explorer.exe。

答案 1 :(得分:2)

来自Judge2020的非常好的解决方案,+ 1

  • 使用RegEx和-match代替-eq,您可以在一次运行中取消固定多个应用
  • unpin动词是本地化的,用德语Von "Start" lösen
$appnames = "^Microsoft Edge$|^Store$"
((New-Object -Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | 
  Where-Object{$_.Name -match $appnames}).Verbs() | 
  Where-Object{$_.Name.replace('&','') -match 'Unpin from taskbar|Von "Start" lösen'} | 
  ForEach-Object{$_.DoIt(); $exec = $true}