
我正在尋找有關執行上述任務的指導。
我的 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
我發現您的腳本有兩個潛在問題:
- 呼叫
-AppxProvisionedPackage
很可能需要提升。當您以使用者身分執行腳本時,它可能會引發異常。 - 調用
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 偵測腳本存在一些陷阱:
- 如果您在客戶端上有執行策略,則需要對腳本進行簽名,
xSigned
無論客戶端設定和日誌如何說明如何使用-ByPass
. - 檢測腳本輸出的語意是晦澀難懂的僅限非官方記錄,但輸入法是可靠的。
- 您需要使用以下命令來編寫 PowerShell 檢測腳本Adam Meltzer 的解決方法讓他們去工作。
- 您至少還應該知道關於 PowerShell 偵測腳本執行環境的一些奇怪之處。
如果您執行了所有這些操作,PowerShell 檢測腳本可以完美地處理像這樣的複雜、外科手術或非常規檢測。
$appList = 'Microsoft.BingSports',
# ...longlist of other apps...
'Microsoft.WindowsReadingList'
Get-AppxPackage |
? { $_.Name -in $appList }