Powershell在启动时运行,但未执行Remove-AppxPackage

时间:2019-05-15 13:27:25

标签: powershell startup gpo

在启动时执行Powershell脚本以消除Windows 10附带的一些膨胀。它包括检查它是否已经执行的检查,并创建一个标志文件(因此我知道脚本正在运行)。但是,卸载命令没有运行(它们可以手动运行)。

主机正在运行Windows 10 Pro。脚本是通过GPO传递的;可以正常运行,如脚本运行所证明的那样。

$DestinationFile = "C:\BloatFlag.txt"
if (Test-Path $DestinationFile) {

echo "Already Done"

} else {

Get-AppXPackage Microsoft.Microsoft3DViewer | Remove-AppXPackage
Get-AppXPackage DellInc.DellSupportAssistforPCs | Remove-AppXPackage
Get-AppXPackage DellInc.DellCommandUpdate | Remove-AppXPackage
# and the list goes on

echo "ONLY DELETE THIS FILE IF YOU REQUIRE TO RUN THE BLOAT REMOVAL SCRIPT AGAIN" > "C:\BloatFlag.txt"

}
  • 检查C:\时创建了BlatFlag.txt。
  • 所有列出的软件均未删除

我希望,如果代码达到了创建文本文件的目的,这些应用将被删除。

2 个答案:

答案 0 :(得分:0)

也许。也许不吧。这就是我的意思...

a)如果Get-AppXPackage不返回任何内容,则Remove-AppXPackage不会删除任何内容,并且标记文件仍将创建。

b)如果任一条语句引发了您所编码的异常,则该异常不会停止脚本执行,并且将创建标记文件。例如,将以下内容粘贴到文件中并运行它。您会看到Remove-AppXPackage引发异常,但是thinger.txt仍然被创建。

Remove-AppXPackage xyz
write-output 'test' > thinger.txt

当脚本在引导/登录/任何过程中执行时,它是在删除应用程序包的用户时运行还是在其他用户的上下文中运行?如果是后者,则该用户需要是管理员(在提升的权限下运行)才能从另一个用户的配置文件中删除应用程序包。如果不确定,请在要创建的标记文件的输出中添加whoami

请注意,我隐约记得人们Remove-AppxPackageRemove-ProvisionedAppxPackage。首先删除给定本地用户的软件包。第二个从计算机中删除软件包,因此新用户将不会安装该软件包。如果您需要以提升的权限运行Remove-ProvisionedAppxPackage,这不会让我感到惊讶,但是我在cmdlet的文档中没有看到它。

答案 1 :(得分:0)

如今,

Remove-Appxpackage在很大程度上已被禁用,除非您想执行一些sqlite数据库操作。 https://superuser.com/questions/1115801/unable-to-uninstall-universal-apps-through-powershell