- PR -

WindowsPowerShellでのビット演算について

1
投稿者投稿内容
OpS
ベテラン
会議室デビュー日: 2003/12/09
投稿数: 50
投稿日時: 2007-08-03 17:19
OpSと申します。宜しくお願いします。

WindowsPowerShellを使って、ADユーザーの期限切れユーザーのアカウントが
無効になっているかを調べています。

例えば、
Get-QADUser -name 'user' | Select-Object name,DN,accountExpires,userAccountControl | Where-Object {$_.accountExpires -lt (Get-Date)} | Where-Object {$_.userAccountControl -and 0x002}
とした場合、

指定ユーザーのアカウントが無効なら、そのユーザーを表示することを期待していました。この場合、アカウントが有効でも、そのユーザーを表示してしまいます。

どうやら、$_.userAccountControl -and 0x002 のビット演算が機能していないように
見られます。

例えば
PS > $A=4
PS > if( $A -and 0x002) {$A}
4
となります。

どのようにしたら、ビット演算ができるかを知りたく投稿しました。

ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2007-08-04 16:10
こんにちは。

-and 演算子ではなく -band 演算子を使うとうまくいくと思います。
コード:
Where-Object {$_.userAccountControl -band 0x002}


_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
OpS
ベテラン
会議室デビュー日: 2003/12/09
投稿数: 50
投稿日時: 2007-08-04 17:16
こんにちは。ueさん、返答ありがとうございます。

PS> $A=4
PS> if($A -band 0x002) {$A}

として確認できました。

-bor, -bnot も確認できました。

1

スキルアップ/キャリアアップ(JOB@IT)