2016-05-03 14 views
0

私はADユーザーの作成を自動化するためのスクリプトをPowerShellに書いています。私が使用する条件の1つは、ユーザーが既に存在するかどうかを確認してからWrite-Host "User exists"に移動し、配列の次の要素に移動することです。しかし、私がスクリプトを実行すると、それは私に奇妙な動作を与えます。私はコードを書いて、ブレークポイントを入れると何が起こるか説明します。変数は私のリストに従って値を変更していません

$MACList = Get-Content $Path\MACs.txt 
foreach ($MAC in $MACList){ 
    $MABName = Get-ADUser $MAC 
    if ($MABName -ne $null) { 
     Write-Host "MAB already exists, moving to next" 
    } else { 
     # create the new user 
    } 

私がブレークポイントでスクリプトを実行すると、私は$MACListは、ファイル内のMACが含まれていることを見ることができます。次のステップに進むと、$MACList配列を横切るときに$MACに各要素が含まれていることがわかります。 $MABName行になると、実際には$MACにMACアドレスが含まれているので、そのユーザーがいる場合は見つけて、そのユーザーに$MABNameを設定する必要があります。 Get-Userコマンドレットがオブジェクトを返さない場合、同じ値を保持しているようです。これがなぜ起こるのかについてのアイデアはありますか?

答えて

1

Get-ADUserは、存在しないユーザーにエラーを投げるので、変数は以前の値を保持します。この問題を回避するには、-Filterパラメータを使用してください。

$MABName = Get-ADUser -Filter "SamAccountName -eq '$MAC'" 
+0

非常に興味深い。それはうまくいった。ありがとう。 – Joseph

関連する問題