Apps über PowerShell an die Taskleiste in Windows 11 anheften und entfernen

/de/images/user-pinned-taskbar-folder-in-windows.png

Administratoren müssen manchmal bestimmte Apps oder Verknüpfungen programmgesteuert an Ordner und andere Elemente in den Taskleisten von Windows-Benutzern anheften. Die Art und Weise, wie angeheftete Apps und Elemente in der Taskleiste verwaltet werden, hat sich mit jeder neuen Windows-Version geändert. Insbesondere haben wir festgestellt, dass die meisten zuvor verwendeten Skripte zum Anheften oder Lösen von App-Symbolen an der Taskleiste, die in früheren Versionen funktionierten, unter Windows 11 nicht funktionieren. In diesem Beitrag werde ich mehrere PowerShell-Skripte behandeln, die zum Anheften oder Lösen von Elementen an der Taskleiste in Windows 11 25H2 verwendet werden können.

shell:::{4234d49b-0245-4df3-b780-3893943456e1} Namespace-Schnittstelle über die Shell-COM-Schnittstelle, um Verknüpfungen programmgesteuert an die Windows-Taskleiste anzuheften. Dieser Namespace ist in allen Windows-Versionen verfügbar und enthält alle Elemente, die an die Taskleiste angeheftet oder von der Taskleiste gelöst werden können. Sie können sogar im Datei-Explorer zu diesem Pfad navigieren. However, in Windows 11, this namespace can only be used to unpin taskbar items (see below).

Vor der Veröffentlichung von Windows 10 21H2 war es möglich, die Namespace-Schnittstelle über die Shell-COM-Schnittstelle zu verwenden, um Verknüpfungen programmgesteuert an die Windows-Taskleiste anzuheften. Dieser Namespace ist in allen Windows-Versionen verfügbar und enthält alle Elemente, die an die Taskleiste angeheftet oder von der Taskleiste gelöst werden können. Sie können sogar im Datei-Explorer zu diesem Pfad navigieren. In Windows 11 kann dieser Namespace jedoch nur zum Lösen von Taskleistenelementen verwendet werden (siehe unten).

Bisher war es auch möglich, die benötigten Verknüpfungen in das Verzeichnis „%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar“ zu kopieren, um sie an die Taskleiste anzuheften. Unter Windows 11 funktioniert das manuelle Kopieren von Verknüpfungen in den Ordner „\User Pinned\TaskBar“ ebenfalls nicht (obwohl dieser Ordner tatsächlich Verknüpfungen zu angehefteten Apps speichert).

Es scheint, dass Microsoft absichtlich alle Softwaremethoden zum Anheften von Verknüpfungen an die Taskleiste schließt, ohne dass Benutzer sich dessen bewusst sind. Es wird davon ausgegangen, dass Benutzer Elemente nur manuell an die Taskleiste anheften können.

/de/images/user-pinned-taskbar-folder-in-windows.png

So heften Sie Apps mit PowerShell an die Taskleiste in Windows

Um ein benutzerdefiniertes Layout mit angehefteten Apps in der Windows 11-Taskleiste bereitzustellen, können Sie eine spezielle Datei „LayoutModification.xml“ verwenden. Sie können eine XML-Datei anwenden, die in der Taskleiste angeheftete Elemente über Gruppenrichtlinien beschreibt. Dieser Ansatz ist jedoch nicht flexibel, wenn Sie beispielsweise eine Anwendung nach der Installation an die Taskleiste eines bestimmten Benutzers anheften müssen. /de/images/pin-apps-to-taskbar-in-windows-11.png

