透過 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需要管理員權限。 文件for-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 }

相關內容