[Из песочницы] Немного сокращаем действия
Каждый администратор всегда сводит свои действия к минимуму, пишет скрипты, пишет программы и чтобы меньше делать рутинных задач приходится проявлять фантазию и поработать головой. Хочу поделиться своим опытом, может кому-то и поможет. У меня в компании сейчас малое количество сотрудников, порядка 15–18. Почта создается на сервере Zimbra, а каждый сотрудник работает под своей локальной учетной записью на компьютере. И до меня тут исторически сложилось, что AD нет.
Появилась потребность в разворачивании файлового сервера, я развернул его на базе MS Windows server 2016, из себя он представляем роль файлового сервера, где создан VMDX (виртуальный жесткий диск) который и является общим пулом для всех. По доступу все просто, создаем локальные группы и даем разрешения на группы, а далее каждого сотрудника добавляем в эти самые группы. Но заводить каждого сотрудника вручную, двигать мышкой, перещелкивать вкладки и потом еще писать письмо сотруднику с паролем и доступом, это не «тру». В итоге я написал небольшой скрипт, где из одного консольного окна мы делаем эти все действия в 4 шага.
Для начала нам надо создать пользователя, создать ему пароль и добавить описание, для этого передать данные в переменные.
$login=read-host "Введите имя сотрудника" #Здесь укажем логин пользователя
$name=read-host "Введите полное имя сотрудника" #Это ФИО
$dep=read-host "Должность сотрудника" #Это поле описание
$Chars = [Char[]]"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" #Символы которые могут использоваться в пароле
$Password=($Chars | Get-Random -Count 10) -join "" #Генерируем пароль длиной в 10 символов
$date = Get-Date #Получаем дату
" $date " + "для сотрудника" + " srv-fs\" + "$login " + "создан пароль" + " $Password" >> "X:\IT\password_users.txt"
$us="$login"+"@"+"domain.net" #Собираем все в строчку и записываем в файлик
После прохождения этого блока мы получаем строчку в файле — »02/12/2018 08:18:24 для сотрудника srv-fs\testovich создан пароль a15qBci2m9», далее нужно создавать эту учетную запись.
$SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force #Конвертируем сгенерированный пароль в шифрованный
New-LocalUser "$login" -Password $SecurePassword -PasswordNeverExpires -FullName "$Name" -Description "$dep" #Создаем пользователя
Add-LocalGroupMember -Group "Share" -Member "$login" #Добавляем нашего пользователя в общую группу
В итоге после прохождения следующего блока мы получаем учетную запись с группой Share.
А теперь отправим сотруднику данные для входа.
$EmailFrom = "srv-fs@domain.net" #От этого имени оправляем письмо
$EmailTo = "it@domain.net,$us" #Здесь мы отправляем письмо адресатам где $us - это $login"+"@"+"domain.net
$Subject = "Доступ к общему диску"
$Body = "$name" + ", вам предоставлен доступ к общему сетевому диску. Для входа используйте. " + "Имя пользователя" + " srv-fs\" + "$login " + " | Пароль" + " $Password" + "|" #Тело письма
$SmtpServer = "mx.domain.net" #Сервер отправки
$smtp = New-Object net.mail.smtpclient($SmtpServer)
$smtp.Send($EmailFrom, $EmailTo, $Subject, $Body)
На почту сотрудика придет сообщение с темой «Доступ к общему диску», а в теле письма будет
«Ivanov Ivan Testovich, вам предоставлен доступ к общему сетевому диску. Для входа используйте. Имя пользователя srv-fs\testovich | Пароль a15qBci2m9|»
Не забываем, ведь сотрудник работает в каком-то подразделении, а у нас доступ к папкам по группам, теперь нам надо добавить пользователя в нужную группу.
#Выводим список доступных отделов которые соответствуют группам, строка номер 1 соответствует первой строке групп
Write-Host ″Выберите подразделение″ -ForegroundColor Red
Write-Host ″1. Бухгалтерия″ -ForegroundColor Green
Write-Host ″2. Администраторы″ -ForegroundColor Green
Write-Host ″3. Аналитики″ -ForegroundColor Green
Write-Host ″4. Разработчики″ -ForegroundColor Green
Write-Host ″5. Отдел кадров″ -ForegroundColor Green
Write-Host ″6. IT″ -ForegroundColor Green
Write-Host ″7. Руководство″ -ForegroundColor Green
Write-Host ″8. Выход или не назначать подразделение″ -ForegroundColor Red
$choice = Read-Host ″Введите номер подразделения″ #Будем ожидать номер подразделения
Switch($choice){
1{Add-LocalGroupMember -Group "Account" -Member "$login"}
2{Add-LocalGroupMember -Group "Admin" -Member "$login"}
3{Add-LocalGroupMember -Group "Analytic" -Member "$login"}
4{Add-LocalGroupMember -Group "Developer" -Member "$login"}
5{Add-LocalGroupMember -Group "HR" -Member "$login"}
6{Add-LocalGroupMember -Group "IT" -Member "$login"}
7{Add-LocalGroupMember -Group "Management" -Member "$login"}
8{Write-Host ″Выход″; exit}
default {Write-Host ″Неверное значение, попробуйте еще раз.″ -ForegroundColor Red}
}
И в конце всего этого мы имеет готового пользователя с правильными группами, описанием и паролем. Сотрудник же в свою очередь получил письмо и подключился к диску, а если и нет то, это уже совсем другая история…