Дипломная работа: Автоматизация типовых задач отдела технической поддержки ООО "Леруа Мерлен Восток"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
100
ПРИЛОЖЕНИЯ
Приложение 1
Сравнительные характеристики рассматриваемых решений
Лицензи
рование
Бесплатн
о
$2 за
учетную
запись
$70000 /
год
Возможность
написания
собственных
сценариев
+
+
+
Портал
самообслуживани
я пользователей
+
+
+
Наличие
подключения к
MS
Exchange
+
+
+
Наличие
подключения к
MS Active
Directory
+
+
+
Приложение
MS System
Center Service
Manager /
Orchestrator
One Identity
Active Roles
Micro Focus
Hybrid Cloud
Management
101
Приложение 2
Листинг сценария создания учетной записи и почтового ящика нового
сотрудника
param (
[Parameter(mandatory=$true)]
[string]$last_name,
[Parameter(mandatory=$true)]
[string]$requestor,
[Parameter(mandatory=$true)]
[string]$login,
[Parameter(mandatory=$true)]
[string]$email,
[Parameter(mandatory=$true)]
[string]$first_name,
[Parameter(mandatory=$true)]
[string]$project,
[Parameter(mandatory=$true)]
[string]$password,
[Parameter(mandatory=$true)]
[string]$who_created,
[Parameter(mandatory=$true)]
[string]$expiration_date,
[Parameter(mandatory=$true)]
[string]$incident_num
)
Import-Module ActiveDirectory
Import-Module "$($PSScriptRoot)\utils\logging.ps1"
Import-Module "$($PSScriptRoot)\utils\mailing.ps1"
$json_folder = "$($PSScriptRoot)\static\new_external_user"
$json_file = "$json_folder\new_external_user.json"
$static_data = Get-Content -Path $json_file | ConvertFrom-Json
$ou_tail = $static_data.ou_tail
$contractor = $static_data.contractors | Where-Object {$_.name -eq
$company}
$ou_start = $contractor.ou
$full_ou = "$ou_start,$ou_tail"
$dc = (Get-ADForest).SchemaMaster
$full_ou = "OU=Users,OU=Accounts,OU=\#Services," +
"OU=LMV,DC=leroymerlin,DC=com"
$pwd = ConvertTo-SecureString -AsPlainText $password -Force
$description = "МП (запросил): $requestor " +
"/ Проект: $project / Создал: $who_created"
$new_aduser_props = @{
Name = "$first_name $last_name";
SamAccountName = $($login.Trim());
GivenName = $first_name;
102
Surname = $last_name;
DisplayName = "$first_name $last_name";
Description = $description;
EmailAddress = $email;
UserPrincipalName = "$($login.Trim())@leroymerlin.ru";
AccountPassword = $pwd;
Company = $company;
Enabled = $true;
Path = $full_ou;
Server=$dc;
ChangePasswordAtLogon = $true;
# Path = $ous[$company];
AccountExpirationDate = $expiration_date;
}
try {
new-aduser @new_aduser_props
} catch {
$last_name = $last_name + '_1'
$new_aduser_props.Surname = $last_name
$new_aduser_props.DisplayName = "$first_name $last_name"
$new_aduser_props.Name = "$first_name $last_name"
new-aduser @new_aduser_props
}
# tech block
# log
$message = "New account for $first_name $last_name " +
"($($login.Trim()), $company) created"
$log_props = @{
'actor_full_login' = $who_created;
'message' = $message;
'script_name' = $MyInvocation.MyCommand.Name;
'incident_num' = $incident_num;
}
log @log_props
# mail
$actor_login = $who_created.Replace('RU1000\', '')
$actor_email = (Get-ADUser -Identity $actor_login -Properties
mail).mail
if ($actor_email) {
$recipients = @(
$actor_email;
)
} else {
$recipients = @(
'support@leroymerlin.ru';
)
}
$subject = "Создана учетная запись внешнего сотрудника
$($login.Trim())"
$message_body = "Создана учетная запись для $first_name $last_name " +
"($($login.Trim()), $company)"
103
$body = wrap_body $message_body
$prop_items = @{
To = $recipients;
Subject = $subject;
Body = $body
}
$props = props @prop_items
Send-MailMessage @props
Листинг сценария сброса пароля учетной записи
param (
[Parameter(mandatory=$true)]
[string]$sam_account_name,
[Parameter(mandatory=$true)]
[string]$manager_email,
[Parameter(mandatory=$true)]
[string]$incident_num,
[Parameter(mandatory=$true)]
[string]$who_made_reset
)
Import-Module "$($PSScriptRoot)\utils\logging.ps1"
Import-Module "$($PSScriptRoot)\utils\mailing.ps1"
$shops_ou = 'OU=Shops,OU=Leroy Merlin Vostok,' +
'DC=hq,DC=ru,DC=corp,DC=leroymerlin,DC=com'
$autologon_ou = 'OU=Autologon_Accounts,OU=Shops,OU=Leroy Merlin
Vostok,' +
'DC=hq,DC=ru,DC=corp,DC=leroymerlin,DC=com'
$hq_ou = 'OU=HQ (Shabolovka 31A),OU=Leroy Merlin Vostok,' +
'DC=hq,DC=ru,DC=corp,DC=leroymerlin,DC=com'
$gendir_ou = 'OU=Генеральная дирекция,OU=Departments,OU=HQ (Shabolovka
31A),' +
'OU=Leroy Merlin Vostok,DC=hq,DC=ru,DC=corp,DC=leroymerlin,DC=com'
function random-password {
$digits = 48..57
$lettersUP = 65..72 + 74..78 + 80..90
$lettersLOW = 97..107 + 109..110 + 112..122
$password = $null
$password1 = get-random -count 2 -input ($lettersUP) | %{$aa =
$null; $aa += [char]$_; $password += $aa}
$password2 = get-random -count 3 -input ($lettersLOW) | %{$aa =
$null; $aa += [char]$_; $password += $aa}
$password3 = get-random -count 3 -input ($digits) | %{$aa = $null;
$aa += [char]$_; $password += $aa}
return $password
}
function form_log_msg($account, $initiator, $text, $incident)
104
{
$init_sam = $initiator.ToLower().Replace('ru1000\', '')
$log_msg = ""
$log_msg += "$(Get-Date -Format "yyyy-MM-dd HH:mm:ss")"
$log_msg += " :: "
$log_msg += "Initiated by $((Get-ADUser $init_sam).Name)
($initiator)"
$log_msg += " :: "
$log_msg += $text
$log_msg += " (incident number $incident)"
return $log_msg
}
function legal_user($user) {
$user_dn = $user.DistinguishedName
$inside_shops = $user_dn.EndsWith($shops_ou)
$inside_autologon = $user_dn.EndsWith($autologon_ou)
$inside_hq = $user_dn.EndsWith($hq_ou)
$is_gendir = $user_dn.EndsWith($gendir_ou)
$legal_user = (
($inside_shops -and -not $inside_autologon) -or
($inside_hq -and -not $is_gendir)
)
return $legal_user
}
$dc = (Get-ADForest).SchemaMaster
$log_file = 'C:\scripts\orchestrator\logs\reset_int_user_password.txt'
$username = 'orch-notify'
$pass = ConvertTo-SecureString -AsPlainText '1qaz@WSX' -Force
$creds = New-Object
System.Management.Automation.PSCredential($username, $pass)
$smtpServer = "pruexmail1"
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Credentials = $creds
$msg.From = "900 <900@leroymerlin.ru>"
$msg.ReplyTo = "900@leroymerlin.ru"
$msg.IsBodyHtml = $True
try
{
$user = Get-AdUser -Identity $sam_account_name -ErrorAction Stop
$legal_user = legal_user -user $user
if (-not $legal_user) {
$msg.subject = "Ошибка при сбросе пароля учетной записи в AD
сотрудника Леруа Мерлен (инцидент $incident_num)"
$message_body = "Нет доступа на сброс пароля учетной записи
<b>$sam_account_name</b>!"
Источник: https://baza.diplomsite.ru/previewfile/2235