ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

Archive for the ‘ActiveDirectory’ Category

神戸SQL Server Users GroupのSQL Serverセミナー(初級1)を実施した

leave a comment »

校務の情報化にはデータベースの知識と技術が必要なことから、SQL Serverを勉強するコミュニティを作った。とりわけ今年度から指導要録のデータベース化が一歩前進することから、各学校の担当者はデータベース化に取り組まざるを得ないはずだ。

神戸SQL Server Users Group
http://kobesqlserverusersgroup.wordpress.com/

昨日、2013年11月9日(土)には神戸SQL Server Users Groupと特定非営利活動法人 情報技術相互支援協会の共催で、SQL Serverセミナー(初級1)を開催した。

このSQL Serverセミナーでは、SQL Serverの初心者がSQL Serverの基礎を学び、データベースを使ったシステムを作り運用することができるようにすることを目標としている。1回のトレーニングを90分とし、初級講座を1、2と分けて企画した。初級1ではSQL Management Studioの使い方、テーブル作成、データベースダイアグラム、ビューとリレーションシップ、データの型、簡単なSQL文、を内容とした。初級2ではストアドプロシージャ、トリガ、ユーザー定義関数、データベースダイアグラム、SQLの応用、を計画している。

初級セミナーは1と2でおおよそ基本を網羅するように考えたが、やはり90分では深まりに欠ける。あらかじめ用意した初級1のプリントをひととおり網羅したが、やりたいと思っていた直積やPIVOTまで説明できなかったし、SQL文もごく基本的なものに留まった。次回は初級1.5的なセミナーとし、フォローアップを考えている。

今後もSQL Serverセミナーは神戸三宮で定期的に開催する予定だ。日程は決まり次第、神戸SQL Server Users Groupのblog http://kobesqlserverusersgroup.wordpress.com/ に公開するので、興味がある人はチェックしてほしい。

2009年11月に発売された富士通製ノートパソコンFMV-T8190にWindows 8をインストールし、既存のWindows Server 2008ドメインに参加した。Active Directoryへの登録は問題ないが、プリンタのインストールなどには手作業が必要であり、有効にならないポリシーもある。

with one comment

既存のWindows Server 2008ドメインに参加したWindows 8ノートパソコンだが、実際のところはどうだろう。まず既存の設定がうまく適用されているところを見てみよう。

Windowsサーバーに共有フォルダがあり、ファイルサーバーとなっている。この共有フォルダにアクセスしやすくするために、ユーザーのポリシーでログオンスクリプトを書いているが、これは問題なく適用されていた。ログオンスクリプトは「グループポリシー」-「ユーザーの構成」-「ポリシー」-「Windowsの設定」-「スクリプト(ログオン/ログオフ)」-「ログオン」で設定する。スクリプトは以下のようなものである。

———————————

@echo off
net use z: \\seito\実習

———————————

ログオンしたときにこのスクリプトが呼ばれ、「seito」という名前のファイルサーバーの「実習」共有フォルダがローカルドライブのz:としてマッピングされるようになっている。これは何の問題もなく実行され、適用された。

ではインターネット接続はどうか。本校のシステムは校内にInternet Security and Acceleration Server (ISA Server)を立てており、Webプロキシとし、ユーザーごとにアクセス制限をかけている。このISA Serverは学校のような環境には必須のものだ。ホワイトリストやブラックリストの制限を自由に設定でき、かつ、その設定がコンピュータごとやネットワークごとだけでなく、ログインしたユーザーごとに行うことができる。一般的なWebプロキシサーバーでは、たとえばIPアドレスに基づくコンピュータごとの設定はできても、ユーザーごとの設定はできない。ユーザーごとの設定ができることのメリットは、たとえば生徒の実習教室で、生徒がログインすれば一定の制約がかけられたWeb閲覧となり、同じコンピュータでも教員がログインすれば制約のないWeb閲覧ができる、といった環境を作ることができる。

このようなことが可能になるのは、ISA ServerがActive Directoryのユーザー認証と連携できるからだ。

ところで本校のシステムでは、Internet Explorerの設定もグループポリシーで行っている。これは「グループポリシー」-「ユーザーの構成」-「ポリシー」-「Windowsの設定」-「Internet Explorerのメンテナンス」-「接続」-「プロキシの設定」で行う。ここに記述しておけば、どのユーザーもPCにログオンしたときに自動的にプロキシの設定をしてくれる。しかしWindows 8のクライアントにログオンしても、プロキシの設定が自動的にできない。これはWindows 8に実装されているInternet Explorerが新しいからだろう。

win8_005_mid_640

Internet Explorerのオプションを開くと、確かにプロキシの設定ができていないことがわかる。

win8_007_mid_640

win8_009_mid_640

そこでプロキシの設定を手作業ですることになる。このあたりはWindows 8の新しいInternet Explorerに対応したグループポリシーテンプレートが提供されると解決されるだろう。

win8_012_2_mid_640

