Закрепить/открепить ярлык в панели задач Windows 11 с помощью PowerShell
Иногда нужно для пользователей програмно закрепить определенные приложения или ярлыки на папки в панели задач (таскбаре) Windows. От версии к версии Windows архитектура управления закрепленными приложениями в панели задач менялась. В частности, мы столкнулись с тем, что большинство ранее используемых скриптов для закрепления/открепления иконок приложений в панели задач, которые работали в предыдущих версиях, не работают в Windows 11. В этой статье мы рассмотрим, несколько PowerShell скриптов, которые позволяют закрепить или открепить ярлыки в таскбаре Windows 11 25H2.
shell:::{4234d49b-0245-4df3-b780-3893943456e1}через интерфейс Shell COM (доступен во всех версиях Windows и содержит все элементы, доступные для закрепления/открепления в панели задач). По этому пути можно даже перейти в проводнике. Однако в Windows 11 его можно использовать только для открепления ярлыков (см. ниже).
Также ранее можно было скопировать нужные ярлыки в каталог
%AppData%MicrosoftInternet ExplorerQuick LaunchUser PinnedTaskBar
, чтобы они закрепились на панели задач. В Windows 11 ручное копирование ярлыков в User PinnedTaskBar также не работает (хотя фактически в этой папке хранятся ярлыки закреплённых приложений).
Такое ощущение, что Microsoft целенаправленно закрывает все возможные программные способы закрепления ярлыков в панели задач без ведома пользователей. Предполагается, что пользователь должен сам вручную назначать закрепленные приложения.

Закрепляем приложение в панели задач Windows с помощью PowerShell
Для централизованной настройки макета закрепленных приложений в панели задач Windows 11 можно использовать специальный
LayoutModification.xml
файл. Применить такой XML файл, который описывает закрепленные ярлыки можно через групповую политику. Однако такой подход не удобен и не гибок, когда вам нужно, к примеру, после развертывания закрепить одно приложение в таскбаре конкретного пользователя.

Следующий PowerShell скрипт создает ярлык (.lnk) на целевое приложение в меню Пуск (это может быть как любое установленное, так и portable приложение). После этого скрипт генерирует временный XML макет для таскбара в разметке LayoutModificationTemplate с ярлыком на приложение и сохраняет его в пользовательский профиль (
%AppData%MicrosoftWindowsShellLayoutModification.xml
). Проводник Windows после перезапуска считывает и применяет макет панели задач из XML файла.
После применения макета панели задач сбрасывается кэш шаблонов, а исходный XML удаляется, что разблокирует макет панели задач.
$AppName = "tcpview64"
$ExePath = "C:Toolstcpview64.exe"
$lnkPath = "$env:APPDATAMicrosoftWindowsStart MenuPrograms$AppName.lnk"
if (-not (Test-Path $lnkPath)) {
$WshShell = New-Object -Com WScript.Shell
$shortcut = $WshShell.CreateShortcut($lnkPath)
$shortcut.TargetPath = $ExePath
$shortcut.WorkingDirectory = Split-Path $ExePath
$shortcut.IconLocation = $ExePath
$shortcut.Save()
}
$xml = @"
xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout"
xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification"
Version="1">
"@
$xmlPath = "$env:LOCALAPPDATAMicrosoftWindowsShellLayoutModification.xml"
$xml | Out-File -FilePath $xmlPath -Encoding UTF8 -NoNewline
Remove-Item "$env:LOCALAPPDATAMicrosoftWindowsShellDefaultLayouts" -Recurse -Force -ErrorAction SilentlyContinue
Stop-Process -Name explorer -Force
Start-Sleep 5
Remove-Item $xmlPath -Force -ErrorAction SilentlyContinue

Такой способ закрепления позволяет уйти от жёсткой фиксации ярлыка приложения в таскбаре (как при использовании GPO). Пользователи могут самостоятельно открепить приложение, если оно им не нужно, и оно не вернется в панель задач при следующем входе.
В зависимости от типа закрепляемого приложения, в XML файле нужно использовать определенный синтаксис:
- Для классических Win32 приложений —
(можно указать как путь к приложению, так и его AppID из результатов Get-StartApps) - Для приложений Microsoft Store (UWP):
, вместо пути к приложению указывает его имя
Чтобы закрепить UWP приложение, нужно получить его имя:
Get-AppxPackage -AllUsers| select PackageFamilyName
Укажите имя и ID приложения в переменных (в этом примере мы закрепляем Windows Terminal):
$AppName = "Windows Terminal"
$AUMID = "Microsoft.WindowsTerminal_8wekyb3d8bbwe!App"
Чтобы закрепить UWP приложение, замените в XML строку
на:
Открепить приложение в панели задач Windows 11
Открепить приложение намного проще. Прежде всего нужно получить список зарегистрированных приложений, консолей управления и Microsoft Store приложений, доступных для закрепления в панели задач:
$shell = New-Object -Com Shell.Application
$shell.Namespace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | Select Name

Скопируйте короткое имя приложения. Теперь, чтобы программно открепить приложение из панели задач, выполните такой PowerShell скрипт:
$appname = "tcpview64"
((New-Object -Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | ?{$_.Name -eq $appname}).Verbs() | ?{$_.Name.replace('&','') -match 'Unpin from taskbar'} | %{$_.DoIt(); $exec = $true}
Как вы видите, закрепленное приложение исчезло из панели задач.

Windows 11
Закрепить/открепить ярлык в панели задач Windows 11 с помощью PowerShell