如何使用 PowerShell 和 GPO 添加或刪除固定文件夾以快速訪問

Jacki

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 腳本的更多信息)。