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の脳内メーター

書庫

日記カテゴリ

ギャラリ

コミュニティ

相互リンク

Active Directoryの管理なら 7/R2以降を使いましょう^^

PowerShell Advent Calendar 2012」向け第二弾!!

すごーく今さらですが、来年はWindows XPにお別れを告げる時期が近づいているのと同様、Server 2003にもそろそろ移行計画がないとダメぽな時期が来ています。そこで、Windows 2008 R2から標準搭載されているActive Directory用のモジュールをおさらいしたいと思います。

さて、PowerShellでは、以前からWMI経由でアクセスできます。たとえば、ChukiTestというユーザーを以前からの手法で取得してみましょう^^

----

$objDS = New-Object System.DirectoryServices.DirectorySearcher
$objDS.Filter = "(sAMAccountName=ChukiTest)"
$objUser = $objDS.FindOne()
$objUser.Properties.Count

実行結果:43

----

この状態で$objUser.Propertiesとやっていただいたら、43このプロパティが表示され、ユーザーに設定されているプロパティーがすべて取得できていることがわかります。
一人分の情報を取得する場合、設定されている情報だけをすべて抜き出せるのはとても便利です。

今回のように一人分のユーザーしかとってこない場合はそんなに問題は起きないのですが、FindAllメソッドなどで大量のユーザーを取得する場合、非常にメモリを圧迫してしまいます。プロパティによっては証明書などの容量の大きなものもあり、これらを設定している環境ではかなりのサイズになってしまいます。また、ユーザーによって登録しているプロパティがまちまちだった場合、取得できているプロパティの数が変わってくるため、結構取得後の扱いが面倒になったります。
また、今回のテスト用環境では43個でしたが、企業で運用しているような場合は相当数設定している場合が珍しくなく、なんとなく不安定になったりしがちでした。また、セキュリティの観点からも必要ではないプロパティーが取得されてくることはあまり望ましくありませんでした。

そこで、、Active Directory用モジュールの出番です。
前述の方法では実質3行でした。Active Direcotry用のモジュールを利用すると実質1行で記述できます
----

Import-Module ActiveDirectory
$ADUser = Get-AdUser "ChukiTest"
$ADUser.PropertyCount

実行結果:10

----

>$ADUser
DistinguishedName : CN=ChukiTest,CN=Users,DC=chukitest,DC=local
Enabled           : True
GivenName         :
Name              : ChukiTest
ObjectClass       : user
ObjectGUID        : <ちゅき省略>
SamAccountName    : ChukiTest
SID               : <ちゅき省略>
Surname           : ChukiTest
UserPrincipalName : ChukiTest@chukitest.local

----

上記の通り、パイプを通して利用しそうなKey項目しか取得してきません。
ちなみに、従来と同じような書き方もできます。

----

Import-Module ActiveDirectory
$ADUser = Get-AdUser -LDAPFilter "(sAMAccountName=ChukiTest)"
$ADUser.PropertyCount

----

また、PowerShellを愛してやまない方には以下の書き方も可能です。

----

Import-Module ActiveDirectory
$ADUser = Get-ADUser -Filter "sAMAccountName -eq 'ChukiTest'"
$ADUser.PropertyCount

----

 

さて、お気づきと思いますが、Get-ADUser [-Identity] 表記法があるため、スクリプトを組むときに、いちいち文字連結をせずとも変数がとても扱いやすというメリットも存在します。([]は省略可能を表します。)

例:

----

Import-Module ActiveDirectory
$ADGroupMembers = Get-ADGroupMember "Domain Users"
$ADGroupMembers | ForEach-Object{
$ADUser = Get-ADUser $_ -Properties "Company","Department"
$ADUser | Select-Object "Name","Company","Department"

実行結果

Name                               Company                            Department                       
----                               -------                            ----------                       
Administrator                                                                                          
krbtgt                                                                                                 
ChukiTest                          わんくま同盟                             大阪

----

この、赤色の部分が以下のように書けることからも、Key項目を意識していると考えられます。(名称が[-Identity]であることからも明らかですね^^)

$ADUser = Get-ADUser $_
$ADUser = Get-ADUser $_.name
$ADUser = Get-ADUser $_.distinguishedName
$ADUser = Get-ADUser $_.SamAccountName
$ADUser = Get-ADUser $_.SID

【結論】

ということで、結構便利になってきています。
Windows XP/Server 2003に引導を渡すと同時に、VBSやBATではなく、今後はPowerShellで記述していくのが常識になっていくものと思います。

と、ここまで書いておいてなんですが、Windows 2003や2008でも使えないくはないんですね。是非インストールして使ってやってください。
#あんまり延命はどうかと思わなくはないですが^^;
「Active Directory用のモジュールについて」
http://social.technet.microsoft.com/Forums/ja-JP/powershellja/thread/c4ef87a1-d076-4f2d-be5b-2170bc787230/

投稿日時 : 2012年12月17日 2:53

Feedback

# Pester??????????????????PowerShell?????????????????????????????? « 84zume Works 2012/12/17 7:08 Pingback/TrackBack

Pester??????????????????PowerShell?????????????????????????????? « 84zume Works

# This article provides clear idea designed for the new viewers of blogging, that truly how to do blogging. 2018/01/13 17:17 This article provides clear idea designed for the

This article provides clear idea designed for the new viewers of blogging,
that truly how to do blogging.

# Awesome blog! Do you have anny hints for aspiring writers? I'm planning to start my own blog soon butt I'm a little lost on everything. Would you propose starting with a free plaqtform like Wordpress or go for a paid option? There are so many otions ouut 2018/01/25 6:14 Awesome blog! Do yyou have any hints for aspiring

Awesome blog! Do youu have any hints for asliring writers?
I'm planning to start my own blog soon but I'm
a little lost on everything. Would you propose starting with a free platform like
Wordpress or go for a pasid option? There are
soo many options out there that I'm totally overwhelmed ..
Any ideas? Appreciate it!

タイトル  
名前  
Url
コメント