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

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

В меню проводника Windows существует отдельная панель, в которой отображается список избранных папок. Панель навигации со списком папок быстрого доступа (Quick Access) отображается в левой верхней части окна File Explorer. Этот удобный инструмент Windows для быстрого к избранным папками, который незаслуженно игнорируется многими пользователями и администраторами. В этой статье мы покажем как автоматизировать настройки панели быстрого доступа с помощью PowerShell и GPO.

По умолчанию в панели Quick Access отображаются стандартные папки профиля пользователя (Desktop, Downloads, Pictures, Documents). Windows сама добавляет в панель Quick Access папки, которые часто (или недавно) открывал пользователь. Также пользователь может жестко закрепить любую нужную папку в панели быстрого доступа. Для этого нужно выбрать нужную папку на компьютере или в сетевом каталоге на файловом сервере и выбрать пункт Pin to Quick Access. В этом случае у папки появляется пиктограмма скрепки.

Панель быстрого доступа в проводнике Windows

Если в вашей Windows не отображается панель быстрого доступа, нужно перейти в ветку реестра HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorer

и удалить параметр реестра HubMode со значением 1 (если этот параметр задан, проводник не показывает панель быстрого доступа). Ранее мы показывали, как скрыть стандартные папки в проводнике Windows.

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

Чтобы добавить одну папку в список быстрого доступа Windows, используется команда:

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

PowerShell - добавить папку в Quick Access

Список элементов быстрого доступа проводника Windows хранится в файле
%AppData%MicrosoftWindowsRecentAutomaticDestinationsf01b4d95cf55d32a.automaticDestinations-ms
. Чтобы быстро очистить панель quickaccess, нужно выполнить команду:

del /f /s /q /a "%AppData%MicrosoftWindowsRecentAutomaticDestinationsf01b4d95cf55d32a.automaticDestinations-ms"

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

$quickaccess.Namespace("fs01publicbalance").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:AppFolderReport"}).InvokeVerb("unpinfromhome")

Можно удалить из Quick Access все стандартные папки библиотек, закреплённые по-умолчанию:

$quickaccess = new-object -com shell.application
$results=$QuickAccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items()
$DeleteDefaultItems = @("Desktop","Documents","Pictures","Videos","Рабочий стол","Документы","Изображения","Видео","Загрузки")
($results| where {$_.name -in $DeleteDefaultItems}).InvokeVerb("unpinfromhome")

Удалить все папки из Quick Access:

($quickaccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items() | where { $_.IsFolder -eq "True"}).InvokeVerb("unpinfromhome")

Следующий кусок кода добавляет в Quick Access папки только тогда, когда пользователь входит в определенную группу AD:

$usergroups=(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf
if ($usergroups.Contains('CN=SaleManagers,OU=groups,OU=MSK,DC=winitpro,DC=ru'))
    {
      $AddItems = @(
        [pscustomobject]@{Name=Sales;Path="winitpro.rudfssales "}
        [pscustomobject]@{Name='Scans';Path="winitpro.rudfsScans"}
        [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")
         }
        }
    }

Если пользователь состоит в группе SaleManagers, этот cкрипт проверит, есть ли в списке QuickAccess пользователя элементы из массива
$AddItems
. Если такой папки нет в быстром доступе, скрипт проверить доступность указанного пути и добавит папку в избранное.

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

Такой PowerShell скрипт нужно сохранить на контроллер домена AD в папку
winitpro.ruNETLOGON
(это позволит игнорировать настройки политики запуска скриптов PowerShell Execution Policy) и запускать как логон скрипт при входе пользователя через групповую политику (подробнее о запуске PowerShell скриптов через GPO).

Добавить папки в панель быстрого доступа Windows через GPO

Windows 10
Добавляем папки в панель быстрого доступа Windows с помощью PowerShell