架空の会社の情シスになってPowerShell #psjp

この記事は,PowerShell Advent Calendar 2013の8日目の記事です。

こんにちは、PowerShell初心者のTearTheSkyです。

無謀にも、PowerShell Advent Calendar 2013に申し込みました。
当初は、お友達にヘルプを求められてユーザ名からSID取ってくる処理が思いのほかかっこよかったので、そのへんを記事にしよう思っていたんですが、ドメインコントローラに接続できる環境ならクソ簡単なことに気づいて記事にならないとわかったのでやめました。

ということで、架空の出来事ですが、3年前の夏、御徒町のスタバでドヤ顔でDELLのノートブックをまさぐっていると、金髪短髪のノリのいい外人のおっさんが向かいの席に座って話かけてきたときの話を書きます。

「へいYou!君はギーク?」
「日本人にその手の質問すると大抵期待する結果が得られませんよ」
「ということは君 is Otaku?」
「まぁそうです」
「いきなりまじめな話になるんだけどさ、君SEでしょ?俺の会社で働いてくれない?今の給料+10%出すよ」
「は?オフィスはどこ?」
「え、御徒町駅から徒歩10分」

ということで、最近活況なエンジニアの転職市場を横目でうらやましそうに見つつ、重度の社畜的御奉仕を求められて辟易したり疲労困憊していた私は、現在の会社と同じ金をくれるという外人さんの会社に転籍することにしたのでした。ヘッドハンティングというやつですね。いいですね~。

で、初日。

「いいかい、君はこの"利益を生み出すオフィス" であるMy Profit Center 略してMPCでITインフラストラクチャのマネージャとして働いてもらう。我が社は優秀なチームメンバーのおかげでいい感じの利益を出せているが、ここで大きめなstandardizationを起こして、事業としてよりどでかく拡大できるように組織の構造を変えていきたい。わかるか?」
「ええ、なんとなくは…」
「具体的には、今の社員が高いスキルで多くのタスクをこなしているが、そのうちのいくつかを細かく砕いて、社員よりはスキルの低い、コストの安い派遣社員にやってもらうように変えたい。それから、逆にコストの高い一芸に秀た派遣社員も雇って社員のパートナーとしてガンガン稼いでもらう。君にはそういう世界がうまく回るようなITを実現してほしい。」
「なるほど、わかりました頑張ります。」
「とりあえず、君にはActive Directoryを構築してもらいたい。今我が社の社内システムは無法地帯でセントラル管理なんか出来ていない状態だ。幸いにも、プログラマでもないのに仕事でMacを使わせろというニュービーなマカーはいないから、社内のITはWindowsメインで行こうと思っている。」
(なるほど、それでリア充っぽくないけどなんか中途半端なオレに声をかけたわけか)

「じゃあADを構築します。今の組織を図示してもらえますか?」
「うーんと、簡単にいうとこんな感じ」



「我が社は食べ物、飲み物、そしてキッチンまわりに関する、ハイセンスで質の高い商品を探してきて世の中に提供する仕事をしている。ビバレッジ、フード、キッチンの3つの部署があり、その中にさらにいくつか分類がある。」
「なるほど、そういえば、会社の名前をまだ聞いてなかったんですが」
「TearTheSky.comでいこう」
「あ、はい」

ということでActive Directory環境実現のためにドメインコントローラを構築します。今回はちょっともう古くなってきましたが、Windows Server 2008 R2 で構築します。
サーバマネージャから「Active Directory ドメインサービス」の役割をインストールし、再起動した後に、再度サーバマネージャを確認するとdcpromo.exeを実行しろ画面が出てくるので、クリックして設定を行います。



色々頑張って設定すると、ドメインのアカウントで



ようこそ


さてこれで最低限のドメインコントローラは完成です。本当は2台の冗長構成にしたりするんですけど、ベンチャーだしまずは1台でいくという設定にします。

さて、次は社員のアカウントを登録しなければいけないですね。
「もう実は派遣社員の手配はできているんだ」
ということなので、こんな感じのCSVファイルを用意しました。

そしてこんなコードを用意して、

実行するだけでほら!


ちゃんとユーザが作れてるし、このユーザはちゃんと赤坂勤務になっています。


ちゃんとワイン部所属で、上司はちゃんとBoss00になっていますね。

上記のスクリプトは、「Import-Module ActiveDirectory」というコマンドを行い、ActiveDirectoryに関するPowerShellコマンドレットを使えるようにしています。
これは、ドメインコントローラに直接ログオンした状態か、もしくはドメインに参加したコンピュータである場合はすぐに利用できます。

…ふぅ。まぁ、PowerShellを使えばこんなもんですよ。
そんな感じで、Windows Server管理者への道を歩み始めた架空の三年前の私でした。

(半年後)

冬になったある日、ボスにこんなことを頼まれました。
「ヘイYou!今わが社の全社員が何人居て、そのうち管理職が何人、主任が何人、一般社員が何人、派遣社員が何人かを教えてくれないか?」
「分かりましたボス、ちょっと待って…」


「ヘイBoss、このCSVをExcelで開いて、title列でフィルタして、役職ごとに表示させれば、出てきた行数が社員数だよ」
「OK~でもこれ面倒くさいな、明日までにもうちょっとマシな方法考えてくんね?」
「oh...yes」

ということで考えた結果


「ヘイBoss、こんなかんじでコマンド打って今度から教えますわ」
「いいじゃん、今度からそれ半期ごとにメールしてちょ」

ということで事なきを得たのでした。


…これで終わりです。内容薄くてすみません。

お伝えしたかったのは、PowerShellを利用すれば、これまでよりも簡単かつ柔軟にActive Directoryの管理を行うことができるということです。
もちろん、PowerShellの初期導入に関わるコスト(主に勉強時間が必要なこと)を受け入れる必要はあります。
それから、Active Directory操作用のスクリプトは、「その組織がどのようにActive Directoryを利用しているか」に依存しますので、設計書や設計思想などをできるだけ詳細に把握する必要があります。

全くなんにも新しい内容ではないんですが、これからPowerShellをやってみたいと思っているWindowsServer管理者の方の後押しになれば幸いです。

では、良い週末を。

コメント

このブログの人気の投稿

オライリーのDocker本を読んだり色々な記事を読んだりしたので自分なりにまとめる(Dockerfileについて)

一部のユーザだけ NET::ERR_CERT_REVOKED でサイトにアクセスできない

[#CentOS][#Apache] CentOS6 でApacheが起動できない