The issue is that no matter how I am applying the custom taskbar items, after a system reboot it will replace any org specific items the user unpinned. It does not remove any items the user pins, only re-adds the org specific items.
I am attempting to automate the new PC deployment process, and the final element I am struggling with is pinning custom items to the taskbar, specifically the permanence of the pinned items. The goal is to remove the default items (Edge, Store, etc.) and pin a few org specific items, but only the first time the user logs into a given PC, and never again. Users should have the ability to unpin any of the org specific items as well as pin their own, and have their change remain permanent.
I have created a custom startlayout.xml file (shown below) with the desired settings. I have attempted applying this file to systems via PowerShell with "Import-StartLayout -LayoutPath "\NETWORK_PATH_TO_FILE\layout.xml" -MountPath C:\". This results in my layout.xml file being written to "C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml" and makes it so users have the org specific items pinned to their task bar. Upon reboot, those org specific items will always be there, regardless of what modifications have been made by the user.
I have also used Group Policy to deploy the startlayout.xml, which this document claims to do exactly what I want:
"To apply a taskbar configuration that allows users to make changes that will persist, apply your configuration by using Group Policy."
The policy only contains the single setting, that being User Configuration > Polices > Admin Templates > Start Menu and Taskbar > Start Layout. This setting is enabled and has a value of "\NETWORK_PATH_TO_FILE\layout.xml". This behaves almost identically to the PowerShell method, the only difference being on some of the reboots it does not re-apply the setting, whereas the PowerShell was very consistently applied on every reboot.
Any insight would be greatly appreciated
<?xml version="1.0" encoding="utf-8"?>
<LayoutModificationTemplate
xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification"
xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout"
xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"
xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout"
Version="1">
<CustomTaskbarLayoutCollection PinListPlacement="Replace">
<defaultlayout:TaskbarLayout>
<taskbar:TaskbarPinList>
<taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\File Explorer.lnk" />
<taskbar:DesktopApp DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Outlook.lnk" />
<taskbar:DesktopApp DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Google Chrome.lnk" />
<taskbar:DesktopApp DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\OrgCustomAppHere.lnk" />
<taskbar:DesktopApp DesktopApplicationID="com.squirrel.Teams.Teams" />
</taskbar:TaskbarPinList>
</defaultlayout:TaskbarLayout>
</CustomTaskbarLayoutCollection>
</LayoutModificationTemplate>