Start-PodeServer { Add-PodeEndpoint -Address '*' -Port 8081 -Protocol Http New-PodeLoggingMethod -Terminal | Enable-PodeErrorLogging $Departments = @{ 'Маркетинг' = @{ 'OU' = 'Marketing'; 'Groups' = @('"Отдел маркетинга"') }; 'Бухгалтерия' = @{ 'OU' = 'Accounting'; 'Groups' = @('"Бухгалтерия"') }; 'Лаборатория' = @{ 'OU' = 'Laboratory'; 'Groups' = @("Лаборатория") }; 'МТО' = @{ 'OU' = 'MTO'; 'Groups' = @('"mto@radiofid.ru"') }; 'Производство' = @{ 'OU' = 'Production'; 'Groups' = @('"Производство"') }; 'Отдел закупок' = @{ 'OU' = 'Purchase'; 'Groups' = @('"Отдел закупок"') }; 'Отдел продаж' = @{ 'OU' = 'Radiofid sales'; 'Groups' = @("Отдел продаж") }; 'Склад' = @{ 'OU' = 'Stock'; 'Groups' = @("Склад") }; 'Руководство' = @{ 'OU' = 'VIP'; 'Groups' = @("Руководство") } } $Domains = @{ 'Домен: 911.fm' = @{ 'Domain' = '@911.fm' }; 'Домен: electrofid.ru' = @{ 'Domain' = 'electrofid.ru' }; 'Домен: findme.fm' = @{ 'Domain' = 'findme.fm' }; 'Домен: irz.su' = @{ 'Domain' = 'irz.su' }; 'Домен: irzonline.ru' = @{ 'Domain' = 'irzonline.ru' }; 'Домен: irzteam.com' = @{ 'Domain' = 'irzteam.com' }; 'Домен: radiofid.com' = @{ 'Domain' = 'radiofid.com' }; 'Домен: radiofid.ru' = @{ 'Domain' = 'radiofid.ru' } } $fio = @{ 'А' = "a"; 'Б' = "b"; 'В' = "v"; 'Г' = "g"; 'Д' = "d"; 'Е' = "e"; 'Ж' = "j"; 'З' = "z"; 'И' = "I"; 'К' = "k"; 'Л' = "l"; 'М' = "m"; 'Н' = "n"; 'О' = "o"; 'П' = "p"; 'Р' = "r"; 'С' = "s"; 'Т' = "t"; 'Й' = "y"; 'У' = "u"; 'Ф' = "f"; 'Х' = "h"; 'Ц' = "ts"; 'Ч' = "ch"; 'Ш' = "sh"; 'Э' = "e"; 'Ю' = "yu"; 'Я' = "ya" } #$cred = Get-Credential Add-PodeRoute -Path '/user_create' -Method Get -ScriptBlock { # получаем только названия отделов $dep = $($using:Departments) # получаем только названия отделов Write-PodeFileResponse -Path 'C:/_Scripts/views/form.pode' -ContentType 'text/html' -Data @{'Departments'= $dep; 'Domains' = $dom} } Add-PodeRoute -Path '/user_created' -Method 'POST' -ScriptBlock { if (!($session)){ $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://rmail2.radiofid.local/PowerShell/ Import-PSSession $Session -DisableNameChecking } # данные, полученные с формы $form = $WebEvent.Data # Получаем ФИО пользователя # Фамилия $GivenName = ($form['LastName'])[0].ToUpper() + ($form['LastName']).Substring(1,(($form['LastName']) - 1)).ToLower() # Имя $SurName = ($form['FirstName'])[0].ToUpper() + ($form['FirstName']).Substring(1,(($form['FirstName']) - 1)).ToLower() # Отчество $AltName = ($form['SecondName'])[0].ToUpper() + ($form['SecondName']).Substring(1,(($form['SecondName']) - 1)).ToLower() # ФИО if ($AltName -eq $null){ $FullName = "$GivenName $SurName" } else { $FullName = "$GivenName $SurName $AltName" } # формируем в латинице для логина первую букву имени $First = $SurName[0] $first_name = $fio["$First"] # формируем в латинице для логина первую букву отчества $Second = $AltName[0] $Second_name = $fio["$Second"] # формируем в латинице для логина буквы фамилии $post_login = '' $family = $GivenName[0..($GivenName.Length - 1)] | % { $post_login += $fio["$_"] } # Логин $logon = $first_name + $family # Если логин существует, то формируем логин из двух первых букв имени if (Get-ADUser -Identity $logon){ $logon = $first_name + $Second_name + $family } # получаем группу и OU из массива Departments $dep_info = $Departments[$form['dep']] # путь до OU $ou = "OU=Users,OU=$($dep_info.OU),DC=domain,DC=local" # Получаем имя почтового домена $dom_info = $Domains[$form['dom']] # создаем пользователя New-ADUser -Name $full ` -GivenName $form['fullname'][1] ` -Surname $form['fullname'][0] ` -AccountPassword (ConvertTo-SecureString '123$qwe' -AsPlainText -Force) ` -ChangePasswordAtLogon $true ` -Enabled $true ` -UserPrincipalName ($logon + '@domain.local') ` -Path $ou ` -WhatIf Enable-Mailbox -Identity $logon -PrimarySmtpAddress ($logon + $dom_info.domain) -Alias $logon -DisplayName $FullName -Database 'ALL_DB' -WhatIf # добавляем в группы $dep_info.groups | Add-ADGroupMember -Members $logon # возвращаем информацию об успешном создании пользователя Write-PodeHtmlResponse -Value '<BR><BR><center><font color="Green"><h1>Пользователь создан</h1></center>' } } |