2012-03-13 11 views
0

私は単純なpowershellスクリプトを作成しようとしています。Get-AdUserのPowershell変数

Get-ADuser -Filter {GivenName -eq $GivenName $hateList} -SearchBase $Container -Properties displayName,telephoneNumber,department|ForEach-Object {"FullName`t: $($_.displayName)`r`nPhone`t`t: $($_.telephoneNumber)`r`nDepartment`t: $($_.department)`r`n"} 

私が得たもののエラー: ます。Get-ADUserを:エラーの解析クエリ: 'GIVENNAME -eq $ GIVENNAME $ hateList' エラーメッセージ:位置の '構文エラー': '26'。

したがって、変数が値で置き換えられないという問題があります。何が間違っていますか?

答えて

1

フィルタパラメータが正しくありません。

:あなたはそれが$ GIVENNAMEまたは$ hateListに等しくなるようにしたい場合は、それが何であれ、あなたのような何かを試してみてください

{GivenName -eq $GivenName} 

:あなたはGIVENNAMEは$ GIVENNAMEに等しくなるようにしたい場合は、このようにそれを行う必要があります

{(GivenName -eq $GivenName) -or (GivenName -eq $hateList)} 

チェック複数のフィルタは、このリンク:

http://technet.microsoft.com/en-us/library/ee617241.aspx

あなたはまず、このようなフィルタを用いてユーザのリストを取得することができます3210

そして、いくつかの後処理操作を行います。変数の展開が変数を渡すとき、それは引用符で囲む渡ししようと動作しない場合

$users | Where-Object { $hateList -notcontains $_.cn } 
+0

@adam_gavをあなたが満足している場合答えがあればそれを受け入れてください。すぐ隣にチェックボックスが表示されます –

+0

お返事ありがとうございます! GivenNameが変数内で同じであることを確認したいと思います.hateListには次のような文字列が含まれています: - およびcn -ne "foo" - およびcn -ne "bar" - およびcn -ne "blabla " したがって、cnが2つの文字列と等しくないかどうかを確認します。 かっこはどうやって入れますか? hateListを次のように変更しようとしました:--and(cn -ne "foo") - および(cn -ne "bar") - および(cn -ne "blabla") フィルタはどのようにして作成できますか?私は次のことを試みましたが、うまくいきませんでした。-Filter {(GivenName -eq $ GivenName)$ hateList} –

+0

GivenNameが$ hateListではないことを確認する必要がある場合は、複数の条件。私はここには何も含まれていないと思う。 –

0

を:

{GivenName -eq "$GivenName"} 
+1

それは動いているが、主な問題はhateListだ。 -Filter {(GivenName -eq "blabla") - と(cn -ne "alma") - と(cn -ne "korte") - と(cn -ne "(GivenName -eq "blabla") - および(cn -ne "alma") - この場合、 "(GivenName -eq' "$ GivenName'")$ hateList " " (cn -ne "korte") - と(cn -ne "bela") しかし、私はフィルタでtを使用することはできませんでした –

+0

あなたはたぶん、 GivenNameを入力し、結果にPS条件を使用します。{GivenName -eq $ GivenName} |ここで{$ hatelist -notcontains $ _。CN} – mjolinor