上記のタスクを実行するためのガイダンスを探しています。
私のPowershellスクリプトは次のとおりです。現在、スクリプトは1つの特定の名前付きアプリを削除します。
$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 \に存在します。
ポインタをいただければ幸いです。
スクリプトに2つの潜在的な問題があります。
-AppxProvisionedPackage
の呼び出しには、おそらく昇格が必要です。スクリプトをユーザーとして実行すると、おそらく例外がスローされます。Get-AppxPackage -allusers
を呼び出すには、管理者権限が必要です。 ドキュメント for -allusers
は、「このパラメーターを使用するには、管理者権限を使用してコマンドを実行する必要があります」と読みます。あなたの目標が正確に何であるかは私にはわかりません。これが、Windows8.1のスタート画面でタイルの混乱に対処する方法です。
Remove-AppxPackage
を呼び出すアンインストーラー私がこの戦略を使用するのは、将来、必要であることが判明した場合に、特定のユーザーがこれらのアプリのどれを利用できるかをより外科的に設定するためです。
このアプリケーションが削除のためにデプロイされているユーザーがログインすると、CcmExec
は最終的にアプリケーションを検出し、アンインストールコマンドを呼び出します。アンインストールコマンドが呼び出されると、アプリケーションはユーザーに表示されないか、使用できなくなります。
これが私が使用するアンインストールスクリプトの本体です。 終了コードをスクリプトから確実に取得するのは少し難しい であるため、(アン)インストール用に呼び出されるPowerShellスクリプトの設定方法に注意する必要があります。
$appList = 'Microsoft.BingSports',
# ...longlist of other apps...
'Microsoft.WindowsReadingList'
Get-AppxPackage |
? { $_.Name -in $appList } |
% { Remove-AppxPackage $_.PackageFullName }
以下は、私が使用する検出スクリプトの本体です。 PowerShell検出スクリプトを使用することにはいくつかの落とし穴があることに注意してください。
-ByPass
の使用について記載されているにもかかわらず、クライアントにxSigned
実行ポリシーがある場合は、スクリプトに署名する必要があります。これらすべてを実行すると、PowerShell検出スクリプトは、このような複雑な、外科的な、または型にはまらない検出に対して美しく機能します。
$appList = 'Microsoft.BingSports',
# ...longlist of other apps...
'Microsoft.WindowsReadingList'
Get-AppxPackage |
? { $_.Name -in $appList }