Filterの記述方法が良く分からなかったので纏めておく。
サンプルを見るとこんな感じにシングルコーテーションで囲んでいる。
PS>Get-ADUser -filter 'SamAccountName -like "test*"' | select SamAccountName SamAccountName |
ダブルコーテーションとシングルコーテーションを入れ替えても大丈夫。
PS>Get-ADUser -filter "SamAccountName -like 'test*'" | select SamAccountName SamAccountName |
{}で囲んであげるサンプルも載っていた。
PS>Get-ADUser -filter {SamAccountName -like "test*"} | select SamAccountName SamAccountName |
コマンドを組み合わせると条件は変数指定になることが多くなると思うので変数でも試してみる。
PS>$st = "test*" |
シングルコーテーションはOK
PS>Get-ADUser -filter 'SamAccountName -like $st' | select SamAccountName SamAccountName |
{}で囲むのもOK
PS>Get-ADUser -filter {SamAccountName -like $st} | select SamAccountName SamAccountName |
ダブルコーテーションはエラーになる
PS>Get-ADUser -filter "SamAccountName -like $st" | select SamAccountName |
こんな感じにコーテーションの追加が必要みたい
PS>Get-ADUser -filter "SamAccountName -like '$st'" | select SamAccountName SamAccountName |
次は変数が以下のようなプロパティの場合。
PS>($st = 1 | select prop).prop = "test*" |
シングルコーテーションはエラーになる。
PS>Get-ADUser -filter 'SamAccountName -like $st.prop' | select SamAccountName |
{}で囲んでも駄目
PS>Get-ADUser -filter {SamAccountName -like $st.prop} | select SamAccountName |
当然ダブルコーテーションも駄目
PS>Get-ADUser -filter "SamAccountName -like $st.prop" | select SamAccountName |
どうすればよいんでしょうね。
まぁ、一旦変数に入れれば良いだけではあるのですがなんとなく残念な気持ち。
プロパティをFilterに使うことは多くないのかもしれませんが、配列要素なんかも同様に駄目そうなので・・・。
かろうじてダブルコーテーションで式の評価を強制させた場合はうまくいく。
PS>Get-ADUser -filter "SamAccountName -like '$($st.prop)'" | select SamAccountName SamAccountName |
ちょっと場当たり的に試しただけで理由が分かっていないのでいずれ機会があったらもう少し調べてみたい。
0 件のコメント:
コメントを投稿