PowerShell勉強会@大阪 第1回勉強会
PowerShellとActive Directory
平成26年4月12日
ちゅき
PowerShell勉強会@大阪 第1回勉強会
• 大阪在住、神戸勤務のSIer
• もともと研究開発部門の開発系技術担当
• 今はなんでも屋さんです。
• いわゆる一般優良市民
• わんくま同盟ではなぜか
IT Proと認識されている悪寒
⇒なぜか
「Directory Services」でMVP受賞
自己紹介など
SIerのR&Dって
なにするの?
良い子は
生暖かい目で
見守ってネorz
PowerShell勉強会@大阪 第1回勉強会
• Active Directoryの歴史と概要
• さて、叩きまくってみましょう
Agenda
≒AD DSの話中心です^^
(Active Directory DomainService)
PowerShell勉強会@大阪 第1回勉強会
ACTIVE DIRECTORYの歴史
まっぺん見直してみるActive Direcotry
PowerShell勉強会@大阪 第1回勉強会
NT4からWindows 2000へ
NT4って便利やん
うちの部署でもサーバ建てよ
う
NT4って便利やん
うちの部署でもサーバ建てよ
う
NT4って便利やん
うちの部署でもサーバ建てよう
部門担当者
全社IT担当
いっぱいありすぎ、つーか
めっさキショいんですけど?
部門レベルのサーバーから
エンタープライズレベルのサーバーへ
キーワードは
集中管理!
NT4って便利やん
うちの部署でもサーバ建てよ
う
NT4って便利やん
うちの部署でもサーバ建てよ
う
NT4って便利やん
うちの部署でもサーバ建てよう
PowerShell勉強会@大阪 第1回勉強会
• Windows OSでは、領域をドメインとして管理
• 信頼関係
– NT4ドメイン:非推移的
– ADドメイン:非推移的 and推移的
従来のバージョンのドメインとADのドメイン
数が多いと管理が大変
(組み合わせ爆発)
A
B C
設定:AとB、AとCは信頼関係
BとCは信頼関係ではない
非推移的信頼関係
A
B C
設定:AとB、AとCは信頼関係
BとCも信頼関係になる
推移的信頼関係
推移的に信頼
集中管理
が可能!
PowerShell勉強会@大阪 第1回勉強会
Active Directoryの管理対象
Windowsユーザー
 ユーザー情報
 権限
 プロファイル
 ポリシー
アプリケーション
 サーバー設定
 シングルサインオン
 アプリケーション個別
のディレクトリ情報
 ポリシー
Windowsクライアント
 管理プロファイル
 ネットワーク情報
 ポリシー
Windowsサーバー
 管理プロファイル
 ネットワーク情報
 サービス
 プリンタ
 ファイル共有
 ポリシー
ネットワークデバイス
 設定
 QoSポリシー
 セキュリティポリシー
Internet
Firewall サービス
 設定
 セキュリティポリシー
 VPNポリシー
他のOS
 ユーザー
 セキュリティ
 ポリシー
E-Mail サーバー
 メールボックス情報
 アドレス帳
Active
Directory  ユーザー/リソース
 セキュリティ
 委任
 ポリシー
