通过 SCCM 2012 交付的 Powershell 脚本可完全删除 Windows 8.1 应用程序

通过 SCCM 2012 交付的 Powershell 脚本可完全删除 Windows 8.1 应用程序

我正在寻求有关执行上述任务的指导。

我的 Powershell 脚本如下,该脚本当前删除一个特定命名的应用程序。

$AppsToDelete="*Microsoft.WindowsReadingList*"
 Foreach ($AppName in $AppsToDelete)
 {
     get-appxprovisionedpackage -online | where packagename -like $AppName | remove-appxprovisionedpackage -Online
     Get-AppxPackage -name $AppName -allusers | Remove-AppxPackage
 }

SCCM2012执行脚本使用的程序如下——

PowerShell.exe -ExecutionPolicy UnRestricted -File .\delappsreadinglistonly.ps1

我已经在 SCCM 2012 中创建了一个程序并部署到客户端。

该程序设置为以用户身份运行,而不是系统身份运行,

EXECMGR.log文件告诉我脚本已被客户端接收并成功运行,退出代码=0,执行状态为成功。

也就是说,“阅读列表”磁贴仍然在(Metro?)开始屏幕上,“阅读列表”应用程序仍然出现在按名称字母顺序排列的应用程序中并可以执行,并且各种文件夹仍然存在于 C:\program files\windowsapps\

如果能提供指点我将非常感激。

答案1

我发现你的脚本有两个潜在问题:

  1. 调用-AppxProvisionedPackage最有可能需要提升权限。当您以用户身份运行脚本时,它可能会引发异常。
  2. 调用Get-AppxPackage -allusers需要管理员权限。 文档读作-allusers“要使用此参数,您必须使用管理员权限运行该命令。”

我不清楚你的目标到底是什么。以下是我处理 Windows 8.1 开始屏幕中混乱的磁贴的方法:

  • 创建具有以下特征的 SCCM 应用程序:
    • 无安装程序
    • 卸载程序需要Remove-AppxPackage常用应用程序列表
    • 该应用程序列表的检测脚本
  • 将带有卸载操作的应用程序部署到受影响的用户

我使用这种策略是因为如果有必要,它可以使事情变得更有针对性,即将来可以确定哪些应用程序可供特定用户使用。

当部署了此应用程序以进行删除的用户登录时,CcmExec最终会检测到该应用程序并调用卸载命令。调用卸载命令后,应用程序将不再对用户可见或可用。

卸载应用程序.ps1

这是我使用的卸载脚本的主体。您需要小心设置用于(卸载)安装的 PowerShell 脚本,因为从脚本中可靠地获取退出代码有点棘手

$appList =  'Microsoft.BingSports',
            # ...longlist of other apps...
            'Microsoft.WindowsReadingList'
Get-AppxPackage | 
    ? { $_.Name -in $appList } | 
    % { Remove-AppxPackage $_.PackageFullName }

检测应用程序.ps1

以下是我使用的检测脚本的主体。请注意,使用 PowerShell 检测脚本存在一些缺陷:

如果您完成所有这些,PowerShell 检测脚本将能够完美地完成此类复杂、精确或非常规的检测。

    $appList =  'Microsoft.BingSports',
            # ...longlist of other apps...
            'Microsoft.WindowsReadingList'
    Get-AppxPackage | 
    ? { $_.Name -in $appList }

相关内容