Добавляем папки в панель быстрого доступа 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 не отображается панель быстрого доступа, нужно перейти в ветку реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer

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

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

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

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

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

Список элементов быстрого доступа проводника Windows хранится в файле %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).

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


Предыдущая статья Следующая статья


Комментариев: 10 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)