次にプリンタの設定はどうか。たとえば「ワードパッド」を開き、何かテキストを書き、ドメインに登録されたプリンタを設定して印刷してみよう。文字が書けたら「ファイル」メニューから「印刷」を選び、印刷メニューを表示する。するとデフォルトでは「Microsoft XPS Document Writer」だけがあるので「プリンターの検索」ボタンを押して設定する。

win8_017_mid_640

win8_018_mid_640

するとドメイン管理下のネットワークプリンタが表示されるので、使いたいプリンタを選択して「OK」ボタンをクリックする。Windopws 7までならここで自動的にサーバーからプリンタドライバが配布されて設定が完了するが、Windows 8では「ドライバーがみつかりません」というエラーになる。これも当然であり、サーバーにWindows 8対応のドライバファイルが置いてないからだ。これもきちんとドライバーをサーバーにおいてやれば自動的に適用されるはずだ。

win8_021_2_mid_640

win8_022_mid_640

ここではサーバーの設定はしていないので、プリンタメーカーのWebサイトからWindows 8用のドライバをダウンロードして手動で適用する。

windows_8_printer_002_mid_640

いちどプリンタドライバを適用しておけば、再度おなじようにActive Directoryドメイン上のプリンタをインストールすると、次は問題なく接続できるようになる。

windows_8_printer_010_2_mid_640

このように、何の手当もせず既存のWindows ServerドメインにWindows 8を登録すると、いくつか手作業で設定しなければならない部分も出てくるが、基本的にActive Directoryでコンピュータやユーザーを管理できるようになる。Internet Explorerの設定やプリンタドライバの適用など、自動化できそうな部分については今後また検証を続けてみる。

<関連する過去の記事>

「2009年11月に発売された富士通製ノートパソコンFMV-T8190にWindows 8をインストールし、既存のWindows Server 2008ドメインに参加して利用する。Active Directoryへの登録はWindows XPからの従来どおりの手順と同じだ。」
https://matsumotoyoshio.wordpress.com/2012/11/28/2009%e5%b9%b411%e6%9c%88%e3%81%ab%e7%99%ba%e5%a3%b2%e3%81%95%e3%82%8c%e3%81%9f%e5%af%8c%e5%a3%ab%e9%80%9a%e8%a3%bd%e3%83%8e%e3%83%bc%e3%83%88%e3%83%91%e3%82%bd%e3%82%b3%e3%83%b3fmv-t8190%e3%81%abwin-3/

「2009年11月に発売された富士通製ノートパソコンFMV-T8190にWindows 8をインストールした。問題はタッチパネルのドライバだが、Windows 7用のものを適用して問題なく使える。」
https://matsumotoyoshio.wordpress.com/2012/11/25/2009%e5%b9%b411%e6%9c%88%e3%81%ab%e7%99%ba%e5%a3%b2%e3%81%95%e3%82%8c%e3%81%9f%e5%af%8c%e5%a3%ab%e9%80%9a%e8%a3%bd%e3%83%8e%e3%83%bc%e3%83%88%e3%83%91%e3%82%bd%e3%82%b3%e3%83%b3fmv-t8190%e3%81%abwindo/

「2009年11月に発売された富士通製ノートパソコンFMV-T8190にWindows 8をインストールすると、起動時間がWindows 7より半分ですむ。しかもスリープ状態からの復旧はなんと8秒。これなら授業でPCを時間の滞りなく使えるだろう。」
https://matsumotoyoshio.wordpress.com/2012/11/27/2009%e5%b9%b411%e6%9c%88%e3%81%ab%e7%99%ba%e5%a3%b2%e3%81%95%e3%82%8c%e3%81%9f%e5%af%8c%e5%a3%ab%e9%80%9a%e8%a3%bd%e3%83%8e%e3%83%bc%e3%83%88%e3%83%91%e3%82%bd%e3%82%b3%e3%83%b3fmv-t8190%e3%81%abwin-2/

2009年11月に発売された富士通製ノートパソコンFMV-T8190にWindows 8をインストールし、既存のWindows Server 2008ドメインに参加して利用する。Active Directoryへの登録はWindows XPからの従来どおりの手順と同じだ。

leave a comment »

IMG_0112_mid_640_480

2009年11月に発売された富士通製ノートパソコンFMV-T8190にWindows 8をインストールして検証をしているが、既存のWindows Server 2008ドメインに参加して利用できるかどうかを試してみた。Active Directoryへの登録は問題ないが、プリンタのインストールなどには手作業が必要であり、有効にならないポリシーもあることがわかった。

まず既存のネットワークに接続するには、IPアドレスやDNSの設定をしなければならない。これは「コントロールパネル」から行う。Windows 8で「コントロールパネル」を開くには、画面の左下にマウスポインタを動かし、右クリックでメニューから行う。

Windows_8_001_network_mid_640

「コントロールパネル」を開くとWindows 7でも見慣れたメニューが表示される。ネットワークの設定をするには、ここから「ネットワークとインターネット」をクリックする。

Windows_8_003_network_mid_640

次に「ネットワークと共有センター」をクリックして開く。

