Появился тут на вопрос на Технете, о том как же отфильтровать пользователей и подключить сетевой диск на основе состава в глобальных (или других Active Directory групп). Решил поделиться, вдруг кому-то понадобится ?

Param — тут заданы значения по умолчанию, т.е. если вы не укажите их, то они возьмутся отсюда. Запускать скрипт нужно так:

Check-UserMemberGroup.ps1 «G_VPN_Users» «\\srv015\pub» «i:» «bakanov» «password_for_user»

тут главное не пропускать последовательность всех передаваемых параметров. Или так

Check-UserMemberGroup.ps1 - TargetMapDisk «o:» -username «bakanov»

Тут можно передавать параметры в любой последовательности.

Пароль это необязательное поле, нужное только в том случае, если при подключении  сетевого диска будут использовать имя и пароль, если же нет. То можете его никогда не использовать.

param ( $TargetGroup = "G_VPN_Users", $TargetShare ="\\srv015\pub", $TargetMapDisk = "i:", $username="bakanov", $pass)
 
#подключаю оснастку Quest.ActiveRoles.ADManagement для вменяемой работы с AD
Add-PSSnapin Quest.ActiveRoles.ADManagement
 
#Получаю список всех групп
$GetUserDetails=(Get-QADUser $username).Memberof
 
#Гоняем по циклу группы
foreach ($Group in $GetUserDetails) 
    {
        #Получаем нормальное имя группы, а не FQDN
        $ShortGroupName = (Get-QADGroup  $Group).name
 
        #Проверяем входит ли пользователь в состав нужной нам группы
        if ( $ShortGroupName -eq $TargetGroup)
            {
                (New-Object -com WScript.Network).MapNetworkDrive($TargetMapDisk, $TargetShare, $false, $username, $pass) 
                write-host "Network share connected" 
            }
    }
, ,


11 комментариев

  1. фрол @ 2010-04-01 12:26

    здравствуйте Денис. спасибо вам за ответы на форуме технета. я тоже там задавал воппросы связанные с подключением сетевого диска, но у меня задача проще была просто подключить сетевой диск. вы можете рассмотреть этот пример в своем блоге. я думаю многим было бы интересен этот вопрос.
    вот можете ответить на следющие вопросы:
    как подключить сетевой диск используя ip адрес, пароль и имя пользователя?
    и чем отличается подключение сетевого диска, в том случае если компьютер (на котором находится сетевой диск, который нужно подключить) состоит в домене или же не состоит?

  2. Иванов Дмитрий @ 2010-06-28 23:44

    А как вы предлагаете подключать принтеры в зависимости от членства в группе

  3. Баканов Денис @ 2010-07-01 11:53

    Заменить строки подключения сетевого диска на подключение сетевого принтера:
    $net = new-Object -com WScript.Network
    $net.AddWindowsPrinterConnection($PrinterPath)

    А вообще советую посмотреть в сторону Group Policy Preferences

  4. думаю для того что бы ваш рецепт заработал надо все же поставить снапин.

    Add-PSSnapin Quest.ActiveRoles.ADManagement

    без него скрипт обречен на ошибку.

  5. Баканов Денис @ 2011-03-19 12:29

    Может я чего-то не понимаю, но 3-я строка ?!

  6. в третьей строке у вас подключение оснастки от Quest-а, а это внешний продукт и для обеспечения результата он должен быть установлен на целевом ПК

  7. Баканов Денис @ 2011-03-23 00:41

    Без QUEST`a с AD вообще работать довольно сложно. При этом они бесплатны.

  8. Ну не совсем так.
    Без него неудобно и не так легко.
    Весь нужный функционал есть в голом PS-е.

  9. Баканов Денис @ 2011-03-27 16:14

    Согласен, есть. Но так можно скзать, что и на ассемблере можно реализовать.

    Зачем искать сложные пути, когда есть более легкие…

  10. Кирил @ 2012-01-05 19:30

    подскажите пж, что у меня не так, пытаюсь добавить пользователя с помощью скрипта, и на определенном моменте мне выдается ошибка:

    Оснастка Quest.ActiveRoles.ADManagement Windows PowerShell не установлена на данном компьютере.

    посмотрел в компоненты виндовс, — Модуль Active Directory для Windows — у меня стоит, взял вообще все галки там поставил, ошибка та же….

  11. Кирил @ 2012-01-06 17:52

    заинсталил, все гуд

Добавить новый комментарий