私は、csvファイルをインポートし、ADスキーマに組み込まれた一連のカスタム属性を更新するスクリプトを作成しようとしています。私は基本的なコマンドを記述する場合、それは動作します以下のようにではなく、配列で、何らかの理由でPowershellでカスタム属性を更新する
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
:
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 as-001 -replace @{ bSBPrimaryUser = "Joe Smith";}
私は変数としてプライマリユーザーを設定すると同時に変更を加えました。私が見たいものが得られたことを確かめるためにいくつかのテストと出力を行ったのと同時に、それはうまくいった。そんなにありがとう、マニュアル編集の時間を節約! –
だから私も少しテストをした、コンピュータ名が間違っている場合は、それをスキップします。それはいいことだ。しかし、どのコンピュータ名をスキップしなかったかを記録するログを作成するにはどうすればよいですか? –
getからsetへのpipingよりむしろ。 getの出力を変数に保存します。それでは、 '$($ null -ne $ get){set} else $ {$ computernameに書込みホストのエラー}'のようなことをすることができます。 – BenH