Я новичок в PS и AD, я пишу скрипт, который проходит через csv и обновляет нашу AD. У меня есть несколько проблем: когда поле заполнено, команда PS AD работает нормально, если переменная равна нулю или пуста, команда PS завершается ошибкой. Мне трудно поверить, что AD не может обрабатывать нулевые значения, поэтому я не знаю, делаю ли я что-то неправильно.
Я пытался выполнить отдельные команды для каждой, чтобы определить, является ли это нулем, вызывающим проблему, и я могу видеть, что это происходит.
$datetime= get-date -UFormat "%Y-%m-%d_%H-%M-%S"
Import-Csv D:\adupdate.csv | ForEach-Object {
$hdate = $_."hiredate" -as [datetime]
Set-ADUser $_.UserID -DisplayName $_.DisplayName -Initials $_.Middle -Manager $_.Manager -Surname $_.LastName -givenname $_.FirstName -Office $_.Office -Department $_.Department -officeNumber $_.TeleNumber -MobilePhone $_.Mobile -Title $_.JobTitle -Company $_.Company -replace @{employeeType=$_.EmployeeType;employeeID=$_.Badge;employeeNumber=$_.EmployeeNumber;extensionAttribute3=$_.Subdepartment;ipPhone=$_.ipPhone}
Set-ADUser $_.UserID -replace @{hireDate=$hdate}
}
Ошибка:
+ CategoryInfo : InvalidOperation: (XXX:ADUser) [Set-ADUser], ADInvalidOperationException
+ FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.SetADUser
Итак, я изменил это, но кажется неэффективным проверять каждую переменную из csv, чтобы проверить, является ли она нулевой или пустой:
if(-not ([string]::IsNullOrEmpty($_.employeetype))){Set-ADUser $_.userid -Replace @{'employeeType'=$_.employeetype}}
else {Set-ADUser $_.userid - -Replace @{'employeeType'=' '}}
if(-not ([string]::IsNullOrEmpty($_.badgenumber))) {Set-ADUser $_.userid -Replace @{'employeeID'=$_.badgenumber}}
else {Set-ADUser $_.userid -Replace @{'employeeID'= ' '}}
if(-not ([string]::IsNullOrEmpty($_.eecode))) {Set-ADUser $_.userid -Replace @{'employeeNumber'=$_.eecode}}
else {Set-ADUser $_.userid -Replace @{'employeeNumber'= ' '}}
if(-not ([string]::IsNullOrEmpty($_.subdepartment))) {Set-ADUser $_.userid -Replace @{'extensionAttribute3'=$_.subdepartment}}
else{Set-ADUser $_.userid -Replace @{'extensionAttribute3'=' '}}
if(-not ([string]::IsNullOrEmpty($_.ipphone))) {Set-ADUser $_.userid -Replace @{'ipPhone'=$_.ipphone}}
else{Set-ADUser $_.userid -Replace @{'ipPhone'=' '}}