Windows_8_005_network_mid_640

「ネットワークと共有センター」が開いたら、左のペインから「アダプターの設定の変更」をクリックしよう。

Windows_8_006_network_mid_640

「アダプターの設定の変更」をクリックすると、下のようにPCで利用可能なネットワークアダプタがアイコンで表示される。ここでは有線の一般的なイーサネットLANケーブルで接続することとし、「イーサネット」を設定することになる。ネットワークケーブルをジャックに差し込んで繋いでも、設定ができていなければ下のように「識別されていないネットワーク」となるはずだ。

ここでこの「イーサネット」のアイコンを右クリックし「プロパティ」を表示する。

Windows_8_009_network_mid_640

Windows_8_009_network_2_mid_640

「イーサネットのプロパティ」まで開けば、これまでWindows XPやWindows Vista、Windows 7でネットワーク設定をしたことがあるなら、おなじみの画面だとわかるはずだ。IPアドレスやDNSなど必要な設定値をネットワーク管理者から聞いて設定しよう。

Windows_8_012_network_2_mid_640

ネットワークの設定ができれば、Windows 8はドメインコントローラーに接続できるはずだ。次はActive DirectoryドメインにWindows 8を参加させる。

Windows 8をActive Directoryドメインに参加させるには「コントロールパネル」を使う。「コントロールパネル」を開くには、上と同様に画面の左下で右クリックメニューを使おう。

Active Directoryドメインに参加するには「コントロールパネル」で「システムとセキュリティ」をクリックする。

Windows_8_018_network_mid_640

「システムとセキュリティ」のメニューは多くの項目がある。さらに「システム」のサブメニューをクリックする。

Windows_8_020_network_mid_640

「システム」の項目をみると、「コンピュータ名」と「フルコンピュータ名」にWindows 8をインストールしたときにつけた名前が入っているはずだ。また「ワークグループ」はデフォルトの「WORKGROUP」となっている。このあたりはWindows XPからの設定が踏襲されている。ここまでくれば、これも過去にActive DirectoryドメインにPCを参加させた経験があるならほぼわかるだろう。

ではこのPCをActive Directoryドメインに参加させるため「設定の変更」をクリックしよう。

Windows_8_021_network_mid_640

「設定の変更」をクリックすると、下のように「システムのプロパティ」が表示される。「コンピュータ名を変更したりドメインに参加したりするには[変更]をクリックしてください。」とあるボタン「変更」をクリックしよう。

Windows_8_023_network_2_mid_640

「コンピューター名/ドメイン名の変更」メニューになるので、コンピュータ名を新たに設定し、「所属するグループ」を「ドメイン」にして正しいドメイン名を入力する。

Windows_8_025_network_2_mid_640

Active Directoryドメインに登録するための権限のあるユーザーとパスワードを求められる。正しい権限を持つユーザーパスワードを入力する。

Windows_8_029_network_2_mid_640

あとはコンピュータの表示にしたがい、再起動して設定を完了する。

Windows_8_033_network_2_mid_640

再起動すると、ログイン画面でデフォルトのユーザーが表示されているが、ドメインのユーザーでログインするには人型アイコンの左にある矢印アイコンを使う。これで「ユーザーの切り替え」ができる。

IMG_0128_mid_640_480

「ユーザーの切り替え」を行うと、デフォルトのユーザー名の横に「他のユーザー」アイコンが表示されるので、こちらをクリックする。

IMG_0131_mid_640_480

すると「ユーザー名」と「パスワード」を求める、おなじみのログイン画面が表示される。「サインイン先」が正しいドメイン名になっていることを確認し、ログインしよう。

IMG_0132_mid_640_480

では、Windows Server 2008の画面でも確認しよう。「Active Directoryユーザーとコンピューター」で確認すると、確かに新しいWindows 8のPCが登録されていることがわかる。

windows8_001_mid_640

このように、Windows XPからの従来と同じ手順でActive Directoryドメインに参加できることがわかった。しかしグループポリシーやログオンスクリプト、プリンタの設定などは実際のところどうなのか。次のレポートで詳しく説明する予定だ。

<関連する過去の記事>

「2009年11月に発売された富士通製ノートパソコンFMV-T8190にWindows 8をインストールすると、起動時間がWindows 7より半分ですむ。しかもスリープ状態からの復旧はなんと8秒。これなら授業でPCを時間の滞りなく使えるだろう。」
https://matsumotoyoshio.wordpress.com/2012/11/27/2009%e5%b9%b411%e6%9c%88%e3%81%ab%e7%99%ba%e5%a3%b2%e3%81%95%e3%82%8c%e3%81%9f%e5%af%8c%e5%a3%ab%e9%80%9a%e8%a3%bd%e3%83%8e%e3%83%bc%e3%83%88%e3%83%91%e3%82%bd%e3%82%b3%e3%83%b3fmv-t8190%e3%81%abwin-2/

