2016-05-09 17 views
0

私はpowershell 3でADを検索し、自分のcsvのユーザー(sAMAccountName)がADに存在し、アクティブであるかどうかを確認しようとします。しかし、私は、おそらく角かっことかっこに基づいて、次のエラーに飛び降りていますが、正しい方法を見つけることはできません。私はさまざまなフィルタを試して、それらを変数に渡そうとしましたが、 "パラメータ名と一致するパラメータが見つかりません - eq ..."となります。 $ adsearchが設定されていないため、Get-ADUserにエラーがあるように見えるため、if($ adsearch)を評価できません。解決済みget-ADUser with csv from powershell

CSVファイルが消毒さ

(等先頭のスペース)および(のにSAMAccountNameと1列のみ)のように見える:

john.doe 
jane.doe 
doej2 
foo.bar 
barf5 

任意先端が高く評価されます。ありがとう!

私は上記のバギースクリプトを残す参考のため
param ($inputfile='.\users.csv',$logfile='.\log.csv') 
$csv = Import-CSV $inputfile 

#"samAccountName,Search Result" | Add-Content $logfile 

ForEach ($user in $csv){ 
    echo $user; 
    #$adsearch = Get-ADUser -Filter 'sAMAccountName -eq "$($user)" -and Enabled -eq $true' 
    #$filter = "sAMAccountName -eq $($user) -and Enabled -eq $($true)" 
    #Write-Host "Filter is $filter" 
    $adsearch = Get-ADUser -Filter "(sAMAccountName -eq '$($user)') -and (Enabled -eq '$($true)')" 
    echo $adsearch 
    if ($adsearch){ 
     echo "Found"; 
     echo "$error" 
     #"$user, Found" | Add-Content $logfile 
     } 
    else{ 
     echo "NOT FOUND"; 
     echo "$error" 
     #"$user, Not Found" | Add-Content $logfile 
     } 
    } 

は、ここでの作業スクリプト(おかげTomerとチャーリーJoynt)である:私は、ヘッダ行を追加するとき、あなたが示したCSVファイルについては

param ($inputfile='.\users.csv',$logfile='.\log.csv') 
$csv = Import-CSV $inputfile 

"samAccountName,Search Result,Error" | Add-Content $logfile 

ForEach ($user in $csv){ 
    $username = $user.SAMAccountName; 
    $adsearch = Get-ADUser -Filter {(samAccountName -eq $username) -and (Enabled -eq $true)} 
    echo "search for active user $user" 
    if ($adsearch){ 
     echo "Found"; 
     "$user, Found" | Add-Content $logfile 
     } 
    else{ 
     echo "NOT FOUND"; 
     "$user, Not Found, $error" | Add-Content $logfile 
     } 
    } 
+0

入力データの構造の例を挙げると、これらの種類の質問に役立ちます。 –

答えて

1

SAMAccountName 、私のために働く:

$username = $user.SAMAccountName 
$adsearch = Get-AdUser -Filter {(samAccountName -eq $username) -and (Enabled -eq $true)} 

引用符の代わりに中括弧を注意してください。

+1

CSVファイルの構造を '$ user' w.r.tに注意することについて同意してください。通常、CSVファイルには複数の列があります。その場合、 '$ user'は特定の値ではなくCSVファイルから*行*を参照し、関連するプロパティを(列)名で識別する必要があります。 ** samAccountName **がCSVの列である場合は、 '$ user.samAccountName' –

+0

あなたの提案に感謝しますが、今はエラーが発生します。Get-ADUser:ファイルの場所で検索フィルタを認識できません:11 char:14 + $ adsearch = Get-ADUser -Filter {(samAccountName -eq $ user) - と(Enabled -eq $ t ... の代わりにGet-ADObjectまたは-LDAPFilterを使用する必要がありますか? –

+0

あなたの '$ user'オブジェクトの外観は?ユーザーのSAMアカウント名を持つ文字列ですか? – Tomer