0

組み込みのpowershellコマンドレットを使用して、アクティブディレクトリにユーザー作成を実装する作業を行っていますが、最近この問題に遭遇しました。$_.UID がファイル内のフィールドの 1 つであるユーザーのデータ ファイルを読み込もうとすると、UID を使用して Get-ADUser を実行し、ユーザーが LDAP に既に存在するかどうかを確認します。null オブジェクトを取得した場合、この ID がまだ LDAP にないため、ユーザーを作成したいと思います。それ以外の場合は、データファイルのエントリをスキップしたいと思います。私のスクリプトはそのままで、初めてユーザーを作成します。同じデータ ファイルに対して 2 回目の実行を行うと (users は UID フィールドで null になることはなくなります)、if 条件は依然として true であり、スクリプトは 2 回目のユーザーの作成を試みます。私はpowershellスクリプトを初めて使用するので、何か誤解しているに違いありません。私は何を間違っていますか?あなたの助けに感謝します!

Function createUsers{
Import-CSV "~\Desktop\inData.csv" | ForEach-Object {
    $USER  = Get-ADUser -LDAPFilter "(uid=$_.UID)"

    if($USER -eq $Null){   #BROKEN DOESN'T DO ANYTHING
                           #(!$USER) Doesn't work either 
        Write-Host "Making next user."
        .
        .
        .

    }else{
        Write-Host "Skipping, user exists!!"
    }
}
}
4

1 に答える 1

1

問題は Get-ADUser クエリにあると思います。Active Directory には「uid」というプロパティはありません。これにより、$USER は常に null になり、常に新しいユーザーを作成するようになります。

代わりに sAMAccountName を使用してみてください。

$User = Get-ADUser -LDAPFilter "(sAMAccountName=$_.UID)"

利用可能なすべてのプロパティの完全なリストを取得するには、次のように実行します。

Get-ADUser MyUserName -Properties *
于 2013-11-08T22:38:15.257 に答える