PowerShell勉強会@大阪 第1回勉強会
• ポリシーとは(Policy←weblioへのリンク)
– ポリシーの適用≒方針に従った設定を適用
• NT4時代のポリシー
– 基本的にOSのUIなどの設定(レジストリと対応)
– 適用先(基本的にフラットな構造)
• ユーザーグループ
• 個々のコンピューター
• 既定のコンピュータ
ポリシー
全社IT担当
なんや、全社の一部の設定が
変わったら全部再コピペorz
⇒階層構造
ポリシー言うんやったらもっと設
定出来てもえぇんとちゃう?
⇒グループポリシー
PowerShell勉強会@大阪 第1回勉強会
• OU(組織単位)
– ポリシーはOU単位
– 対象に近いポリシー
が上書きされる
階層構造の実現
第 1 章 : セキュリティ ベースラインの実装」
http://technet.microsoft.com/ja-jp/windows/bb629421
Explorerのフォルダと同じイメージ
・「未構成」とすることで、上位
の設定を引き継げる
⇒ADより前は、上位組織の設定が
変わると下位組織用のポリシーも
すべて最コピペが必要だった
PowerShell勉強会@大阪 第1回勉強会
• PC1の設定は!?
【ヒント】
上位から順番に
上書きされる
例:グループポリシーの適用順
「第 1 章 : セキュリティ ベースラインの実装」
http://technet.microsoft.com/ja-jp/windows/bb629421
設定1:A1
設定2:B1
全体
設定1:未構成
設定2:未構成
設定3:C1
チーム
設定1:未構成
設定2:B3
部門
PC1回答用紙:
設定1:
設定2:
設定3:
A1(全体)
B3(部門)
C1(チーム)
適用順
PowerShell勉強会@大阪 第1回勉強会
• グループポリシーとは
– NT4の頃のようにレジストに
書きっぱなし(タトゥーイング)
が原則無くなった
⇒ポリシーを外せば、設定も外れる
– ともかく設定できる項目が多い
• パスワードなどのセキュリティ
• OSの設定
• アプリケーションの配布
• フォルダのリダイレクト
– カスタマイズ可能
グループポリシー
PowerShell勉強会@大阪 第1回勉強会
• 標準インタフェース
• プログラミングインタフェース
– C++
– WMI
– PowerShell プロバイダ
– .NET Framework
– その他いろいろ楽しめます^^
Active Directoryのインタフェース
PowerShell勉強会@大阪 第1回勉強会
• Active Directory ドメイン サービス
• Active Directory 証明書サービス
• AD Rights Management サービス
• AD ライトウェイト ディレクトリ サービス
• AD フェデレーション サービス
Active Directoryの5つのサービス
PowerShell勉強会@大阪 第1回勉強会
さて、叩きまくってみましょう
まっぺん見直してみるActive Direcotry
PowerShell勉強会@大阪 第1回勉強会
• WMIは強力ですが、なんとなくVBSチックに
• .NET FrameworkはVBチックに
⇒(個人的にはVB系最強に好き)
• Windows Server 2008 R2から結構まともに
やっぱりAD向けPowerShellプロバイダでしょうw
モジュール名:
ActiveDirectory
PowerShell勉強会@大阪 第1回勉強会
• 初めにすること
– プログラミング:Hello World
– PowerShell:Get-Command
– PS プロバイダ:cd と ls ←(dir とか初月(ry
プロバイダを読んだら初めは……
PowerShell勉強会@大阪 第1回勉強会
• では、Usersの下に移ってみましょう
■chukitestドメイン
• CD cukitest ダメじゃんorz
• CD ‘dc=chukitest,dc=local’
• CD Users ダメじゃんorz
• CD cn=Users
では、まずはUsersコンテナのユーザー一覧など
PowerShell勉強会@大阪 第1回勉強会
• ユーザーとコンピュータの改廃!
• 資産一覧リストの作成!
• チョー面倒
そんなとき、大人は……
Active Directoryでの主な作業
パンピーは
PowerShellでガンバる
http://technet.microsoft.com/ja-
jp/forefront/cc470030.aspx
PowerShell勉強会@大阪 第1回勉強会
• OUとかユーザーをさっくり作ったり消したり
– Mkdir ou=TestOU
– rm ou=TestOU
– New-ADUser TestADUser
– Del TestADUser
⇒個人的な感想
で、何に使うの?
Ls(Get-ChildItem)なんかで内容を確認するには大賛成
バッチなどで、OUごとに分けて相対パスとして移動後まとめて作成
⇒絶対パス指定のコピペミスを防ぐ
➡今後はDSCでガシガシ
PowerShell勉強会@大阪 第1回勉強会
• すべてのユーザーを取得
Get-ADUser –Filer *
⇒簡単すぎて涙が出ます^^
使用例:
$users = Get-ADUser –Filer * | Select name
$Users | Export-CSV –Path c:¥etc¥test.csv
で、ユーザーの一覧とかは?
PowerShell勉強会@大阪 第1回勉強会
• .NET Frameworkでゴリゴリ
(そんなに難しくないけれど少しイケてない)
■ユーザーの一覧取得
PS C:¥> $ADs = New-Object
System.DirectoryServices.DirectorySearcher
PS C:¥> $ADs.Filter = "(objectClass=user)"
PS C:¥> $ADsUsers = $ADs.FindAll()
プロバイダなしに頑張ってみる
PowerShell勉強会@大阪 第1回勉強会
• できた$ADsUsersがちと面倒
⇒ GetDirectoryEntry()で一個づつ展開
さらに、ユーザー名sAMAccountnameを取得
これをテキストに展開
$Users = $ ADsUsers | foreach {$_.GetDirectoryEntry()}
$UserName = $ Users | select sAMAccountname –ExpandProperty *
$DN = $ Users | select DistinguishedName –ExpandProperty *
⇒一つのプロパティごとに展開……orz
プロバイダじゃないので……
昔のVBS&WMIみたいでイヤーん><
PowerShell勉強会@大阪 第1回勉強会
• プロバイダは便利なのでどんどん使いましょう
• 今後、いろんなプロバイダが出てくるのでお勉強^^
結論
PowerShell勉強会@大阪 第1回勉強会
• Active Directoryの世界は深く楽しく^^
ご清聴ありがとうございました

PowerShell と Active Directory