「2009年11月に発売された富士通製ノートパソコンFMV-T8190にWindows 8をインストールした。問題はタッチパネルのドライバだが、Windows 7用のものを適用して問題なく使える。」
https://matsumotoyoshio.wordpress.com/2012/11/25/2009%e5%b9%b411%e6%9c%88%e3%81%ab%e7%99%ba%e5%a3%b2%e3%81%95%e3%82%8c%e3%81%9f%e5%af%8c%e5%a3%ab%e9%80%9a%e8%a3%bd%e3%83%8e%e3%83%bc%e3%83%88%e3%83%91%e3%82%bd%e3%82%b3%e3%83%b3fmv-t8190%e3%81%abwindo/

書評:Windows コマンドプロンプト ポケットリファレンス Windows7/Vista/XP/2000/2008 Server対応

leave a comment »

IMG_2549_mid_640_480

「究極無比!Windows7のコマンドプロンプトを完全解説!ユーザーからエンジニアまで仕事がすいすい捗る最強リファレンス」と表紙にコメントが書かれているとおり、まさに他に類比なき本である。このようなコンピュータ関係の解説本では、主要なアプリケーション、主要な技術に関して類似の本が何冊も出版されることが一般的だが、この本に関しては最初にして究極の本が出た、という印象である。

Windowsに限らず他のOSでも、今日的な一般用途向けコンピュータはGUIによる操作が行われる。GUIとは「グラフィカル・ユーザー・インターフェース」で画面に表示されるアイコンやメニューをマウスなどのポインティングデバイスで選択しながら操作する方法である。この方法のメリットは、アイコンの絵柄から機能を類推することができ、また文字によって詳細な説明を見ながら操作できるので、覚えることが少なくてすむということである。だから一般ユーザーに支持され普及した。

しかしGUIですべての操作が満足にできるかというとそうではない。およそ世の中のあらゆることがそうだが、いくつかの選択肢があったとき、ある方法が他の方法に比べてすべて勝っている、ということはない。ものごとには利点と欠点が必ずある。GUIの欠点としては、見えているものだけが操作対象になるので、いくつか複数の設定項目が影響する操作では全体が把握しにくいこと、操作が感覚的に陥りやすいのでうっかりクリックミスなどで間違ったときに気が付きにくいこと、そしてコンピュータの設定について必ずしも全ての項目についてGUIが提供されているわけではないことだ。

面白いことに若い人を中心にして、意外にもコマンドによるコンピュータの操作が受け入れられているようだ。コマンドプロンプトでバッチ処理をしている、レジストリの設定を自分でカスタマイズしているなど、「パワーユーザー」と称されるようなユーザーが増えているように感じる。GUIによる操作にあきたらず、コンピュータの性能をフル活用したいという気持ちの表れだろう。そしてもちろん、コマンドプロンプトの恩恵を最大限に活用できるのはシステム管理者である。

IMG_2550_mid_640_480

Windowsコンピュータシステムにおいて最も効果的に管理する方法はActive Directoryによる管理だ。複数のコンピュータを複数のユーザーが入れ替わり立ち代わり使う環境では、Active Directoryによる管理が必須である。このような環境でまだActive Directoryによる管理をしていないところがあるなら、それはずいぶん損をしている。時間と手間と、そして何よりもセキュリティ上のリスクを背負っていると断言する。ドキュメントなど生成したコンテンツの共有、管理も効果的にできないはずだ。情報の正しい共有、管理ができず、あちこちの部課で似たような文書を作り、さらにそれら相互に矛盾をきたしカオス状態となっているはずだ。

Active Directory管理の基本はそれほど難しくない。基本はユーザー管理、ポリシー管理、セキュリティ管理、リソース管理である。リソース管理の主要なものはファイルサーバーのフォルダ管理とプリンタ共有の管理だろう。これらはある一定までGUIでできる。だがGUIだけでは完璧ではない。それにはレジストリに関する知識と、もうひとつはコマンドに関する知識である。

Active Directoryにはコンピュータの設定を変える機能がグループポリシーとして用意されている。しかし標準的に搭載されたグループポリシーによってコンピュータの全ての設定を変えることはできない。コンピュータの設定を自由に変えたいならばグループポリシーの知識を持ち、自分でグループポリシーテンプレートを作る必要がある。グループポリシーテンプレートを自分で作ることができるようになれば完璧だ。

より詳細な機能設定を行い管理するにはログインスクリプトを使う。ログインスクリプトはActive Directoryで管理でき、特定のユーザー、特定のグループに対してログイン時に特定のスクリプトを実行させることができる。このログインスクリプトはコマンドによる記述を行う。ここでこの「Windows コマンドプロンプトポケットリファレンス」の威力が発揮される。この本を読むと、コンピュータの機能をカスタマイズするとき、どのようなコマンドを使えばいいかがわかる。

コマンドの実行によってレジストリの値を変えることもできる。グループポリシーテンプレートを使うよりもログインスクリプトで実行した方が良い場合もある。この本にはレジストリの値を取得したり変更したりするコマンドについても、もちろん、説明されている。しかも対象OSはWindows 2000からWindows7までと広範囲にわたっている。この本が「究極無比」とうたわれる所以である。

