面倒、死のう

すごくなんかネカマっぽいテーマがあったしこれにしとこう

Exchange OnlineでCustomAttributeでフィルタしたい

Exchangeのユーザー(っていうかメールボックス)に「CustomAttribute##」という
なんか自由に使っていいよ的なプロパティがあるんですけども
これになんか入れておいて、Powershellでフィルタして一覧出したい、一括処理したい、そんな感じで使いたい
と考えまして、いろいろやってるんですけども、うまくいかないんですよね。
似たようなことを考えている方は世界中にいらっしゃるようで、こんな感じで回答されているわけです。 social.technet.microsoft.com

Get-MailBox -Filter "CustomAttribute1 -eq '出向者'"

これは、CustomAttribute1に「出向者」と入っているデータのみ返ってきます。
正常です。期待通りです。

スクリプト化するにあたり、比較する文言を変数化します。

$AttributeKey = '出向者'
Get-MailBox -Filter "CustomAttribute1 -eq $AttributeKey"

として小一時間悩みました。ダメな例です。
CustomAttribute1に何も入ってないメールボックスだけ返ってきます。期待の逆です。

正解は

$AttributeKey = '出向者'
Get-MailBox -Filter "CustomAttribute1 -eq '${AttributeKey}'"

と変数にしたキーをかこってやる必要があるようです。
どうもFilter構文の中では変数は展開してくれないようで、
$Nullとして比較する、みたいな動きだったみたいです。
PowerShellはこのあたりややこしい世界ですね。cmdみたいにはいかないです。