Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
MaximVyhrov
0 / 0 / 0
Регистрация: 03.03.2017
Сообщений: 6
1

Подключение сетевого диска

19.07.2019, 09:00. Просмотров 404. Ответов 6
Метки нет (Все метки)

Доброго времени суток.

Поставили задачу - Средствами Powershell подключить сетевые диски, при этом скрипт должен произвести проверку причастности к группе и только после этого подключить сетевые диски согласно условия.
В VBS набросал пример скрипта (необходимым условиям он соответствует). Если кто знает как его адаптировать под Powershell подскажите пожалуйста.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Const Group1 = "cn=Group1"
Const Group2 = "cn=Group2"
Const Group3 = "cn=Group3"
On Error Resume Next 
Set wshNetwork = CreateObject("WScript.Network")
Set ADSysInfo = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
strGroups = LCase(Join(CurrentUser.MemberOf))
If InStr(strGroups, Group1) Then
wshNetwork.MapNetworkDrive "I:", "\\server1\Disk_I"
wshNetwork.MapNetworkDrive "M:", "\\server1\Disk_M"
ElseIf InStr(strGroups, Group2) Then
wshNetwork.MapNetworkDrive "O:", "\\server1\Disk_O"
wshNetwork.MapNetworkDrive "I:", "\\server1\Disk_I"
ElseIf InStr(strGroups, Group3) Then
wshNetwork.MapNetworkDrive "O:", "\\server1\Disk_O"
wshNetwork.MapNetworkDrive "T:", "\\server1\Disk_T"
End If
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2019, 09:00
Ответы с готовыми решениями:

Подключение сетевого диска
На компьютере стоит внешний жёсткий диск, на нём есть расшаренная папка, как сделать так, чтобы...

Подключение сетевого диска с паролем
Купил я себе выносную коробку для жесткого диска NSB3AS1T. Работать с этим девайсом я предпочитаю...

Подключение сетевого диска в Win 8.1
Помогите понять, почему так происходит. Установлена Win 8.1. Открыл общий доступ для Папки Docs. С...

Скрипт на подключение сетевого диска
Добрый день! Есть скрипт, который из csv файла добавляет пользователей в определенные группы. Мне...

Подключение сетевого диска для отдельных пользователей
Добрый день. помогите решить вот такую проблему... нужно подключить 5 сетевых дисков 15...

6
KDE777
1535 / 977 / 387
Регистрация: 22.01.2016
Сообщений: 2,730
19.07.2019, 11:48 2
Цитата Сообщение от MaximVyhrov Посмотреть сообщение
подключить сетевые диски, при этом скрипт должен произвести проверку причастности к группе и только после этого подключить сетевые диски согласно условия.
А решение с помощью GPO, нацеленных на нужные AD группы вы не рассматривали?

https://blogs.technet.microsoft.com/...up-membership/
1
ixoyz
155 / 94 / 34
Регистрация: 01.06.2015
Сообщений: 364
Записей в блоге: 1
Завершенные тесты: 1
19.07.2019, 21:14 3
Цитата Сообщение от KDE777 Посмотреть сообщение
А решение с помощью GPO, нацеленных на нужные AD группы вы не рассматривали?
Это более правильное решение, поддерживаю.

Но если вопрос именно в скрипте, то, в первую очередь, я бы предложил иной алгоритм:
1. группы имеют некую маску в названии;
2. в описании группы зашито Диск и сетевой путь;
3. если пользователь член группы по маске (п.1), то парсить описание и монтировать сетевую папку по указанному диску.
Такой алгоритм позволит вносить изменения только на уровне AD (без изменений в скрипте при появлении новых групп и шар).

Например: группа: название: sg-share-folder1, описание: I:\\server1\share1

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ads=New-Object -ComObject ADSystemInfo 
$type=$ads.GetType() 
$user=$type.InvokeMember('UserName','GetProperty', $Null, $ads, $Null)
$objUser=[adsi]"LDAP://$user"
$colItems=$objUser.memberOf|? {$_ -like 'CN=sg-share-*'}
$colItems|foreach {
    try {
        $objGroup=[adsi]"LDAP://$_"
        $description=$objGroup.description
        $description=$description.Trim()
        $Drive=$description.Remove($description.IndexOf(':')+1)
        $Share=$description.Remove(0,$description.IndexOf('\\'))
        $net=New-Object -ComObject WScript.Network 
        $net.MapNetworkDrive("$Drive", "$Share")
    } catch {}
}
Также отмечу, следующий момент: судя по задачи, скрипт должен запускаться под пользователями, скорее всего на пользовательских ПК, где нет админки AD. Не смотря на то, что при написании скрипта я не использовал модуль Powershell ActiveDirectory (что было не так просто), у меня он установлен, следовательно скрипт стоит дополнительно протестировать на ПК пользователей.
0
MaximVyhrov
0 / 0 / 0
Регистрация: 03.03.2017
Сообщений: 6
20.07.2019, 23:23  [ТС] 4
Цитата Сообщение от KDE777 Посмотреть сообщение
А решение с помощью GPO, нацеленных на нужные AD группы вы не рассматривали?
https://blogs.technet.microsoft.com/...up-membership/
Дело в том что я сразу полез в эту сторону, создал групповую политику в котороя добавил все сетевые шары с нацеливанием на определенные группы пользователей (при этом добавил себя в каждую шару), но по какой-то непонятной причине срабатывает только часть политики а вторая часть не хочет.
После этого полез в сторону скриптов, bat и vbs получается, но необходимо на powershell (в ГПП разрешено применение только этих скриптов).
0
KDE777
1535 / 977 / 387
Регистрация: 22.01.2016
Сообщений: 2,730
29.07.2019, 10:34 5
Цитата Сообщение от MaximVyhrov Посмотреть сообщение
но по какой-то непонятной причине срабатывает только часть политики а вторая часть не хочет
Странно слышать такое от администратора... Не срабатывает (причём, только часть) - ищите причину.

Средств для диагностики Group Policy достаточно:

http://winitpro.ru/index.php/2016/10...tax-gpsvc-log/
https://social.technet.microsoft.com...beginners.aspx
https://blogs.technet.microsoft.com/...ng-event-logs/
0
MaximVyhrov
0 / 0 / 0
Регистрация: 03.03.2017
Сообщений: 6
30.07.2019, 07:16  [ТС] 6
Цитата Сообщение от KDE777 Посмотреть сообщение
Странно слышать такое от администратора... Не срабатывает (причём, только часть) - ищите причину.
Сразу после своего же сообщения в котором я написал что политика отрабатывает но не полностью, сам над этим задумался и полез разбираться. В итоге обнаружил где была ошибка и все исправил (сейчас ГП на сопоставление дисков отрабатывает полностью и как часы).
0
epiphone
1 / 1 / 0
Регистрация: 18.11.2017
Сообщений: 28
03.08.2019, 08:32 7
PowerShell
1
2
3
if ((whoami -groups) -match "HomeUsers"){
    Echo "Подключить нужный диск. Вы скажете, это гавнокод, но этот гавнокод сработает быстрее любого WMI/CIM метода"
}
0
03.08.2019, 08:32
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2019, 08:32

Подключение сетевого диска на новом компьютере в сети
Приветствую знатоков. В администрировании сетей полнейший дилетант, так что сразу прошу прощения...

В чём разница между обычным подключением сетевого диска и подключением сетевого диска при помощи политик?
Вопрос начинающего. В чём разница между обычным подключением сетевого диска и подключением сетевого...

Подключение сетевого диска "полностью"
Здравствуйте, уважаемые форумчане! ОС Windows 8.1. Требуется подключить сетевой диск. Но есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru