どうもミツシマです。

以前、「コマンド(VBS)でタスクバーにピン留め出来るか検証してみた」をやってみました。
結果としてはWindows10では、コマンドでタスクバーからアプリのピン留めを外すことは出来ても、ピン留めすることは出来ないという検証結果でした。
この時は通常のアプリをVBSコマンドで外すコマンドを検証していました。
今回はWIndow10で初めてログインすると初期でタスクバーにピン留めされている「Microsoft Edge」・「Microsoft Store」・「メール」の3つをタスクバーから削除するPowershellコマンドを検証してみました。


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


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

〜Delete-TaskbarUWPApps.ps1〜

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

#「Microsoft Edge」タスクバーからピン留めを外す
$AppName = "Microsoft Edge"
$wshell = (New-Object -Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | Where-Object {$_.Name -eq $AppName}
$wshell.Verbs() | Where-Object {$_.Name -like "*タスク バーからピン留めを外す*"} | ForEach-Object{$_.DoIt()}

#「Microsoft Store」タスクバーからピン留めを外す
$AppName = "Microsoft Store"
$wshell = (New-Object -Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | Where-Object {$_.Name -eq $AppName}
$wshell.Verbs() | Where-Object {$_.Name -like "*タスク バーからピン留めを外す*"} | ForEach-Object{$_.DoIt()}

#「メール」タスクバーからピン留めを外す
$AppName = "メール"
$wshell = (New-Object -Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | Where-Object {$_.Name -eq $AppName}
$wshell.Verbs() | Where-Object {$_.Name -like "*タスク バーからピン留めを外す*"} | ForEach-Object{$_.DoIt()}

#ps1ファイルの自己削除
Remove-Item -Path $ScriptPath -Force


〜解説〜

以前VBSスクリプトで使用していたshellオブジェクトを呼び出して使用している。
通常のデスクトップアプリケーションであれば、ショートカットがあるフォルダのNameSpaceを指定すれば良かったがUWPアプリの場合は「shell:::{4234d49b-0245-4df3-b780-3893943456e1」等で指定するようだ。
※呼び出し方法はこれだけではないようだが。
後はアプリケーション名と合致するオブジェクトを「$wshell」変数に代入して、そこからVerbメソッドを使用してタスクバーからピン留めを外している。
ちょっと躓いたところとして、「メール」アプリが日本語で登録されているところである。
※海外のサイトを参考に作成していたので、最初「Mail」と指定して失敗していた
 アプリケーションとして登録されている名前を確認したい時には
 「$wshell = (New-Object -Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | Select-Object Name」で確認出来る。


最後にこのスクリプト自体を削除するコマンドを入れているが、これは不要であればコメントアウトしてもらえばOK。


検証環境だとバッチリ動作したので今回の検証はここで終了(^o^)


スポンサードリンク