Есть скрипт на добовление,удаление и изменение пользователей (да возможно он кривой, так как пережил он многое)
при обновлении данных, он обновляет всё нормально, кроме самого имени в AD (DisplayName).
Кодimport-module activedirectory
$pathToCSV="C:\script\1.csv"
$OU='ou=проверка2,ou=проверка,DC=tester,DC=local'
$domain="@tester.local"
#импортируем csv файл в переменную
$csv=import-Csv $pathToCSV -Encoding OEM -Delimiter ';'
#разбираем переменную
foreach ($user in $csv)
{
#заносим в переменные значения из csv файла
$surname="$($user.фамилия)"
$name="$($user.имя)"
$sname="$($user.отчество)"
$displayname="$($user.'выводимое имя')"
$defpass="$($user.пароль)"
$dolzhnost="$($user.должность)"
$depart="$($user.отдел)"
$description="$($user.описание)"
$room="$($user.'номер комнаты')"
$phone="$($user.'номер телефона')"
$mail="$($user.'электронная почта')"
$id=$($user.'идентификатор')
#########
#########
for ($i=1; $i -lt $name.length; $i++)
{
#заносим логин из csv файла
$userName="$($user.логин)"
try
{
#проеряем, есть ли пользователь
$user=Get-ADUser "$userName"
}
catch
{
$user=$false
}
#если пользователь существует
if ($user)
{
#получаем id из AD
$IDinAD=Get-ADUser $userName -Properties comment | select comment | ft -HideTableHeaders | out-string
#если номер id из AD совпал с номером из csv
if ($IDinAD -match $id)
{
#если запутили скрипт без аргументов
if ($args[0] -eq "" -or !$args[0] )
{
#обновляем данные пользователя
Set-ADUser -Identity "$userName" -Surname "$surname" -DisplayName "$displayname" `
-OfficePhone "$phone" -EmailAddress "$mail" -Department "$depart" -Title "$dolzhnost" `
-UserPrincipalName "$userName$domain" -GivenName "$name $sname" -Description "$description" -Office "$room" -enabled $true -SamAccountName "$userName"
#прерываем цикл
break
}
#если запустили скрипт с аргументом -del
if ($args[0] -eq "-del")
{
#удаляем пользователя
Remove-ADUser -Identity $userName -Confirm:$false
}
}
#если id не совпадают, и найдено имя пользователя, идем к следующему шагу цикла
else
{
}
}
#если пользователя не существует
else
{
#и запустили без аргументов
if ($args[0] -eq "" -or !$args[0])
{
try
{
$users=get-aduser -Filter "*" -Properties comment | select comment, name
}
catch
{
$users=$false
}
if ($users)
{
foreach ($user in $users)
{
#если у какого то пользователя есть id из csv, обновляем его
if ($user.comment -match $id)
{
$uname=$user.name.toString()
$distName=Get-ADObject -Filter 'name -eq $uname'
Set-ADUser -Identity "$uname" -Surname "$surname" -DisplayName "$displayname" `
-OfficePhone "$phone" -EmailAddress "$mail" -Department "$depart" -Title "$dolzhnost" `
-UserPrincipalName "$userName$domain" -GivenName "$name $sname" -Description "$description" -Office "$room" -enabled $true `
-SamAccountName "$userName"
Rename-ADObject $distName.DistinguishedName -NewName $displayname
}
}
}
try
{
#добавляем пользователя и прерываем цикл
New-ADUser `
-Confirm:$false `
-Path $OU `
-Name "$displayname" -Surname "$surname" -DisplayName "$displayname" `
-OfficePhone "$phone" -EmailAddress "$mail" -Department "$depart" -Title "$dolzhnost" `
-UserPrincipalName "$userName$domain" -GivenName "$name $sname" -Description "$description" -Office "$room" -OtherAttributes @{comment="$id"} `
-AccountPassword (ConvertTo-SecureString -AsPlainText "$defpass" -force) -enabled $true `
-ChangePasswordAtLogon $true -SamAccountName "$userName" -erroraction 'silentlycontinue'
}
catch
{
}
break
}
}
}
}
Rename-ADObject $distName.DistinguishedName -NewName $displayname Вроде так должно сработать не?
Подскажите пожалуйста, в каком моменте я допустил ошибку?