如何让PowerShell脚本同时移除Windows 11开始菜单推荐区指定条目
实现从文件管理器和开始菜单推荐区移除指定最近文件条目
你的现有脚本已经能处理文件管理器快速访问中的最近文件条目,要同时移除开始菜单推荐区的对应内容,需要补充处理系统最近项目和应用跳转列表两部分,以下是完整修改后的脚本:
# 移除文件管理器快速访问中的指定最近文件条目 $Namespace = "shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}" $QuickAccess = New-Object -ComObject shell.application $RecentFiles = $QuickAccess.Namespace($Namespace).Items() $FilteredFiles = $RecentFiles | Where-Object {$_.Path -like "*C:\CertainDir*"} $FilteredFiles | ForEach-Object {$_.InvokeVerb("remove")} # 移除"最近项目"文件夹中的对应条目(同步到开始菜单推荐) $RecentItemsNamespace = "shell:::{22877a6d-37a1-461a-91b0-dbda5aaebc99}" $RecentItems = $QuickAccess.Namespace($RecentItemsNamespace).Items() $FilteredRecentItems = $RecentItems | Where-Object {$_.Path -like "*C:\CertainDir*"} $FilteredRecentItems | ForEach-Object {$_.InvokeVerb("delete")} # 移除应用跳转列表中的指定路径条目(处理开始菜单推荐中来自应用的最近文件) $jumpListPaths = @( "$env:APPDATA\Microsoft\Windows\Recent\AutomaticDestinations", "$env:APPDATA\Microsoft\Windows\Recent\CustomDestinations" ) foreach ($path in $jumpListPaths) { if (Test-Path $path) { $jumpListFiles = Get-ChildItem -Path $path -File foreach ($file in $jumpListFiles) { try { $jumpList = New-Object -ComObject Microsoft.Windows.Shell.JumpList $jumpList.LoadKnownCategory([Microsoft.Windows.Shell.JumpListCategoryType]::Recent) $itemsToRemove = $jumpList.Items | Where-Object {$_.Path -like "*C:\CertainDir*"} foreach ($item in $itemsToRemove) { $jumpList.Items.Remove($item) } $jumpList.Save() } catch { # 部分跳转列表文件可能被占用,直接跳过 continue } } } } # 清理COM对象释放内存 [System.Runtime.Interopservices.Marshal]::ReleaseComObject($QuickAccess) | Out-Null [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers()
关键说明
- 原有代码保留:负责移除文件管理器快速访问面板里的指定路径条目。
- 最近项目处理:
shell:::{22877a6d-37a1-461a-91b0-dbda5aaebc99}是系统“最近项目”的Shell命名空间,这里的条目会直接同步到开始菜单推荐区,调用delete动词仅从列表移除,不会删除实际文件。 - 应用跳转列表处理:Windows会把各应用打开过的最近文件存在
AutomaticDestinations和CustomDestinations目录的跳转列表文件中,开始菜单推荐会聚合这些内容。通过Microsoft.Windows.Shell.JumpList对象加载并移除匹配条目。 - 注意事项:
- 替换
*C:\CertainDir*为你实际要过滤的路径,支持通配符匹配。 - 脚本无需管理员权限,仅操作当前用户的个人数据。
- 部分跳转列表文件可能因被应用占用无法加载,脚本会自动跳过,不影响整体效果。
- 替换
内容的提问来源于stack exchange,提问作者Mytzenka
相关产品推荐
相关产品推荐

