どうもミツシマです。

今回はWindows10に標準でプロビジョニングされたストアアプリを一括削除する方法を検証してみました。ただし、単純に一括削除するのは簡単なので今回は指定されたストアアプリ以外を一括削除する方法を検証しました。

検証環境は以下の通り
PC:Windows10 Pro 1809


完成したスクリプトがこちら↓↓↓

〜RemoveProvisonedStoreApps.ps1〜

#スクリプトのパス取得
$ScriptFullPath = $MyInvocation.MyCommand.Path

#削除したくない(残したい)ストアアプリのリストを定義 (注)DisplayName!!
#ここでは「ストア」・「付箋」・「電卓」・「スクリーンスケッチ」を残すように指定している
$LeaveAppsList = @(
"Microsoft.WindowsStore",
"Microsoft.MicrosoftStickyNotes",
"Microsoft.WindowsCalculator",
"Microsoft.ScreenSketch"
)


#管理者として実行しているかを確認し、管理者で実行されていなければ、管理者として再実行する
$WindowsPrincipal = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()
if (-Not($WindowsPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))){
    Write-Output "管理者として実行されていません。再度管理者で実行します。"
    Start-Process powershell.exe -ArgumentList "-ExecutionPolicy RemoteSigned -command $ScriptFullPath" -Verb runas
    Exit
}

#プロビジョニングされたストアアプリの情報を取得
$ProvisionedStoreAppsInfo = Get-AppxProvisionedPackage -Online

foreach($StoreAppInfo in $ProvisionedStoreAppsInfo){

    #判定変数
    $LeaveListJudge = $false
    
    $StoreAppDisplayName = $StoreAppInfo.DisplayName
    $StoreAppPackageName = $StoreAppInfo.PackageName

    #残すリストと照らし合わせる
    foreach($List in $LeaveAppsList){
        If ($List -eq $StoreAppDisplayName){
            #残すリストにあった場合に「True」とする
            $LeaveListJudge = $true            
        }
    }

    #プロビジョニングされたストアアプリの内、残すリストになかったストアアプリを削除する
    If ($LeaveListJudge -eq $false){

        Write-Output "削除するストアアプリ名:$StoreAppDisplayName"
        Write-Output "削除するパッケージ名:$StoreAppPackageName"
        Remove-AppxProvisionedPackage -Online -PackageName $StoreAppPackageName 
    }
}


〜解説〜

今回もPowershellコマンドを使用している。
実際にプロビジョニングされたストアアプリを削除するコマンドは「Remove-AppxProvisionedPackage」。
そしてスクリプト自体の構成としては、まず変数「$LeaveAppsList」に残しておきたいストアアプリの一覧を定義している。
ここでは、「ストア」・「付箋」・「電卓」・「スクリーンスケッチ」を残すように定義している。
(なぜこの4つかというと個人的に使用しそうなストアアプリかな〜〜と思われるからである。)
このリストを変更する際にストアアプリの名前を確認したい時には
Get-AppxProvisionedPackage -Online | Select-Object DisplayName,PackageName
コマンドで確認することが出来る。
※単純に「Get-AppxProvisionedPackage -Online」でも確認出来るが、見やすくするために上記のようにしている

注意点としてはこのリストには「DisplayName」を記述するようにすること!!

後は実際にプロビジョニングされたストアアプリの一覧を取得した後、残しておきたいストアアプリの一覧と照らし合わせて、リスト以外のストアアプリを一括削除する流れになる。
あ、忘れてましたがいつもどおり管理者権限で実行しているかを確認しています。

実際に使用する際には一旦「Remove-AppxProvisionedPackage」の行をコメントアウトして、残しておきたいストアアプリが削除対象になっていないかを確認した方がいいかも!!!


実際にコマンド実行前後のプロビジョニングされたストアアプリの一覧はこんな感じ

↓実行前↓
アプリ一覧


↓実行後↓
削除後のアプリ一覧


一応意図した通りにストアアプリが削除されたのでOK!!
実際には既にログインされていてプロファイルが作成済みのユーザーのストアアプリは残ったままだが、このコマンド実行以降に新規ログインしてプロファイルが作成されるユーザーのストアアプリは削除されているはずである。


P.S.それにしても企業向けであるWindows10Proに、ソリティアとかXBOXとかのゲームが標準で入っているのはいかがものかと個人的には思う次第である。。。^^;
次回はプロファイルが作成済みのユーザーのストアアプリの一括削除を検証してみようかな〜〜

スポンサードリンク