この本の特徴として、序章に「コマンドの基礎知識」、第一章に「Cmd.exeの内部コマンド編」が書かれていることがある。「コマンドの基礎知識」では、コマンドを活用するために前提となる知識が説明されている。コマンドの文法、ファイルシステム、フォルダツリー、パス、ユーザーアカウント制限などについてである。「Cmd.exeの内部構造」ではDIRやCD、MD、COPY、DELなどの内部コマンドの説明がある。これらの知識は長年従事してきたシステム管理者や経験豊富なパワーユーザーにはおおむね理解されていることかもしれないが、これからコマンドの使い方を学ぼうと思う者には必須の知識である。またある程度知っているという者にも改めて知識を確認するという意味で読んでおいた方がいい。この2章で76ページが割かれているが、ここを読むだけでもこの本の値打ちはある。

第6章の「ネットワークコマンド編」もシステム管理者には随喜の章である。とかくネットワーク障害は対策が難しい。いったいどこがどうなってネットワークに不具合がおきているか、なかなかGUIだけではわかりにくい。こんなときコマンドを使ってコンピュータやネットワークの状態を調べることができる。ネットワーク管理者にも必携の書だ。「ネットワークコマンド編」には32のコマンドが解説され、65ページも費やされている。ネットワーク関係のコマンドは豊富なオプションを持つものが多く、そのオプションの解説も詳細でわかりやすい。ネットワーク管理者は中途半端なネットワーク管理の解説本を買うよりも、この本を買った方がいい。

特にこの序章「コマンドの基礎知識」は高等学校の教科「情報」の教員にもお勧めしたい。高等学校の教科「情報」ではGUIとCUIの特徴などを教えなければいけないが、CUIつまりキャラクタベース・ユーザー・インターフェースはコマンドプロンプトのことであり、CUIを授業で扱うときに必ず役に立つ。また実習プランの作成には、この本のリファレンス項目の中から生徒が興味を持ち、効果的な理解につながる課題を選ぶことができるだろう。

IMG_2551_mid_640_480

一般ユーザーでも自分のコンピュータを縦横無尽に使いこなしたいと思っているパワーユーザーや、コンピュータのトラブルに悩まされており解決したいと思っているユーザー、そして何よりもシステム管理者にとって「Windows コマンドプロンプトポケットリファレンス」は座右の書となるはずだ。またWindows8の開発も進んでいるようなので、筆者にはぜひWindows8も対象に含めた改訂版をタイムリーに出してもらいたい。

Windows Server 2008 で Windows XP のUSBリムーバブルストレージの使用を禁止するグループポリシーを実現するためにグループポリシー管理用テンプレートを作り適用する

leave a comment »

Active Directoryとグループポリシーはクライアントコンピュータを効果的に管理する強力なツールである。業務コンピュータをWindows ServerとWindowsクライアントで構成する理由の半分はActive Directoryとグループポリシーにあると言っても過言ではないはずだ。

Windows ServerのActive DirectoryとグループポリシーはWindows 2000 ServerからWindows Server 2003、Windows Server 2008と進化してきた。当然ながらWindows XP、Windows Vista、Windows 7と新しいクライアントに対応したグループポリシーが充実したが、残念ながらWindows XPを対象外とするポリシーも増えてきた。

データ漏洩の危険性、あるいはUSBメモリを介して広がるウィルスの蔓延といったセキュリティ上の観点から、クライアントコンピュータのUSB大容量ストレージの使用を禁止したいと多くの管理者は思っているはずだ。Windows Server 2008のグループポリシーでは「リムーバブル記憶領域へのアクセス」に関する多くのポリシーが用意されている。たとえば「リムーバブルディスク:実行アクセス権の拒否」といったものだ。しかしこれらのポリシーの多くはWindows Vista以降が対象である。

Group_Policy_USB_003

<Fig.1 : グループポリシー管理エディターでの「リムーバブル領域へのアクセス」グループポリシー>

Group_Policy_USB_005

<Fig.2 : 「リムーバブルディスク:読み取りアクセス権の拒否」ポリシーはWindows Vista以降が対象>

ではWindows Server 2008のグループポリシーでWindows XPのUSBリムーバブルディスクの使用禁止を管理できないのかといえば、そうではない。従来からの方法として、グループポリシー管理テンプレートを作って適用する方法がある。

そもそもWindowsクライアントコンピュータの挙動は、Windows XP以降は「レジストリ」によって基本的に一元管理されることとなった。したがってレジストリを書き換えることで、Windowsコンピュータの挙動を管理することができる。グループポリシーとは、サーバー側で一括してクライアントコンピュータのレジストリを管理することだ、と言い換えてもいい。グループポリシー管理テンプレートは、クライアントコンピュータのレジストリとグループポリシーを結びつけカスタマイズするものである。

