如何使用 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 脚本的更多信息)。