0

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

主机运行的是 Windows 10 专业版。脚本正在通过 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"

}
  • 检查时会创建 BloatFlag.txt C:\
  • 列出的软件均未删除

如果代码到达创建文本文件,我预计这些应用程序将被删除。

4

2 回答 2

0

Remove-Appxpackage 现在基本上被禁用了,除非你想做一些 sqlite 数据库操作。 https://superuser.com/questions/1115801/unable-to-uninstall-universal-apps-through-powershell

于 2019-05-15T19:51:50.710 回答
0

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

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

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

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

当脚本在启动/登录/任何过程中执行时,它是作为正在删除应用程序包的用户运行,还是在不同用户的上下文中运行?如果是后者,用户需要成为管理员(在提升的权限下运行)才能从其他用户的配置文件中删除应用程序包。如果您不确定,请将 a 添加whoami到您正在创建的标记文件的输出中。

只是一个旁注,我隐约记得人们Remove-AppxPackageRemove-ProvisionedAppxPackage. 第一个删除给定本地用户的包。第二个从机器中删除包,所以新用户不会安装包。如果您需要以Remove-ProvisionedAppxPackage提升的权限运行,我不会感到惊讶,但我在 cmdlet 的文档中没有看到这一点。

于 2019-05-15T14:08:22.347 回答