PCだい「ちゅき」

気がつけば庶事手伝い

目次

Blog 利用状況

ニュース

・H24/01/02
 Microsoft MVPを受賞しました
・H23/11/18
 MCTの憂鬱さんと相互リンクを張っていただきました^^
・H23/09/10
 プログラミング生放送でスピーカーさせていただきました^^ ・H22/12/18
 わんくま同盟でスピーカしました^^
さて、来年はどんな年になるかな。予想が当たるといいなぁ。
・H22/07/17
 わんくま同盟でスピーカしました^^
技術系のセッションは久しぶり。VB! VB!
・H22/03/13
 Tech FieldersでLTのスピーカしました^^
・H21/12/12
 わんくま同盟でスピーカしました^^
最近はずっとLT担当だったので、ちょっと新鮮でした^^
・H20/11/18
 Tech Fielders セミナー 大阪の
 Lightning Talkで優勝しました^^
・H20/8/23
 わんくま同盟で2回目のスピーカしちゃいました
 WCFと戯れてみました^^
・H20/5/17
 わんくま同盟でスピーカしちゃいました^^
 ちゃんとスピーカー持参しましたよんw
・H20/2/22
 なめ猫の参加証もらいました^^
・H20/1/22
 テンプレートを変えてみました^^
・H19/7/23
 ACEプログラムで、ナップサックをもらった上、工具セットももらえることになりました^^
・H19/1/11
 1が並ぶ縁起の良い日に投稿開始!。今後ともお付き合いよろしくお願いします
・H18/10/29
 参加させていただきました^^
ド・初心者ですがどうぞよろしくお願いします。

↓うーん、仕事しろ^^;
Chukiの脳内メーター

Chukiの脳内メーター

書庫

日記カテゴリ

ギャラリ

コミュニティ

相互リンク

2008年4月10日

せっかくだから、PowerShellで書いてみた。全ユーザ一覧の取得方法

元ネタ:そろそろ監査かな、という時のために!? 【備忘録】 WinNTプロバイダとIADsUser

ともかく、ユーザの一覧さえ取れてしまえば、あとはFormat系を使うなりExport系でXMLやCSVにしたり、と思うに召すまま^^

ということで、Active DirecotyとWinNTプロバイダ(含:ローカルユーザ)の一覧を$Users変数に放り込んでみましょう^^
意外に検索しても出てこないので備忘録2として作ってみたです^^;


【Active Directory】.NETのクラスから直接取得☆ でれラクチン^^

直接.NETのクラスをたたいてみる

PS C:\> $ADs = New-Object System.DirectoryServices.DirectorySearcher
PS C:\> $ADs.Filter = "(objectClass=user)"
PS C:\> $ADsUsers = $ADs.FindAll()

PS C:\> $ADsUsers[0] | Get-Member
   TypeName: System.DirectoryServices.SearchResult
←ありゃりゃ!?

Name              MemberType Definition
----              ---------- ----------
Equals            Method     System.Boolean Equals(Object obj)
GetDirectoryEntry Method     System.DirectoryServices.DirectoryEntry GetDirectoryEntry()
~(略)~

なるほど。
$User = $ADsUser[0].GetDirectoryEntry()
ですね^^

PS C:\> $User | Get-Member
   TypeName: System.DirectoryServices.DirectoryEntry←やった^^(C)はっぱ隊

ということで、以下のものでOK

---(完成コード:たった3行^^)--

$ADs = New-Object System.DirectoryServices.DirectorySearcher
$ADs.Filter = "(objectClass=user)"
$Users = $ADs.FindAll() | foreach {$_.GetDirectoryEntry()}


【WinNTプロバイダ(含むローカルマシンのユーザ)】えへ☆(ゴルゥぁ、めっちゃワヤでかんわぁ!)
☆まいったぁ、そのままじゃ取得できないではないかorz ちょっとトリッキーに攻めてみました

---(完成コード:たった2行^^;)---

$WMIResult = Get-WmiObject -q "SELECT Name From Win32_UserAccount Where LocalAccount=True"
$Users = $WMIResult | foreach{ [ADSI]("WinNT://./" + $_.name + ",user") }

結局2行でOK.さすがですなぁ。
オブジェクトをそのまま渡せるPowerShellの利点です^^

なんだ、簡単じゃん。
Why don't you select "PowerShell" ?
Let's enjoy our work^^

posted @ 16:55 | Feedback (2595)

そろそろ監査かな、という時のために!? 【備忘録】 WinNTプロバイダとIADsUser

某熱湯で回答した時に思い出した。
そろそろ、きゃつらがやって来る...という方のための備忘録
クライアントに入っているローカルユーザの一覧を出せなんて言われた時のために...

今年はPowerShellで!、がトレンドです^^
#まだVBScriptでCSVを作りますか?

◆IADsUserで操作できるプロパティとメソッド一覧
「IADsUser Property Methods (Windows)」
http://msdn2.microsoft.com/en-us/library/aa746343(VS.85).aspxマイクロソフト以外のサイトへ移動する

◆WinNTプロバイダでは利用できないActive Directory固有の設定
「Unsupported IADsUser Properties (Windows)」
http://msdn2.microsoft.com/en-us/library/aa746507(VS.85).aspxマイクロソフト以外のサイトへ移動する

◆WinNTプロバイダでしか利用できない設定
「WinNT Custom User Properties (Windows)」
http://msdn2.microsoft.com/en-us/library/aa746535.aspxマイクロソフト以外のサイトへ移動する

posted @ 11:25 | Feedback (5381)