В зависимости от того, что CSV содержит для UserName
и Manager
, лучше всего было бы иметь SamAccountName
или DistinguishedName
, поскольку эти атрибуты уникальны в пределах тот же домен. UserPrincipalName
или EmailAddress
также будет полезен для нацеливания на правильного пользователя.
Однако из вашего вопроса я понимаю, что у CSV есть пользователи Имя , которые должны соответствовать Name
свойство пользователя AD.
В этом случае я согласен с IT Delinquent , что вы можете использовать это в параметре Filter
для Get-ADUser
, и это также то, что мой В приведенном ниже примере кода используется.
Тогда возникает вопрос о том, как вы ввели дату для AccountExpirationDate
в CSV-файл ..
Этот параметр требует DateTime объект , не строка, поэтому вам придется преобразовать ее перед использованием.
Наконец, я бы предложил использовать Splatting для командлетов, таких как Set-ADUser, которые принимают много параметров.
Примерно так:
Import-CSV "\\SharedServer\shared\MYCSV.csv" | ForEach-Object {
$user = Get-ADUser -Filter "Name -eq '$($_.UserName)'" -ErrorAction SilentlyContinue
if (!$user) {
Write-Warning "User '$($_.UserName)' not found"
}
else {
# convert the date string from the CSV into a real DateTime object
# Since I cannot see the CSV, you may need to do this using [DateTime]::ParseExact()
$expireDate = Get-Date $_.AccountExpire
# create a Hashtable for the parameters
$userProps = @{
'EmployeeID' = $_.EmployeeID
'EmployeeNumber' = $_.EmployeeNumber
'Description' = $_.Description
'Department' = $_.Department
'Title' = $_.Title
'AccountExpirationDate' = $expireDate
}
# get the manager object from the name
$manager = Get-ADUser -Filter "Name -eq '$($_.Manager)'" -ErrorAction SilentlyContinue
if ($manager) {
$userProps['Manager'] = $manager.DistinguishedName
}
$user | Set-ADUser @userProps
}
}
При использовании UserPrincipalName
или EmailAddress
измените фильтр на "UserPrincipalName -eq '$($_.UserName)'"
или "EmailAddress -eq '$($_.UserName)'"
.
Возможно, вы даже захотите поэкспериментировать с разрешением неоднозначного имени ..