我的“找不到路径”错误的出处在哪里? (删除AppxProvisionedPackage)

时间:2019-07-16 17:33:19

标签: powershell windows-10

我正在处理的脚本出错,取消了某些Win10 bloatware应用程序的配置。

第97行的字符17是下面发现的Remove-AppxProvisionedPackage的第一个字符。

相关变量:
$Logfile = "$Env:SystemRoot\Temp\RemoveApps_$($Buildnr).log"

{WriteHostFile是一个仅将文本同时发送到终端和$Logfile的功能。

这是在最新的Windows 10 Pro系统上使用的脚本,该脚本是Powershell .ps1脚本。

我已经研究了$Logfile,它不仅是被创建的,而且Removing Provisioned Package: $ProPackageFullName也会按预期被附加。可以修改日志文件,并且WriteHostFile函数可以正常工作。 (另外,我知道这是一个不好的var名称。稍后我将使其变得更明智。)

老实说,我不确定我还能尝试什么,否则我不会在这里问。

            # Removes app from provisioning
            if ($ProPackageFullName) {
                WriteHostFile "Removing Provisioned Package: $ProPackageFullName"
                start-sleep -Seconds 5 
                Remove-AppxProvisionedPackage -online -packagename $ProPackageFullName | Out-File -FilePath $Logfile -Append -Encoding ascii  

错误:

Remove-AppxProvisionedPackage : The system cannot find the path specified.
At [redacted directory]\RemoveApps.ps1:97 char:17
+ ...             Remove-AppxProvisionedPackage -online -packagename $ProPa ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Remove-AppxProvisionedPackage], COMException
    + FullyQualifiedErrorId : Microsoft.Dism.Commands.RemoveAppxProvisionedPackageCommand

该错误仅发生在实际卸载的软件包上。此代码段包含在一个foreach循环中,该循环首先检查软件包是否已安装。

我现在注意到我正在测试的两台机器之间的差异。 在第一个运行PowerShell 5.1内部版本18362修订版145的脚本中,脚本可以正常工作-按预期删除应用程序。 在第二个运行PowerShell 5.1内部版本17134修订版228的脚本中,会产生上述问题。

1 个答案:

答案 0 :(得分:0)

没有那么复杂。

# "remove-appxpackage -allusers" only works starting in windows 10 version 1809, 
#   otherwise works on current user
# "remove-appxpackage -user" does not work
# remove installed apps starting with "a"
get-appxpackage -allusers a* | remove-appxpackage -whatif -allusers 

# this would ONLY delete the a* apps for the current user
get-appxpackage -allusers a* | remove-appxpackage -whatif

# remove-appxprovisionedpackage has no -whatif option
# remove "to be installed apps for new users" starting with "a"
Get-AppxProvisionedPackage -Online | where displayname -like a* | 
  Remove-AppxProvisionedPackage -Online