まずWindows XPのレジストリからみて、USBリムーバブルディスクの使用を禁止するにはどうすればよいか。これは多くの技術資料がWebでも手に入り、コンピューターに USB 記憶装置がインストールされている場合は、次のレジストリ キーにある Start 値を 4 に設定するとよい。この値を4にすると、ユーザーがコンピューターに USB 記憶装置を接続しても、その記憶装置は動作しなくなる。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor

では実際にレジストリの値がどうなっているか見てみよう。レジストリの値を見るには、クライアントコンピュータに管理者権限のあるアカウントでログオンし、「ファイル名を指定して実行」でRegeditコマンドによりレジストリエディタを実行する。

USB_Regedit_001

<Fig 3 : クライアントPCでRegeditを実行しレジストリの値を確認する>

このように「USBStor」の「Start」値が「3」になっていることがわかる。

ではこの値を4に変えることができるグループポリシー管理テンプレートを作ってみよう。グループポリシー管理テンプレートはテキストファイルなので「メモ帳」などで作ることができる。メモ帳で次のようなファイルを作り、適当な名前で保存する。保存は拡張子.admとする。

—————————————————————-

CLASS MACHINE
CATEGORY !!categorytext
CATEGORY !!subcategorytext

POLICY !!policytext
KEYNAME "SYSTEM\CurrentControlSet\Services\USBSTOR"
EXPLAIN !!explaintext
PART !!label DROPDOWNLIST REQUIRED
VALUENAME "Start"
ITEMLIST
NAME !!Disabled VALUE NUMERIC 3 DEFAULT
NAME !!Enabled VALUE NUMERIC 4
END ITEMLIST
END PART
END POLICY
END CATEGORY
END CATEGORY

[strings]
categorytext="管理テンプレートによるポリシー"
subcategorytext="リムーバブルドライブの使用制限"
policytext="USBリムーバブルドライブの使用禁止"
explaintext="usbstor.sysドライバーを無効にしてUSBリムーバブルドライブを使用できないようにします"
label="USBリムーバブルドライブの使用禁止"
Enabled="有効(使用禁止)"
Disabled="無効(使用可)"

—————————————————————-

このグループポリシーテンプレートはMicrosoftの英文の技術資料「Using Administrative Template Files with Registry-Based Group Policy Subscribe regpolicy」を見て書いたものだが、記述方法を少し説明すると、まず「CLASS MACHINE」でポリシーの対象がMACHINEポリシーであることを指定する。そしてCATEGORY – END CATEGORYでカテゴリを指定する。この例では2階層のカテゴリを指定している。POLICY – END POLICYでポリシーの名前、対照レジストリ値、説明文などを決める。さらにPARTとITEMLISTでレジストリ値を設定できるようにする。最後の[strings]以降は、説明文など文字列のエイリアスを記述するところだ。

KEYNAMEで対象のレジストリキーを記述し、VALUENAMEでStart値を指定、キーの値はNAME !!Disabled VALUE NUMERIC 3 DEFAULTでデフォルトで値3によって「無効」つまり制限がなくUSBリムーバブルドライブが使用できる、NAME !!Enabled VALUE NUMERIC 4で「有効」つまりUSBリムーバブルドライブの使用が禁止されることになる。「有効」、「無効」という言葉は、「使用を禁止する」というポリシーに対する言葉である。

ちなみにこの技術資料の例では、テキスト部分を[strings]に書き出す書式になっているが、これは直接文字を""で囲って記述してもいい。たとえば次のようにだ。

—————————————————————-

CLASS MACHINE
CATEGORY "管理テンプレートによるポリシー"
CATEGORY "リムーバブルドライブの使用制限"

POLICY "USBリムーバブルドライブの使用禁止"
KEYNAME "SYSTEM\CurrentControlSet\Services\USBSTOR"
EXPLAIN "ドライバーを無効にして使用できないようにします"
PART "USBリムーバブルドライブの使用禁止" DROPDOWNLIST REQUIRED
VALUENAME "Start"
ITEMLIST
NAME "無効(使用可)" VALUE NUMERIC 3 DEFAULT
NAME "有効(使用禁止)" VALUE NUMERIC 4
END ITEMLIST
END PART
END POLICY
END CATEGORY
END CATEGORY

—————————————————————-

このグループポリシー管理テンプレートを読み込むには、適当な新しいグループポリシーを作り、「管理用テンプレート」をポイントして右クリック「テンプレートの追加と削除」を行う。

GroupPolicyTemplate_004_edit

<Fig.4 : グループポリシーテンプレートの追加と削除>

GroupPolicyTemplate_006_edit

<Fig.5 : グループポリシー管理テンプレートのファイルを開く>

GroupPolicyTemplate_011_edit

<Fig.6 : グループポリシー管理テンプレートを追加した>

GroupPolicyTemplate_012

<Fig.6 : グループポリシー管理エディターで「従来の管理用テンプレート」が表示された>

作成したグループポリシー管理テンプレートを読み込むと、上図のように「管理用テンプレート」の下に「従来の管理用テンプレート」の項目が表示される。この中に作成したポリシーが記述されている。フォルダを展開すると次のようになっているはずだ。