Das folgende PowerShell-Skript erstellt eine Verknüpfung („.lnk“) zur Zielanwendung im Startmenü (dies kann jede installierte oder tragbare App sein). Das Skript generiert dann eine temporäre XML-Layoutdatei für die Taskleiste im LayoutModificationTemplate-Markup mit einer Verknüpfung zur Anwendung und speichert sie im Benutzerprofil (%AppData%\Microsoft\Windows\Shell\LayoutModification.xml). Nach dem Neustart liest Windows Explorer das Taskleistenlayout aus der XML-Datei und wendet es an. Nach dem Anwenden des Taskleistenlayouts setzt das Skript den Vorlagencache zurück und löscht die XML-Datei, wodurch das Layout entsperrt wird.

` $PinnedAppName=“tcpview64”$PinnedExePath=“C:\Tools\tcpview64.exe”$PinnedLnkPath="$env:APPDATA\Microsoft\Windows\Start Menu\Programs$PinnedAppName.lnk"if (-not (Test-Path $PinnedLnkPath)) {

$WshShell=New-Object-Com WScript.Shell

$app_shortcut=$WshShell.CreateShortcut($PinnedLnkPath)

$app_shortcut.TargetPath=$PinnedExePath

$app_shortcut.WorkingDirectory=Split-Path $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 SilentlyContinue

Stop-Process-Name Explorer-Force

Start-Schlaf 6

Remove-Item $xmlPath-Force-ErrorAction SilentlyContinue `

/de/images/pin-an-app-to-taskbar-using-powershell-script.png

Anders als bei der Verwendung von GPO können Sie mit dieser Methode zum Anheften von Elementen vermeiden, dass die App-Verknüpfung statisch zur Taskleiste fixiert wird. Wenn Benutzer eine solche angeheftete App nicht mehr benötigen, können sie sie selbst entfernen und sie wird bei der nächsten Anmeldung nicht mehr in der Taskleiste angezeigt.

Die in der XML-Datei verwendete Syntax hängt von der Art der angehefteten Anwendung ab:

  • Für klassische Win32-Apps: — „“ (geben Sie entweder den Pfad zur ausführbaren Anwendungsdatei oder ihre AppID an, wie vom Befehl „Get-StartApps“ zurückgegeben)
  • Für Microsoft Store (UWP)-Apps: „“, geben Sie den Namen der App anstelle ihres Pfads an.

Um eine Microsoft Store-App anzuheften, müssen Sie ihren Namen ermitteln:

` Get-AppxPackage-AllUsers| Wählen Sie „PackageFamilyName“ aus

Geben Sie den Namen und die „AppID“ (Application User Model ID, AUMID) der Anwendung in Variablen an. In diesem Beispiel möchte ich die Windows-Terminal-App anpinnen:

$AppName="Windows Terminal"$AppID="Microsoft.WindowsTerminal\_8wekyb3d8bbwe!App"

Um eine Microsoft Store-App anzuheften, ersetzen Sie die Zeile „“ im XML durch Folgendes:

Apps von der Taskleiste in Windows 11 mit PowerShell entfernen

Wenn Sie PowerShell verwenden, ist es viel einfacher, eine App von der Taskleiste zu entfernen. Listen Sie zunächst die registrierten Programme, Verwaltungskonsolen und Microsoft Store-Apps auf, die zum Anheften an die Taskleiste verfügbar sind.

` $shell=New-Object-Com Shell.Application

$shell.Namespace(‘shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | Wählen Sie „Name“.

/de/images/unpin-taskbar-item-via-shell-namespace.png

Kopieren Sie den Kurznamen des Programms, das Sie entfernen möchten. Um eine bestimmte App mit PowerShell von der Taskleiste zu lösen, führen Sie das folgende Skript aus:

$appname="tcpview64"((New-Object-Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | ?{$\_.Name-eq $appname}).Verbs() | ?{$\_.Name.replace('&','')-match 'Von Taskleiste entfernen'} | %{$\_.DoIt(); $exec=$true}

Überprüfen Sie, ob die angeheftete App aus der Taskleiste verschwunden ist.

/de/images/unpin-icons-from-taskbar-in-windows-11.png

*️⃣ Quelllink:

Layout mit angehefteten Apps an die Windows 11-Taskleiste, Get-AppxPackage,