2012-03-19 7 views
0

PowerShellでは、特定のOU内のユーザーの一覧を取得するためにDirectoryEntryおよびDirectorySearcherを使用する方法を既に知っています。このメソッドの結果は主にADで探しているものですが、Win32_UserAccountというWMIクエリを使用して同じ情報を取得する方が簡単です。私はこのクラスのプロパティがより好きで、SIDはすでに正しい文字列形式です(最初のメソッドでは、16進バイト配列から文字列に変換する必要があります)。OUでWin32_UserAccountの結果をフィルタリングする方法

Win32_UserAccountを使用した場合の問題は、OUでフィルターをかける方法が見つからないということです。私は正常にドメインと名前でフィルタリングし、WQLでいくつかの推測を試みましたが、OUフィルタの構文を見つけることはできませんでした。私の試みのほとんどが「無効なクエリ」になります。その後、私はDirectoryEntryを/たDirectorySearcherを使用してに戻りますOUことで、これをフィルタリングする方法はありません場合は

$user = gwmi Win32_UserAccount -filter "name='somebody' AND domain='mydomain'" 

次の作品のクエリの例です。

答えて

1

Win32_AccountクラスのLDAP関連のプロパティがないとすれば、残念なことにあなたは不運だと思います。

LDAP関連のデータを取得するためのディレクトリ検索に加え、必要な形式でSIDを取得することももちろん可能です。

+0

これは私がやることを約午前何で、たDirectorySearcherからOUでユーザーのリストを取得し、それらはWin32_UserAccount(Win32_Accountから追加のプロパティを継承)を使用し、そこから残りの情報を取得します。 WMIのシンプルで単一の呼び出しで結果をループすることになりましたが、OUプロパティが利用できない場合は、それをフィルタリングできないと思います。 – Bratch

1

Questの無料ADコマンドレットについてよく知っていますか?

http://www.quest.com/powershell/activeroles-server.aspx

あなたはOUに基づいてユーザーをフィルタし、さまざまな形式でSIDを取得することができます:

PS> Get-QADUser SizeLimit 0 -SearchRoot <OU_DistinguishedName>' | fl *sid* 

objectSid : 0105000000000005150000006753F33372134F3FF673476FF4023001 
Sid  : S-1-5-21-54781788-1045369324-1866953526-501 
(...) 
+0

私は、これが展開されるサーバーにはアドオン拡張機能がないと思います。私の場合と同じように動作し、LDAP呼び出しについていれば、SIDを文字列形式に変換する関数が見つかりました。 | fl *はオブジェクトのプロパティを取得するのに最適です。 – Bratch

+0

これをサーバーにインストールする必要はありません。管理ワークステーションはこれを行います。 –

+0

テスト時に私のワークステーションから実行しますが、スクリプトは別のマシンから実行され、実行されるようスケジュールされています。私はリンクをそのマシンの管理者に転送します。スクリプトはうまく動作しますが、コマンドレットが実行できる他のものに興味があるかもしれません。 – Bratch

関連する問題