PowerShell 経由で Windows 11 のタスクバーにアプリを固定および固定解除する
<本文>
管理者は、プログラムによって特定のアプリやショートカットを Windows ユーザーのタスクバーのフォルダーやその他の項目に固定する必要がある場合があります。タスクバー上で固定されたアプリと項目を管理する方法は、Windows の新しいバージョンごとに変更されています。特に、以前のバージョンでは機能していたタスク バーへのアプリ アイコンの固定または固定解除に使用されていたスクリプトのほとんどが、Windows 11 では機能しないことがわかりました。この投稿では、Windows 11 25H2 でタスク バーに項目を固定または固定解除するために使用できるいくつかの PowerShell スクリプトについて説明します。
shell:::{4234d49b-0245-4df3-b780-3893943456e1} シェル COM インターフェイス経由の名前空間インターフェイスを使用して、ショートカットを Windows タスクバーにプログラム的に固定します。この名前空間は、Windows のすべてのバージョンで使用でき、タスク バーに固定または固定解除できるすべての項目が含まれています。ファイル エクスプローラーでこのパスに移動することもできます。ただし、Windows 11 では、この名前空間はタスクバー項目の固定を解除するためにのみ使用できます (以下を参照)。
Windows 10 21H2 のリリース前は、シェル COM インターフェイス経由で名前空間インターフェイスを使用して、ショートカットを Windows タスクバーにプログラム的に固定することができました。この名前空間は、Windows のすべてのバージョンで使用でき、タスク バーに固定または固定解除できるすべての項目が含まれています。ファイル エクスプローラーでこのパスに移動することもできます。ただし、Windows 11 では、この名前空間はタスクバー項目の固定を解除するためにのみ使用できます (以下を参照)。
以前は、必要なショートカットをタスクバーに固定するために、必要なショートカットを %AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar ディレクトリにコピーすることもできました。 Windows 11 では、\User Pinned\TaskBar フォルダーにショートカットを手動でコピーすることもできません (ただし、実際には、このフォルダーには固定されたアプリへのショートカットが保存されます)。
Microsoft は、ユーザーが気づかないうちにタスクバーにショートカットを固定するソフトウェアの方法をすべて意図的に閉じているようです。ユーザーは項目をタスクバーに手動で固定することしかできないと想定されています。

PowerShell を使用して Windows のタスクバーにアプリを固定する方法
ピン留めされたアプリを含むカスタマイズされたレイアウトを Windows 11 タスクバーに展開するには、特別な LayoutModification.xml ファイルを使用できます。グループ ポリシーを介して、タスク バーに固定された項目を記述する XML ファイルを適用できます。ただし、このアプローチは、たとえば、1 つのアプリケーションをインストール後に特定のユーザーのタスクバーに固定する必要がある場合には柔軟ではありません。 
次の PowerShell スクリプトは、スタート メニューにターゲット アプリケーションへのショートカット ( .lnk ) を作成します (これは、インストールされているアプリまたはポータブル アプリであればどれでも構いません)。次に、スクリプトは、アプリケーションへのショートカットを含む LayoutModificationTemplate マークアップ内のタスク バー用の一時 XML レイアウト ファイルを生成し、それをユーザー プロファイル (%AppData%\Microsoft\Windows\Shell\LayoutModification.xml ) に保存します。再起動後、Windows エクスプローラーは XML ファイルからタスク バー レイアウトを読み取って適用します。タスクバー レイアウトを適用した後、スクリプトはテンプレート キャッシュをリセットし、XML ファイルを削除して、レイアウトのロックを解除します。
` $PinnedAppName=“tcpview64”$PinnedExePath=“C:\Tools\tcpview64.exe”$PinnedLnkPath="$env:APPDATA\Microsoft\Windows\スタート メニュー\プログラム$PinnedAppName.lnk"if (-not (テスト パス $PinnedLnkPath)) {
$WshShell=New-Object-Com WScript.Shell
$app_shortcut=$WshShell.CreateShortcut($PinnedLnkPath)
$app_shortcut.TargetPath=$PinnedExePath
$app_shortcut.WorkingDirectory=分割パス $PinnedExePath
$app_shortcut.IconLocation=$PinnedExePath
$app_shortcut.Save()
}
$xmlTemplate=@"
<レイアウト変更テンプレート>
<カスタムタスクバーレイアウトコレクション>
<デフォルトレイアウト:タスクバーレイアウト>
<タスクバー:タスクバーピンリスト>
<タスクバー:デスクトップアプリ>
「@
$xmlPath="$env:LOCALAPPDATA\Microsoft\Windows\Shell\LayoutModification.xml"$xmlTemplate | Out-File-FilePath $xmlPath-Encoding UTF8-NoNewline
Remove-Item “$env:LOCALAPPDATA\Microsoft\Windows\Shell\DefaultLayouts”-Recurse-Force-ErrorAction SilentContinue
停止-プロセス名エクスプローラー-強制
スタート - スリープ 6
Remove-Item $xmlPath-Force-ErrorAction SilentlyContinue `

GPO を使用する場合とは異なり、この項目を固定する方法を使用すると、アプリのショートカットをタスクバーに静的に固定することを回避できます。ユーザーがそのような固定アプリが必要なくなった場合は、自分で固定を解除することができ、次回サインインするときにアプリはタスクバーに戻りません。
XML ファイルで使用される構文は、固定されるアプリケーションのタイプによって異なります。
- クラシック Win32 アプリの場合: —
(アプリケーション実行可能ファイルへのパス、またはGet-StartAppsコマンドによって返される AppID を指定します) - Microsoft Store (UWP) アプリの場合:
、パスの代わりにアプリの名前を指定します。
Microsoft Store アプリを固定するには、その名前を取得する必要があります。
Get-AppxPackage-AllUsers| PackageFamilyName を選択します
アプリケーションの名前と「AppID」(アプリケーションユーザーモデルID、AUMID)を変数に指定します。この例では、Windows ターミナル アプリを固定します。
$AppName="Windows ターミナル"$AppID="Microsoft.Windows Terminal\_8wekyb3d8bbwe!App"
Microsoft Store アプリをピン留めするには、XML 内の行 を次のものに置き換えます。
<タスクバー:uwa>
PowerShell を使用して Windows 11 のタスクバーからアプリの固定を解除する
PowerShell を使用すると、タスク バーからアプリの固定を解除するのがはるかに簡単になります。まず、タスク バーにピン留めできる登録済みプログラム、管理コンソール、および Microsoft Store アプリを一覧表示します。
` $shell=New-Object-Com Shell.Application
$shell.Namespace(‘shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() |名前を選択してください `

固定を解除するプログラムの短縮名をコピーします。 PowerShell を使用してタスクバーから特定のアプリの固定を解除するには、次のスクリプトを実行します。
$appname="tcpview64"((New-Object-Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | ?{$\_.Name-eq $appname}).Verbs() | ?{$\_.Name.replace('&','')-match 'タスクバーからの固定を解除'} | %{$\_.DoIt(); $exec=$true}
固定したアプリがタスクバーから消えているかどうかを確認します。
![]()
*️⃣ 出典リンク:
Windows 11 タスクバーにアプリを固定したレイアウト、Get-AppxPackage、