В меню проводника Windows существует отдельная панель, в которой отображается список избранных папок. Панель навигации со списком папок быстрого доступа (Quick Access) отображается в левой верхней части окна File Explorer. Этот удобный инструмент Windows для быстрого к избранным папками, который незаслуженно игнорируется многими пользователями и администраторами. В этой статье мы покажем как автоматизировать настройки панели быстрого доступа с помощью PowerShell и GPO.
По умолчанию в панели Quick Access отображаются стандартные папки профиля пользователя (Desktop, Downloads, Pictures, Documents). Windows сама добавляет в панель Quick Access папки, которые часто (или недавно) открывал пользователь. Также пользователь может жестко закрепить любую нужную папку в панели быстрого доступа. Для этого нужно выбрать нужную папку на компьютере или в сетевом каталоге на файловом сервере и выбрать пункт Pin to Quick Access. В этом случае у папки появляется пиктограмма скрепки.
и удалить параметр реестра HubMode со значением 1 (если этот параметр задан, проводник не показывает панель быстрого доступа). Ранее мы показывали, как скрыть стандартные папки в проводнике Windows.
В моем случае я хочу добавить определенные папки в меню быстрого доступа в зависимости от назначенных групп доступа (ролей) пользователей. Например, бухгалтерам нужно закрепить один список избранных папок, менеджерам по продажам – другой, и т.д. В групповых политиках Windows отсутствуют средства для централизованного управления Quick Access, поэтому пришлось использовать PowerShell.
Чтобы добавить одну папку в список быстрого доступа Windows, используется команда:
$quickaccess = new-object -com shell.application
$quickaccess.Namespace("C:\AppFolder\Report").Self.InvokeVerb("pintohome")
%AppData%\Microsoft\Windows\Recent\AutomaticDestinations\f01b4d95cf55d32a.automaticDestinations-ms
. Чтобы быстро очистить панель quickaccess, нужно выполнить команду:
del /f /s /q /a "%AppData%\Microsoft\Windows\Recent\AutomaticDestinations\f01b4d95cf55d32a.automaticDestinations-ms"
Вы можете добавить в быстрый доступ локальную папку на диске или сетевую папку (по UNC пути):
$quickaccess.Namespace("\\fs01\public\balance").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:\AppFolder\Report"}).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.ru\dfs\sales "} [pscustomobject]@{Name='Scans';Path="\\winitpro.ru\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") } } }
Если пользователь состоит в группе SaleManagers, этот cкрипт проверит, есть ли в списке QuickAccess пользователя элементы из массива
$AddItems
. Если такой папки нет в быстром доступе, скрипт проверить доступность указанного пути и добавит папку в избранное.
Вы можете добавить в этот скрипт еще несколько проверок наличия групп доступа у пользователя. В результате PowerShell скрипт будет добавлять папки в список быстрого доступа пользователя в зависимости от назначенных ему групп AD.
Такой PowerShell скрипт нужно сохранить на контроллер домена AD в папку
\\winitpro.ru\NETLOGON
(это позволит игнорировать настройки политики запуска скриптов PowerShell Execution Policy) и запускать как логон скрипт при входе пользователя через групповую политику (подробнее о запуске PowerShell скриптов через GPO).