
上記のタスクを実行するためのガイダンスを求めています。
私の 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\ にさまざまなフォルダーがまだ存在しています。
ご指摘いただければ幸いです。
答え1
あなたのスクリプトには 2 つの潜在的な問題があるようです:
- 呼び出しには
-AppxProvisionedPackage
おそらく昇格が必要です。スクリプトをユーザーとして実行すると、例外がスローされる可能性があります。 - の呼び出しには
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 検出スクリプトの使用にはいくつかの落とし穴があることに注意してください。
xSigned
クライアント設定とログに の使用に関する記述があっても、クライアントに実行ポリシーがある場合は、スクリプトに署名する必要があります-ByPass
。- 検出スクリプトの出力の意味は難解であり、非公式に文書化されている、しかし IME は信頼できます。
- PowerShell検出スクリプトを次のように作成する必要があります。アダム・メルツァーの回避策彼らに仕事をさせるためです。
- 少なくとも以下の点に留意する必要がありますPowerShell 検出スクリプトが実行されるコンテキストに関して若干の奇妙な点がある。
これらすべてを実行すると、PowerShell 検出スクリプトは、このような複雑で精密な、または非標準的な検出に非常に有効に機能します。
$appList = 'Microsoft.BingSports',
# ...longlist of other apps...
'Microsoft.WindowsReadingList'
Get-AppxPackage |
? { $_.Name -in $appList }