Я пытаюсь написать сценарий, который будет импортировать файл csv и обновить набор пользовательских атрибутов, которые были встроены в нашу схему AD.Обновление пользовательских атрибутов в Powershell
Вот основной код:
Import-Module ActiveDirectory
$USERS = Import-Csv c:\temp\test2.csv
foreach ($user in $users) {
Get-ADComputer -filter {dnsname -eq $user.ComputerName} |
Set-ADComputer -replace @{bSBPrimaryUser = $user.bSBPrimaryUser}
}
Вот мое сообщение об ошибке:
Set-ADComputer : Cannot bind parameter 'Replace' to the target. Exception setting "Replace": "Object reference not set to an instance of an object." At C:\Users\nwatson\Documents\Update Computers.ps1:7 char:24
Set-ADComputer -replace <<<< @{bSBPrimaryUser = $user.bSBPrimaryUser}}
CategoryInfo : WriteError: (:) [Set-ADComputer], ParameterBindingException
FullyQualifiedErrorId : ParameterBindingFailed,Microsoft.ActiveDirectory.Management.Commands.SetADComputer
По какой-то причине, если я пишу основную команду, как показано ниже это работает, но не в массиве.
Set-ADComputer as-001 -replace @{ bSBPrimaryUser = "Joe Smith";}
Итак, я внесла свои изменения вместе с настройкой основного пользователя как переменной. Наряду с некоторыми тестированиями и выводами моих прав, чтобы убедиться, что я получил то, что я хотел видеть, это сработало. Большое вам спасибо, экономит мне часы ручного редактирования! –
Итак, я также немного тестировал, если имя компьютера ошибочно, оно пропускает его. Это хорошая вещь. Но как я могу создать журнал для документирования имен компьютеров, которые он не пропустил? –
Вместо того, чтобы прокладывать трубы, чтобы установить. Сохраните вывод get в переменной. Затем вы можете сделать что-то вроде 'if ($ null -ne $ get) {set} else {ошибка записи-хозяина на $ computername}' – BenH