# https://superuser.com/a/1442733 #Requires -RunAsAdministrator $START_MENU_LAYOUT = @" "@ $layoutFile="C:\Windows\StartMenuLayout.xml" #Delete layout file if it already exists If(Test-Path $layoutFile) { Remove-Item $layoutFile } #Creates the blank layout file $START_MENU_LAYOUT | Out-File $layoutFile -Encoding ASCII $regAliases = @("HKLM", "HKCU") #Assign the start layout and force it to apply with "LockedStartLayout" at both the machine and user level foreach ($regAlias in $regAliases){ $basePath = $regAlias + ":\SOFTWARE\Policies\Microsoft\Windows" $keyPath = $basePath + "\Explorer" IF(!(Test-Path -Path $keyPath)) { New-Item -Path $basePath -Name "Explorer" } Set-ItemProperty -Path $keyPath -Name "LockedStartLayout" -Value 1 Set-ItemProperty -Path $keyPath -Name "StartLayoutFile" -Value $layoutFile } #Restart Explorer, open the start menu (necessary to load the new layout), and give it a few seconds to process Stop-Process -name explorer Start-Sleep -s 5 $wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{ESCAPE}') Start-Sleep -s 5 #Enable the ability to pin items again by disabling "LockedStartLayout" foreach ($regAlias in $regAliases){ $basePath = $regAlias + ":\SOFTWARE\Policies\Microsoft\Windows" $keyPath = $basePath + "\Explorer" Set-ItemProperty -Path $keyPath -Name "LockedStartLayout" -Value 0 } #Restart Explorer and delete the layout file Stop-Process -name explorer # Uncomment the next line to make clean start menu default for all new users #Import-StartLayout -LayoutPath $layoutFile -MountPath $env:SystemDrive\ Remove-Item $layoutFile