GroupPolicyTemplate_013

<Fig.7 : グループポリシー管理エディタで「従来の管理用テンプレート」項目を展開した>

「従来の管理用テンプレート」-「管理用テンプレートによるポリシー」-「リムーバブルドライブの使用制限」のカテゴリは、インポートした管理用テンプレートに記述した項目である。そしてその中に「USBリムーバブルドライブの使用禁止」ポリシーができていることがわかる。このポリシーを開くと、次のようになる。作成したグループポリシー管理テンプレートの記述したテキストと、このグループポリシー管理エディター上の表示を比べるとよいだろう。

GroupPolicyTemplate_016

<Fig.8 : グループポリシー管理テンプレートの追加によってできて「USBリムーバブルドライブの使用禁止」ポリシー>

「無効(使用可)」となっているオプションを「有効(使用禁止)」にして「適用」しよう。

GroupPolicyTemplate_017

<Fig.9 : 「USBリムーバブルドライブの使用禁止」ポリシーを「有効(使用禁止)」にした>

対象のWindows XPクライアントコンピュータをこのグループポリシーを設定したOUに入れ、グループポリシーを強制的に適用してみよう。グループポリシーの強制的な適用は、コマンドラインでgpupdate /forceコマンドを実行する。

USB_Regedit_002

<Fig.10 : Windows XPクライアントのコマンドラインでgpupdate /forceを実行した>

そしてレジストリエディタregeditで「表示」-「最新の情報に更新」でレジストリの値を確認する。

USB_Regedit_003_edit

<Fig.11 : レジストリエディタで表示を最新の情報に更新する>

USB_Regedit_004

<Fig.12 : レジストリStart値が3から4に変わった>

レジストリの値が3から4に変わったことが確認できた。

このように、グループポリシー管理用テンプレートを自作し、追加することで任意のレジストリ値をグループポリシーによって管理することができる。したがってクライアントコンピュータのどのレジストリ値をどう変えるとよいかがわかれば、Active Directoryによって一元管理することができる。このレジストリとグループポリシーの関係は、Windows XPだけでなくWindopws VistaやWindows 7でも同様である。グループポリシー管理テンプレートを自作し、グループポリシーをカスタマイズしてうまくクライアントコンピュータを管理しよう。

もしこのやり方でうまくいかない場合は、Active Directoryの構成が間違っていないか、あるいはグループポリシーの作り方が間違っていないか確認しよう。グループポリシーは階層構造に適用されるので、より上位で別のポリシーが効いていれば適用されない場合がある。自分の作ったグループポリシー管理用テンプレートの挙動を確認するためには、既存のポリシー追加するのではなく、まずは新しいポリシーを作って試すことを奨める。

システム管理者のための考察 – Active Directoryユーザー一括作成はVBS、VBScriptでやろう

leave a comment »

Active Directoryを使うと、たいへん合理的にシステム全体を管理、運用することができる。Active Directoryの技術は、システム全体をMicrosoft Windows Systemで統合する最も大きな理由であるといえる。ファイルサーバー、プリンタなどシステムリソースへのアクセス管理、Webアクセス管理、監査、データベースのアクセス権など、ユーザー管理を一元化し権限を統合的にしかもわかりやすく簡単に扱えることは極めて大きなメリットである。

ユーザー管理においては、一般の企業であっても一定以上の従業員規模では、画面を操作するGUI環境で手作業でやっていては追いつかないだろう。ましてや私が勤める学校のようなところでは、毎年数百名規模の新入生のユーザー登録を行わなければならない。このとき、なんらかの名簿リストを用いて一括でユーザー作成をしたい。

いまでもそうだが、Active Directoryのユーザー作成を一括で行うことについてWebで検索をすると、CSVDE.EXEやLDIFDE.EXE、DSADD.EXEなどのコマンドを使う方法や、Windows 2000 Server時代のリソースキットによるADDUSERS.EXEを使う方法などが上位にあらわれる。しかしこれらの手法はユーザー作成に関して限定的な古い手法である。もちろんこれらの手法はActive Directoryに関する情報があまりない時代に極めて有用な情報であって、だからこそいまだにWeb検索で上位にヒットするのだが、Active Directoryのユーザー一括作成について今後はPower Shellに取って代わられると思うが、現時点で最も有効な方法はVBScript略してVBSを使う方法だと思う。VBScriptあるいはVBSは、Windows Script Host略してWSHとも言われるスクリプト実行環境で実行される、テキストファイルに記述したスクリプトを実行するものである。この手法はWindows 2000 ServerからWindows Server 2008 R2まで共通して使える手法である。

VBSはテキストファイルに記述する。サンプルとして次のようなスクリプトをテキストファイルに記述してみよう。少し長いがメモ帳で一行で記述する。

————————————————————————————–

