如何使用 PowerShell 和 GPO 添加或刪除固定文件夾以快速訪問
Windows 文件資源管理器有一個單獨的面板,顯示收藏的文件夾和位置的列表,稱為快速訪問。許多用戶和管理員不公正地忽略了這個方便的 Windows 工具來快速訪問您最喜愛的文件夾。本文介紹如何使用 PowerShell 和組策略自動配置 Windows 上的快速訪問窗格和固定文件夾。
默認情況下,快速訪問面板僅顯示標準用戶配置文件庫(桌面、下載、圖片、文檔)。 Windows 會自動將用戶經常(或最近)打開的文件夾添加到快速訪問。用戶還可以手動將任何文件夾固定到快速訪問窗格。為此,請選擇您計算機上的所需文件夾或遠程計算機上的共享文件夾,然後選擇固定到快速訪問選項。在這種情況下,文件夾名稱旁邊將出現一個圖釘圖標。

如果您的 Windows 未顯示“快速訪問”窗格,請轉到 HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorer 註冊表項並刪除集線器模式註冊表參數的值為1(設置此選項後,文件資源管理器將隱藏快速訪問面板)。之前,我們展示瞭如何在 Windows 文件資源管理器中隱藏庫和特殊文件夾。
就我而言,我想根據分配給用戶的訪問組(角色)將某些文件夾固定到快速訪問。例如,會計師需要一份最喜歡的文件夾列表,銷售經理需要另一份,等等。組策略沒有集中管理快速訪問的內置工具,因此必須使用 PowerShell。
了解更多:在 Windows 上配置文件和文件夾訪問審核 (GPO)
要將特定文件夾添加(固定)到快速訪問列表,請在命令中指定該文件夾的路徑:
$quickaccess = new-object -com shell.application
$quickaccess.Namespace("C:CorpAppReport").Self.InvokeVerb("pintohome")


快速訪問窗格中的項目列表存儲在%AppData%MicrosoftWindowsRecentAutomaticDestinationsf01b4d95cf55d32a.automaticDestinations-ms文件。要快速清除快速訪問列表,請運行以下命令刪除此文件:
del /f /s /q /a "%AppData%MicrosoftWindowsRecentAutomaticDestinationsf01b4d95cf55d32a.automaticDestinations-ms"
可以將本地文件夾或共享網絡文件夾(通過 UNC 路徑)添加到快速訪問:
$quickaccess.Namespace("\munfs01publicsales").Self.InvokeVerb("pintohome")
可以固定任何用戶配置文件文件夾
$quickaccess.Namespace("C:Users$($env:USERNAME)AppDataRoamingMyApp").Self.InvokeVerb("pintohome")
從快速訪問中刪除(取消固定)文件夾:
($QuickAccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items() | where {$_.Path -eq "C:CorpAppReport"}).InvokeVerb("unpinfromhome")
您可以刪除默認固定到快速訪問的任何配置文件庫文件夾:
$quickaccess = new-object -com shell.application
$results=$QuickAccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items()
$DeleteDefaultItems = @("Desktop","Documents","Pictures","Videos","Downloads")
($results| where {$_.name -in $DeleteDefaultItems}).InvokeVerb("unpinfromhome")
從快速訪問中刪除所有固定的項目:
($quickaccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items() | where { $_.IsFolder -eq "True"}).InvokeVerb("unpinfromhome")
僅當用戶是特定 AD 組的成員時,以下 PowerShell 腳本才會將文件夾添加到快速訪問窗格:
$usergroups=(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf
if ($usergroups.Contains('CN=MUN_SaleManagers,OU=Groups,OU=MUN,DC=woshub,DC=loc'))
{
$AddItems = @(
[pscustomobject]@{Name=Report;Path="\woshub.locDFSReports"}
[pscustomobject]@{Name="Scans";Path="\woshub.locDFSScans"}
[pscustomobject]@{Name="Test1";Path="$env:USERPROFILEDownloads"}
)
ForEach ($Item in $AddItems)
{
if (($Item.Name -notin $results.Name) -and (Test-Path -Path $Item.path)) {
$QuickAccess.Namespace($Item.path).Self.InvokeVerb("pintohome")
}
}
}
如果用戶是 MUN_SaleManagers 組的成員,此 PowerShell 腳本將檢查用戶的快速訪問列表是否包含來自$AddItems大批。如果快速訪問中缺少此類文件夾,腳本將檢查指定路徑的可用性並固定該文件夾。
您可以向腳本添加多個條件來檢查用戶是否是其他 AD 安全組的成員。因此,PowerShell 腳本將根據用戶的 AD 組成員身份將文件夾固定到用戶的快速訪問列表。
將此 PowerShell 保存到\woshub.locNETLOGONAD 域控制器上的文件夾(這允許忽略 PowerShell 執行策略設置。)並使用組策略將其作為用戶登錄腳本運行(有關通過 GPO 運行 PowerShell 腳本的更多信息)。


