Поиск по сайту:

Как добавить или удалить закрепленные папки для быстрого доступа с помощью PowerShell и GPO


В проводнике Windows есть отдельная панель, на которой отображается список избранных папок и мест, которая называется Быстрый доступ. Многие пользователи и администраторы несправедливо игнорируют этот удобный инструмент Windows для быстрого доступа к любимым папкам. В этой статье описывается, как использовать PowerShell и групповые политики для автоматизации настройки панели быстрого доступа и закрепленных папок в Windows.

По умолчанию на панели быстрого доступа отображаются только стандартные библиотеки профилей пользователей (Рабочий стол, Загрузки, Изображения, Документы ). Windows автоматически добавляет в быстрый доступ папки, которые пользователь часто (или недавно) открывал. Пользователь также может вручную закрепить любую папку на панели быстрого доступа. Для этого выберите нужную папку на своем компьютере или общую папку на удаленном компьютере и выберите параметр Закрепить в быстром доступе. В этом случае рядом с именем папки появится значок канцелярской кнопки.

Если ваша Windows не отображает панель быстрого доступа, перейдите к разделу реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer и удалите параметр реестра HubMode с помощью значение 1 (Проводник скрывает панель быстрого доступа, если этот параметр установлен). Ранее мы показали, как скрыть библиотеку и специальные папки в проводнике Windows.

В моем случае я хочу закрепить определенные папки в Быстром доступе в зависимости от групп доступа (ролей), назначенных пользователям. Например, бухгалтерам нужен один список избранных папок, менеджерам по продажам — другой и так далее. В групповой политике нет встроенных инструментов для централизованного управления быстрым доступом, поэтому пришлось использовать PowerShell.

Чтобы добавить (закрепить) конкретную папку в Список быстрого доступа, укажите путь к папке в команде:

$quickaccess = new-object -com shell.application
$quickaccess.Namespace("C:\CorpApp\Report").Self.InvokeVerb("pintohome")

Список элементов на панели быстрого доступа хранится в папке

%AppData%\Microsoft\Windows\Recent\AutomaticDestinations\f01b4d95cf55d32a.automaticDestinations-ms

файл. Чтобы быстро очистить список быстрого доступа, удалите этот файл, выполнив команду:

del /f /s /q /a "%AppData%\Microsoft\Windows\Recent\AutomaticDestinations\f01b4d95cf55d32a.automaticDestinations-ms"

Локальную папку или общую сетевую папку (по UNC-пути) можно добавить в быстрый доступ:

$quickaccess.Namespace("\\munfs01\public\sales").Self.InvokeVerb("pintohome")

Любую папку профиля пользователя можно закрепить

$quickaccess.Namespace("C:\Users\$($env:USERNAME)\AppData\Roaming\MyApp").Self.InvokeVerb("pintohome")

Удалить (открепить) папку из быстрого доступа:

($QuickAccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items() | where {$_.Path -eq "C:\CorpApp\Report"}).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")

Следующий сценарий PowerShell добавляет папки на панель быстрого доступа, только если пользователь является членом определенной группы AD:

$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=active-directory,DC=loc'))
    {
      $AddItems = @(
        [pscustomobject]@{Name=Report;Path="\\active-directory.loc\DFS\Reports"}
        [pscustomobject]@{Name='Scans';Path="\\active-directory.loc\DFS\Scans"}
        [pscustomobject]@{Name='Test1';Path="$env:USERPROFILE\Downloads"}
  )
       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 проверит, содержит ли список QuickAccess пользователя закрепленные папки из

$AddItems

множество. Если такая папка отсутствует в Быстром доступе, скрипт проверит наличие указанного пути и закрепит папку.

В сценарий можно добавить несколько условий, чтобы проверить, является ли пользователь членом других групп безопасности AD. В результате сценарий PowerShell будет закреплять папки в списке быстрого доступа пользователя на основе его членства в группе AD.

Сохраните этот PowerShell в папке

\\active-directory.loc\NETLOGON

папку на контроллере домена AD (это позволяет игнорировать настройки политики выполнения PowerShell.) и запустить ее как сценарий входа пользователя с помощью групповой политики (подробнее о запуске сценариев PowerShell через объект групповой политики).

Статьи по данной тематике