Set objOU = GetObject(“LDAP://OU=生徒,dc=kyoiku,dc=local”) :Set objUser = objOU.Create(“user”, “cn=0000000 VBSでユーザー作成”) : objUser.Put “sAMAccountName”, “0000000” : objUser.SetInfo:objUser.Put “sn”,”snは姓”: objUser.Put “givenName”,”givenNameは名”: objUser.Put “displayName”,”displayNameまたはDNは表示名”: objUser.Put “initials”,”initia”: objUser.Put “description”,”descriptionは説明”: objUser.Put “userPrincipalName”,”userPrincipalNameはログオン名”: objUser.setPassword “kofu&1234” : objUser.AccountDisabled = FALSE: objUser.SetInfo

————————————————————————————–

実際にメモ帳に記述したところは次のとおりだ。

vsbでユーザー作成_メモ帳

<Fig.1 メモ帳で作ったActive Directoryにユーザーを生成するVBScript>

メモ帳でこのテキストファイルを保存すると、拡張子.txtのファイルが生成するが、この拡張子を.vbsに変更するとサーバー上でVBScriptとして実行できるようになる。実行すると「kyoiku.local」というドメインの「生徒」というOUにユーザーアカウントが生成する。実際にできたユーザーは次のようになっている。

vsbでユーザー作成001

<Fig.2 VBScriptで生成したユーザーのプロパティ「全般」>

vsbでユーザー作成003

<Fig.3 VBScriptで生成したユーザーのプロパティ「アカウント」>

VBScriptの設定項目と生成したユーザーアカウントのプロパティを比べると、設定したい項目についてVBScriptでどう記述すればよいかががわかるはずだ。

これをみると、サーバーにログオンし、管理ツールのGUI環境でやっていると意識しないが、ActiveDirectoryではユーザー情報に関して類似の異なる複数の項目が管理されていることがわかるだろう。「cn」、「sAMAccountName」、「sn」、「givenName」、「displayName」、「initials」、「description」、「userPrincipalName」などだ。

では、大量のユーザー情報からどうやってこのVBScriptを生成するかだが、それにはいろいろな方法がある。たとえばエクセルなどで生成したいユーザーの基本情報、つまりログオンIDや初期パスワード、氏名、などをリストにしておき、セルの結合でスクリプトを生成することができるだろう。もちろんアクセスデータベースを使ってもいいし、SQL Serverで生成してもいい。生成した文字列をテキスト形式でエクスポートし、拡張子を.vbs変えて実行すればよいのだ。

ただデータベースから文字列をエクスポートするとき、文字を「”」で囲んでしまうような処理を自動的にやってしまうアプリケーションもあるので注意が必要だ。その場合でも「メモ帳」の文字置換機能を使って不必要な記号を削除して実行すればよい。

Written by Yoshio Matsumoto

2011年9月8日 at 6:30 PM

Windows Serverにおける管理のためのバッチ処理の手法についてまとめる

leave a comment »

4月になって勤務する学校のシステムを再構築することになった。そこで問題になったのは、一括で大量にユーザー作成する方法だ。俺が勤務する学校には常勤の教職員が100名以上、生徒が1100名以上いる。つまり1200のユーザーアカウントを作成する必要がある。

インターネットでWindows ServerのActiveDirecrtoryにユーザーを一括作成する方法を検索すると、主として3つの方法が見つかる。ひとつはAddusersユーティリティーを使う方法、もうひとつはWSH環境でVBScriptを使う方法、そして最後はWindows PowerShellを使う方法だ。

addusers.exeはコマンドライン上で実行するユーティリティープログラムで、「Windows NT 4.0 Resource Kit、Supplement 3」や「Windows 2000 Serverリソースキット」に含まれている。このツールを使うにはリソースキットを買わなければならない。俺もWindows 2000 Serverを管理していたときは、このaddusers.exeを使ってユーザー登録していた。このツールは当時の管理者にとって、たいへんありがたいツールであり重宝されていたので、今でもインターネットでユーザー一括作成の方法を調べると、たくさんの情報が得られる。だがこのツールで登録できるActiveDirectoryの情報には制約がある。全ての情報を登録することができないのだ。

Microsoftは1998年にWindows 98でWindows Script Host、略してWSHを提供した。WSHでは言語としてVBScriptとJScriptが利用でき、これらの言語を使ってスクリプトを書くことができる。コマンドラインに比べて強力な機能を発揮でき、VBScriptはVisualBasicに近い構文を利用できるのでスクリプトを作成しやすい利点がある。インターネットにはWSHを利用したスクリプトの情報もたくさんある。

Windows PowerShellは2006年にマイクロソフトが提供したWindowsにおける本格的なシェル環境である。スクリプト言語はオブジェクト指向に基づいて設計されており、。NET Framework 2.0を基盤としている。Windows PowerShellはWindows XP、Windows Server 2003、Windows Vista、Windows 7などで利用でき、Windows Server 2008では標準で含まれている。

サーバー管理の仕事ではユーザー作成など一括処理を自動的に行いたい場面が多い。これらバッチ処理は今後Windows PowerShellを使って行うことになるだろう。

Written by Yoshio Matsumoto

2010年4月29日 at 11:31 AM

カテゴリー: ActiveDirectory