Welcome to TechNet Blogs Sign in | Join | Help

【Management】System Center Essentials SP1の新機能 - TechNet Magazine 5月号

5月14日配信の TechNet Flash でもご案内しましたが、5月号の TechNet Magazine は Management 特集です。

その中で、System Center Essentials 2007 Sp1 の新機能について詳細に解説されていますので、是非ともご覧ください。もちろん日本語に翻訳されています。

画面が英語版なので、後日、日本語版での検証結果についてもこちらで報告します。

System Center Essentials SP1 の新機能
 
TechNet Magazine May 2008
 
 

【Management】System Center Essentials Sp1適用済評価版 が公開

全国の6500万の System Center Essentials ファンの皆様、大変お待たせいたしました。

System Center Essentials SP1 適用済み評価版がダウンロードセンターで公開されました。

System Center Essentials 2007 Service Pack 1 Evaluation copy - 日本語
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=246df207-f051-47c3-bd64-c9072281c3c8

Essentials  SP1 では以下の機能強化がはかられています。

What's New in System Center Essentials 2007 Service Pack 1
http://technet.microsoft.com/en-us/library/cc339465.aspx 

  • セットアップ時のログがより詳細にとられるようになりトラブルシュートがしやすくなった
  • ワークグループ所属のコンピュータのサポート
  • SNMP v1 v2 に加えて SNMP v1 のサポート
  • Essentials が動作しているサーバーとは別のコンピュータに Essentials 用の SQL Server 2005 がインストールされている場合、異なるアーキテクチャ(x86 or x64)であってもインスタンスを作成することができる
  • Windows Server 2008 上での 管理サーバー、管理コンソール、エージェントの動作をサポート(2008用管理パックについてはもう少し先までお待ちください)
  • 複数の自動承認ルールの作成
  • 更新の管理に関する新機能 
  • 管理パック品質の改善
  • パフォーマンスの改善
    • メモリ使用量の削減
    • SQL Server 2005 のディスク使用量の削減
  • バックアップとリストアツールの提供
  • ダイアグラムビューの改善と機能追加

等 

SP1 単体のアップグレードモジュールは、公開までにもうすこし時間がかかりそうですが、さほどお待たせせずに公開されることでしょう。

これから評価を始めるという方は、是非こちらをご使用ください。

 

最新のグループポリシー設定項目の一覧はこちら ~ Group Policy Settings Reference for Windows Server 2008 and Windows Vista Sp1

以前、Windows Server 2008 Beta3 でのグループポリシー設定項目一覧が書かれたドキュメントについてお知らせしましたが、ちょっと目を放したすきに、最新のグループポリシー設定項目一覧が記載されたドキュメントが公開されていました。すでにご存知の方もいらっしゃるかもしれません。

Group Policy Settings Reference for Windows Server 2008 and Windows Vista SP1
http://www.microsoft.com/downloads/details.aspx?FamilyID=2043b94e-66cd-4b91-9e0f-68363245c495&DisplayLang=en

例によって英語ですが、とっても有用なドキュメントです。

どんな設定項目があるのか、見ているだけで時間をつぶすことができます。

通勤、通学、料理の合間、赤ちゃんの寝物語にも是非ご活用ください。

このほか、グループポリシーに関するドキュメントは こちら から。

Posted by junichia | 0 Comments

【IDM】Active Directory から OpenLDAP への パスワードの同期 その1 ~ パスワードを SHA1 で暗号化

当初の予定を変更し、パスワードの暗号化について、ちょっとだけ触れておきたいと思います

以下では、Active Directory に格納された DES / MD5 形式のパスワードをそのままとりだしました。取り出したまま OpenLDAPに格納すれば、生パスワードを経由することなくパスワードの同期が行えます(同期の手法については、また後日)。

【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する

同僚の田辺氏が、上記のスクリプトを PowerShell に置き換えてくれましたので、よろしければそちらも参照してください。

『【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する』PowerShell 編

さて、ここで当然の要求が出てきます。

DES や MD5 じゃなくて、SHA1 で 暗号化したいんだけど!!??

当然ですね。

暗号化と文字コード変換はなんとかなるとしても、DES / MD5 を複合化することはできませんので、事前に「生パスワード」が取得できるという前提で書きます。 

で、その暗号化と文字コード変換ですが、VBSで何とかしようとしてみたのですが...うまい方法が無く....田辺さんに懐柔されたようで悔しいのですが、PowerShell を使用することにします。

生パスワードを 「annou$01 」 とします。


PS C:\> $strPassword = "annou$01"
PS C:\> $objUTF8Enc = new-object System.Text.UTF8Encoding
PS C:\> $bytPassword = $objUTF8Enc.GetBytes($strPassword)
PS C:\> $objCrypt = new-object System.Security.Cryptography.SHA1CryptoServiceProvider
PS C:\> $bytCryptPassword = $objCrypt.ComputeHash($bytPassword)
PS C:\> $strBase64Password = [System.Convert]::ToBase64String($bytCryptPassword)
PS C:\> $strBase64Password
gFRVb2AfNnXfx2GUQe5GaEYrnJQ=

最後に表示されている gFRVb2AfNnXfx2GUQe5GaEYrnJQ= が SHA1 で暗号化されたパスワードです。

暗号化の形式を変更する場合には、SHA1CryptoServiceProvider の部分を変えてください。詳細は、以下を参照してみてください。

System.Security.Cryptography Namespace
http://msdn.microsoft.com/ja-jp/library/system.security.cryptography(en-us,VS.80).aspx

このままでは自動化ができないので、まずは、上記のPowerShellスクリプトを ps1 という拡張子でテキストファイルに保存しましょう。ここでは、cryptSha1.ps1 というファイルに保存したとします。

次に、PowerShell を起動して、以下のコマンドを入力し、自マシンで作成した ps1 ファイルを実行できるようにします。

PS C:\> Set-ExecutionPolicy RemoteSigned

その後、PowerShell を終了し、通常のコマンドプロンプトから以下のように記述しましょう。

C:\> for /f %i in ('powershell c:\cryptsha1.ps1') do set Sha1Password=%i

これで、環境変数 Sha1Password には SHA1 で暗号化されたパスワードが格納されます。あとは、なんとでもなりますね...。もし、バッチファイルから 上記の for コマンドを実行するのであれば、以下のように % は %% と重ねて記述してください。

for /f %%i in ('powershell c:\cryptsha1.ps1') do set Sha1Password=%%i

それにしても...Net Framework が使えるって....べ、便利ですね....

まずい..VBS から乗り換えてしまいそうです.....

Posted by junichia | 1 Comments

【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する

本日、健康診断に行ってきました。健康診断...実は苦手でして...

いい歳して恥ずかしい話ですが....子供のころから、わきの下とわき腹が弱いのです。なので苦手なのは心電図...それに輪をかけてつらかったのは「腹部エコー検査」なるもの...。なんか、先のツルツルのヤツを使って、わきの下とかわき腹をしつこいくらいにグリグリされました。これは、もう、拷問としか言いようがありません。

ということで、「わきの下とわき腹が弱いですが 何か?」 コミュニティを作り、医療機器業界に「わき腹非接触検査機器の開発」を働きかけると同時に、わきの下とわき腹がくすぐったくならない禁断の呪文を開発したいなぁと思う、今日この頃です。同士募集です。

それはさておき、以下の続きとなる その3 です。

今回は、unixUserPassword 属性から、NIS用に暗号化されたパスワードを取り出します。msSFU30userPassword と違い、ちょっとコツがいります。

まずは、取り出しもとの unixUserPassword がいかなる特徴を持っているのか、見てみることにします。

ということで、スキーマツールを開きましょう。

Windows Server 2008 でのスキーマツールの開き方は従来通りです。以下のコマンドをコマンドプロンプトから入力後、mmc のツナップインに「Active Directory スキーマ」を追加してください。

c:>regsvr32 schmmgmt.dll

スキーマツールを起動したら、属性一覧の中から「 unixUserPassword 」 を探して、プロパティを開いてみてください。

注意していただきたいのは、上記の赤丸の部分です。

  • オクテット文字列である
  • 複数値である(戻り値がアレイ形式である)

オクテット文字列とは、文字列を1文字ごとに8ビットのバイナリ形式で保存する形式です...うーん、あたりまえですね。説明よりも、以下をご覧ください。unixUserPassword 属性に格納されている値を ADSI Edit で表示したものです。  一見、何が格納されているかわからないですね。

上のバイナリ値の最初の「 01001101 」を 10進数に変換すると 77 になります。77...何か心当たりありませんか? 子供の頃に食べたアイスクリームのような....そう、「M」のアスキーコードです。

では、次の 00110111 はどうでしょう?10進にすれば 55 。これは、「7」ですね。子供の頃から そういう教育をされてきた私にとっては朝飯前です。

といった感じで見ていくと、上記は「 M7hlyUsc6diZ. 」 となり、DES で暗号化されたパスワードだなぁということがわかります。

そんなわけで、スクリプトで取得するには以下のようになります。VBScript で書かれているので、拡張子を vbs として保存してください。

strDomain = "dc=example64,dc=jp"
strUserName = "testuser001"

Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
        "<LDAP://" & strDomain & ">;" & _
        "(&(objectCategory=person)(objectClass=user)" & _
        "(sAMAccountName=" & strUserName & "));" & _
        "sAMAccountName,unixUserPassword;" & _
        "subtree"
Set objRecordSet = objCommand.Execute

Do Until objRecordset.EOF

   arrUNIXUSERPASSWORD = objRecordset.Fields("unixUserPassword")  ' 取得したパスワードを arrUNIXUSERPASSWORD に格納

   For i = 1 To LenB(arrUNIXUSERPASSWORD(0))  ' arrUNIXUSERPASSWORDはアレイ値なので、(0) で1番目の値を取り出す

       strA = MidB(arrUNIXUSERPASSWORD(0), i, 1) ' MidB で1バイトずつ取り出し
       strB = AscB(strA)   ' いったんアスキーコードにしてから
       strUnixUserPassword = strUnixUserPassword & Chr(strB) ' 元の文字に戻してあげる

   Next

   objRecordset.movenext

Loop

wscript.echo strUnixUserPassword

 

上記のように、MidB、AscB、Chr(またはChrB)を使うというコツはいりますが、なれればオクテット値なんて怖くありません。

さて、こうして取り出した値をどうやって OpenLDAP に同期するのか...

ひとまずすぐに思いつくのは perl の Net::LDAP です。これは実績もあります。

まだ、ADSI を試してみたことは無いのですが、どなたか試された方いらっしゃいますか?

こんな方法が簡単!という案があれば是非ともご連絡ください。blog にてご紹介させていただきます。

ちなみに、KBには、以下のような情報が公開されています。次回は、以下について解説をつけたいと思います。

INFO: How to Use ADSI to Query a Third-Party LDAP Server
http://support.microsoft.com/kb/251195/en-us

 

Posted by junichia | 2 Comments
Filed under: , ,

【IDM】パスワード同期機能の有効活用 その2 ~ Windows Server 2008 でのパスワード同期機能のセットアップ

前回は、パスワード同期機能について簡単にお話しました。

【IDM】パスワード同期機能の有効活用 その1 ~ パスワード同期機能とは

今回は、Windows Server 2008 上で パスワード同期機能を使用するためのセットアップを行いましょう。

Windows Server 2008 上でパスワード同期機能を使用するには、はじめにサーバーマネージャの「役割の追加」から「Active Directory ドメイン サービス」をインストールし、ドメインコントローラとしてセットアップを完了しておく必要があります。

  • サーバーマネージャから「Active Directory ドメイン サービス」役割を追加
  • dcpromo を使用してドメインコントローラのインストールを行う
  • 再起動

上記が完了したら、再度サーバーマネージャを起動し、以下のように「Active Directory ドメイン サービス」の関連サービスとして 「 UNIX 用 ID 管理」を追加します。

このとき、「パスワード同期」だけでなく、「NIS サーバー」「管理ツール」もあわせてインストールしてください。
※NIS サーバーが必要ない場合には、あとから無効にできます

インストールが完了すると、サーバーマネージャの「役割」には「UNIX用 Microsoft ID 管理」が表示されます。

次に、AD内部での パスワード同期を正しく動作させるために、以下の環境設定を行います。

[サーバーマネージャ] - [役割] - [Active Directory ドメイン サービス] - [UNIX用 Microsoft ID 管理] - [パスワード同期] を右クリックして、コンテキストメニューから「プロパティ」を選択すると、以下の画面が表示されます。

画面下部の「キーの生成」をクリックして、キーをリセットしてください。

次に、「構成」タブに切り替え、「Winodws から NIS(Active Directory)へのパスワード同期」を有効にします。これにより、パスワード変更時に unixUserPassword にパスワードが同期されます。

 

次に、以下の画面のように、NISサーバーを右クリックして「UNIXパスワードの暗号化」を選択します。

以下の画面が表示されるので、暗号化の形式を選択してください。

以上でパスワード同期機能の設定は完了です。

NISサーバーが必要ない場合には、「Server for NIS」サービスを無効にしてしまって問題ありません。

 

簡単に動作確認をしてみましょう。

「Active Directory ユーザーとコンピュータ」を使用して、新しいユーザーを作成します。

その際、必ず「UNIX属性」を設定してください。この設定がなされていない場合には、パスワードの同期は行われません。

ここで...もしプライマリグループの設定が行えない場合には、はじめに プライマリグループ自身(ここでは Domain Users) にもUNIX属性を設定してください。

設定が完了したら、パスワードを変更してみましょう。

方法はなんでもかまいません。コマンドプロンプトから、net user testuser01 password と入力してもOKです。

パスワードが正常に変更できたら、ユーザーのプロパティから「属性エディタ」タブを選択します。

※属性エディタタブが表示されていない場合には、「Active Directory ユーザーとコンピュータ」の「表示」メニューで「拡張機能」を有効にしてください

属性の一覧から unixUserPassword を探すと、以下のように表示されているはずです。以下のパスワードは、MD5 で暗号化されています。

いかがでしょうか。ここまではうまくいきましたか?

次回は、スクリプトを使用して、unixUserPassword から暗号化されたパスワードを取り出します。

 

Posted by junichia | 2 Comments
Filed under: , ,

【IDM】パスワード同期機能の有効活用 その1 ~ パスワード同期機能とは

先日、薄暗い部屋で 掌(てのひら) をじっと見つめていたら「運命線」なるものが全く無いことに気づきました。ははぁん、どうりで...

さて、話は変わりますが、「パスワード同期」機能 をご存知でしょうか?

Active Directory と NIS のパスワードを双方向に、かつリアルタイム同期するという優れものですが、実際に運用で使用されている方は多くないようです。理由として、サポートされている OS のバージョンに制限があることや、場合によっては make しなおさなければならないといった部分で敷居が高いようです。

Windows Server 2003 以前 では、Service for UNIX をインストールすることでパスワード同期機能が使用可能になります。

Windows Services for UNIX 3.0 におけるパスワード同期
http://www.microsoft.com/japan/technet/interopmigration/unix/sfu/psync.mspx

Windows Server 2003 R2 および Windows Server 2008 以降では、「UNIX 用 ID 管理」を有効にすることでパスワード同期機能が使用可能になります。 

Windows Server 2003 R2 - UNIX 用 ID 管理 : パスワード同期
http://technet2.microsoft.com/WindowsServer/ja/library/bb1f0664-5f08-4a0c-b1cf-f7363e593c621041.mspx?mfr=true

Windows Server 2003 R2 - パスワード同期 ステップバイステップ
http://technet2.microsoft.com/WindowsServer/ja/library/70fd1e7b-902d-4d4b-af7a-c3f55a5577851041.mspx?mfr=true

Windows Server 2008 UNIX との相互運用性 - パスワード同期
http://www.microsoft.com/japan/technet/windowsserver/2008/library/6fe7d2b8-70a0-4a67-9128-cc3639fc7fd7.mspx?mfr=true

では、NIS が存在しない場合、パスワード同期機能に使い道は無いのか?

いえいえ、そうではありません。使わなければ損をするほどもったいない話です。

ちょっとの知識と工夫で、大きな効果を得ることができます。

パスワード同期機能は、大きく分けて以下の3つのコンポーネントから構成されています。

  • pswdsync.dll (Windows Server 上で動作)
  • Single Sign-on Daemon (SSOD) (UNIX コンピュータ側で動作)
  • pam_sso.so (UNIX コンピュータ側にインストールされる pam)

この中で、pswdsync.dll がWindows Server 側のキーとなるコンポーネントです。

パスワード同期機能のしかるべき環境設定が完了後、Windows ユーザーによってパスワードが変更されると、pswdsync.dll は変更したパスワードを横取りし、UNIXコンピュータ側の SSOD に渡します。その後 SSOD によってパスワードが書き込まれることで Windows と UNIX のパスワードが同期されます。

さて、面白いのはここからです。

このとき Windows Server 上に NIS Server (Server for NIS)がインストールされていると、Active Directory 上にも 一般的に NIS で使用されるパスワード(crypt or MD5) が保存されます。

Windows Server 2000 / 2003 :msSFU30UserPassword

Winodws Server 2003 R2 / 2008 :unixUserPassword

これがどんな効果をもたらすか。

もうお気づきのとおりですね。Active Directory から UNIX用に暗号化されたパスワードがゲットできてしまうのです。

では、ゲットできると何がうれしいか...

たとえば、生パスワードを取得して暗号化するといった手間を省き、OpenLDAP に直接パスワードを書き込むことができます。つまり、「同期」が可能となるわけです(もちろん、OpenLDAP側の暗号化形式を合わせておく必要があるわけですが)。

以下の画面は、Windows Server 2008 上で参照した あるユーザーの unixUserPassword 属性です。MD5 で暗号化されていることがわかると思います。

いかがでしょう。ちょっと興味がわきましたか?興味がわいた方は次回にご期待ください。

 

 

Posted by junichia | 3 Comments
Filed under: ,

【IDM】監査イベントを監視してユーザー管理を自動化するためのスクリプト(汎用版)

4月24日のセミナー「AD 次の一手」にて、「小規模なシステムの場合には、高価なパッケージではなくスクリプトレベルのプログラミングで同期を行うことも可能」というお話をしました。

セミナー資料にはスクリプトを掲載することができませんでしたが、ここに使用したスクリプトを掲載いたします。

以下のスクリプトは、DC001 というドメインコントローラに接続して、監査イベント 4720 と 5136 を待ち合わせるものです。VBscript で書かれていますので、拡張子を vbs として保存し、コマンドプロンプトから実行してください。

CScript xxxxx.vbs

くれぐれも、あたまの CScript を忘れないでください。忘れると、ポップアップメッセージが大量に表示されることになります。もしくは、以下のコマンドで、事前にスクリプトのホストを cscript に変更しておきましょう。

Cscript //h:cscript

ユーザー管理に関する監査イベントの詳細については、以下をご参照ください。 

【Windows Server 2008】監査イベントの Event ID が変わります
http://blogs.technet.com/junichia/archive/2008/01/11/2008-id.aspx

strDC = "DC001"
UserAdmin = ""
UserPassword = ""

Rec = now & ",ドメインコントローラに接続します," & "DC=" & strDC
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
objLocator.Security_.Privileges.AddAsString "SeSecurityPrivilege", True
Set objService = objLocator.ConnectServer(DC, "root\cimv2", UserAdmin, UserPassword)

If Err.Number = 0 Then
   Rec = now & ",ドメインコントローラへの接続完了," & "DC=" & strDC
   wscript.echo Rec
End If

strQuery = "Select * from __InstanceCreationEvent WITHIN 10" & _
           " where TargetInstance isa 'Win32_NTLogEvent' and " & _
           "TargetInstance.LogFile='Security' and " & _
           "(TargetInstance.EventCode='4720' Or TargetInstance.EventCode='5136')"

Set colMonitoredEvents = objService.ExecNotificationQuery(strQuery, "WQL", 48)

If Err.Number = 0 Then
   Rec = now & "," & strDC & " の監査イベントを監視しています"
   Wscript.Echo Rec
End If

Do

    set objLatestEvent = colMonitoredEvents.NextEvent

    Message = objLatestEvent.TargetInstance.Message
    colMessage = split(Message,vbCrLf)
    For each m in colMessage
       Wscript.Echo m
       'ここに  m を解析し、同期を行う処理を組み込む
    Next

Loop
 

実行結果例を以下に示します。

C:\tmp>cscript waitevent.vbs
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

2008/04/25 22:32:56,ドメインコントローラへの接続完了,DC=DC001
2008/04/25 22:32:56,JUNICHIA03 の監査イベントを監視しています
ディレクトリ サービス オブジェクトが変更されました。

サブジェクト:
        セキュリティ ID:                S-1-5-18
        アカウント名:           JUNICHIA03$
        アカウント ドメイン:            EXAMPLE64
        ログオン ID:            0x451127

ディレクトリ サービス:
        名前:   example64.jp
        種類:   Active Directory ドメイン サービス

オブジェクト:
        DN:     CN=junichia,CN=Users,DC=example64,DC=jp
        GUID:   {94E6B11B-BCF9-407E-8B73-0CF88BA1638B}
        クラス: user

属性:
        LDAP 表示名:    unixUserPassword
        構文 (OID):     2.5.5.10
        値:     <Binary>

操作:
        種類:   値が削除されました
        相関 ID:        {D55665FD-B5BA-4E64-BD95-E9D2CBE1A690}
        アプリケーションの相関 ID:      -
ディレクトリ サービス オブジェクトが変更されました。

サブジェクト:
        セキュリティ ID:                S-1-5-18
        アカウント名:           JUNICHIA03$
        アカウント ドメイン:            EXAMPLE64
        ログオン ID:            0x451127

ディレクトリ サービス:
        名前:   example64.jp
        種類:   Active Directory ドメイン サービス

オブジェクト:
        DN:     CN=junichia,CN=Users,DC=example64,DC=jp
        GUID:   {94E6B11B-BCF9-407E-8B73-0CF88BA1638B}
        クラス: user

属性:
        LDAP 表示名:    unixUserPassword
        構文 (OID):     2.5.5.10
        値:     <Binary>

操作:
        種類:   値が追加されました
        相関 ID:        {D55665FD-B5BA-4E64-BD95-E9D2CBE1A690}
        アプリケーションの相関 ID:      -

Posted by junichia | 0 Comments

4/24 「Active Directory 次の一手」にお越しくださった皆様 ありがとうございました ~ 今度は皆さんの番です

先週から今週にかけ、コンテンツ準備+登壇 が続き、 blog の更新を怠っておりました。 

4月24日に開催した 「Active Directory 次の一手」 にお越しいただいた皆様、ありがとうございました。

朝から晩まで、Active Directroy 付けで大変お疲れになったと思います。91名のお申し込みで、65名の参加となりました。

マイクの調子が悪い場面もあり、また会場が広い割にはスクリーンが小さく、見えずらかった場面もあったかと思いますが、最後までお付き合いいただきありがとうございました。

さて、セミナーの主旨と内容は高添の blog にも書かれているとおりですので省略しますが、私が担当した「ID管理の自動化」では、「お客様から出された要件定義書を 、フィールドSE さんたちが どのように咀嚼し、Active Directroy をご提案ただきたいか」 というお話をさせていただきました。

実は、つい先日の4月21日でMS入社後1年が経過しましたが、今回のセミナー開催にあたり、「お客様への提案書を書くときの8割ワクワク、2割不安...」という気持ちを久しぶりに味わった気がします。

セミナーで時間の都合上お見せできなかったデモや、デモで使用したスクリプトの解説、補足情報とより詳細な解説、新しい情報を blog を通じて発信してまいりますので、楽しみに(?)してください。

今回、我々エバンジェリストは、MS社員というよりも、エンジニアとしての想いでコンテンツ作りをしました(とはいえ、扱う製品はMS製品になってしまうわけですが)。それは「仲間を増やしたい」と願っているからです。今回のセミナーでいえば、「Active Directory はもっと面白いはずだ!」という想いを共有したいからです。

共有してどうするのか....「何か」楽しいことをやりたいと考えています。たとえば、Directory Expert Conference の日本開催とか、 ADの情報発信者集団である 「AD GEEK の会」 を結成するとか...。

そのためには、ADだけ知っていても仕方がないわけで、常に他の技術との比較検討をされている現場のエンジニアの皆様の持つノウハウやご協力が必要だと感じています。

エバンジェリストの仕事は「情報発信」だけだと思われがちですが、現場の皆様に対して生の情報発信をお願いするとともに、そうした皆様の情報発信をバックアップすることも大切な仕事です。

特に、Active Directory に関する情報は、ツールの使い方やトラブルシューティングを含め、現場のSEさんが多くの情報をお持ちだと思いますし、そうした情報を発信する場を求めているSEさんもいらっしゃるかもしれません。もしくは、「自分一人だときついけど、同じ想いの仲間がいればなぁ」と思っているSEさんもいらっしゃることでしょう。

  • 「こういう情報があるんだけど、発信の場がない」
  • 「仲間を作って、特定分野の情報をまとめてみたい」
  • 「あまり広く深く知っているわけではないけど、この分野ならば情報発信できるかも」
  • 「コミュニティに参加したいけど、あまり知らない人と話するのは苦手だし....ちょっと面倒。でも何かやりたい。」
  • 「業務が忙しいから、そうそう毎回うごけるわけではない。でも1回くらい、セミナーを担当してみてもよいかな」 
  • 「特定の技術分野について’少数の人たち' と話をしたい」
  • 「微力かもしれないけど、IT業界活性化のために何かをしたい!」

といったことを思っていらっしゃるエンジニアのかたがたは、遠慮なく私や他のエバンジェリストにコンタクトしてください。

いますぐ何かができるわけではありませんが、小さなことをコツコツと積み重ねていきたいと考えています。

社外活動は、きっとエンジニアのみなさんのモチベーションを高めてくれるはずです。

コンタクトをお待ちしております。

MSC 2008 へのご来場 ありがとうございました

the Microsoft Conference 2008 へのご来場、ありがとうございました。

また、2日目 10:00 ~ Room B での Server Core をお聞きくださった皆様、比較的地味な内容にもかかわらず、ご来場/ご静聴いただきましたこと、心より感謝いたします。

Room B は今回のイベントで最も大きな会場であるにもかかわらず、750 の座席が満席だったことは壇上からもわかりました。

セッション終了後、「ASK the SPEAKER」で QA を受け付ける旨を申し上げなかったせいでしょうか..あまり質問にいらっしゃる方が無く少々さみしい思いもしましたが、会場をうろうろしている際に何度か声をかけていただきました。

セッション中、「こまかな情報は是非とも blog で!」とご案内したせいでしょうか、4月16日の午後より blog へのアクセス数がじわじわとのびはじめ、昨日のアクセス数は過去最高となりました。 

検索キーワードでも、2008 / Hyper-V / Server Core が上位を占めており、間違いなく、MSC 効果であると言えます。

# それにしても WSH 5.7 が増えているのはなぜだろう.....

また、以前の職場でお付き合いのあった複数の方々から「発見」され、久しぶりに会話を交わせたことも大きな収穫でした。

残念ながら、Server Core セッションは 東京のみでして、名古屋と大阪での開催は今のところ予定はございません。

まもなく、当日のセッションスライドの公開が予定されておりますので(ビデオも公開されるのかな...?)、当日ご覧になれなかった皆様は是非ともそちらをご覧くださいませ。

ということでございまして、これからも当 blog を通じて、現場で使える情報を中心に発信してまいります。

今後とも、おつきあいのほど、よろしくお願いいたします。

 

Posted by junichia | 0 Comments
Filed under: ,

【Windows Server 2008】Server Core のコマンドプロンプトを手元のコンピュータから起動する~RemoteApp 機能の活用

何度か この blog でも取り扱っていますが、Server Core を管理する方法は、およそ 3 種類考えられます。

  • 潔く ローカルのコマンドプロンプトを使用する
  • 優雅に リモートからMMCで接続する
  • 華麗に リモートからコマンドを発行する

どれを使うかは、シチュエーションによると思いますが、今回は「潔くローカルのコマンドプロンプトを使用する」を少しだけ便利にする手順について紹介します。

Windows Server 2008 のターミナルサービスには、RemoteApp という機能が実装されました。

Windows Server 2008 ターミナルサービスについては、@IT さんに以前私が執筆した記事が公開されていますのでごらんください。

第8回 ターミナル・サービスによるクライアントの仮想化(前編)
http://www.atmarkit.co.jp/fwin2k/winsv2008/08ts_01/08ts_01_01.html

第9回 ターミナル・サービスによるクライアントの仮想化(中編)
http://www.atmarkit.co.jp/fwin2k/winsv2008/09ts_02/09ts_02_01.html

第10回 ターミナル・サービスによるクライアントの仮想化(後編)
http://www.atmarkit.co.jp/fwin2k/winsv2008/10ts_03/10ts_03_01.html

上の記事でも紹介していますが、RemoteApp を使用すると、ターミナルサービス上にインストールされたアプリケーションを、あたかも手元のコンピュータにインストールされているかのように使用することができます。

Server Core にも、管理を目的としたターミナルサービスが実装されており、RemoteApp を使用することができます。Server Core の RemoteApp を使用すれば、Server Core上のコマンドプロンプトを手元のコンピュータ上から簡単に起動することができるため、私はこの方法が気に入っています。

Server Core をインストールすると自動的にサービスが有効化されるので、役割のインストールを行う必要はありませんが、既定ではリモートからの接続は禁止されています。

それでは、Server Core でRemoteAppを使用するための手順を以下に示します。

  1. ターミナルサービスへの接続を有効にする
  2. ターミナルサービスはインストール直後に起動はされていますが、以下の2つの設定によってリモートからの接続が抑止されています。

    • ファイアウォールの「リモートデスクトップ(TCP接続)」 ルール
    • 以下のレジストリエントリの設定値
      System/CurrentControlSet/Control/Terminal Server 配下の fDenyTSConnections
      0:許可 1:拒否(規定値)

    上記を有効にするには、以下のコマンドをServer Core 上のコマンドプロンプトから実行します。

    scregedit /ar 0

    これで リモートからServer Core のターミナルサービスに接続することができるようになりました。他のポートを開く必要はありません。

  3. RemoteApp に CMD.EXE を登録する
  4. GUIが使用可能なリモートコンピュータから、 ターミナルサービスの RemoteApp マネージャを使用してアプリケーション(今回はCMD.EXE)を登録します。手順は、@IT の記事に書かれていますので、以下をご覧ください。

    第10回 ターミナル・サービスによるクライアントの仮想化(後編) - 3.ターミナル・サービス環境を整える(1)
    RemoteAppにアプリケーションを公開する

    リモートコンピュータが近くにない場合や、GUI が面倒という方は、以下のレジストリファイルをメモ帳等で作成し、拡張子 reg で保存後、Server Core 上で実行してください。もちろん、regedit を起動してから読み込むこともできます。

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TsAppAllowList\Applications\cmd]
    "CommandLineSetting"=dword:00000000
    "RequiredCommandLine"=""
    "IconIndex"=dword:00000000
    "IconPath"="c:\\Windows\\System32\\cmd.exe"
    "Path"="c:\\Windows\\System32\\cmd.exe"
    "VPath"=""
    "ShowInTSWA"=dword:00000001
    "Name"="cmd.exe"  

  5. rdp ファイルを作成する
  6. リモートコンピュータから Server Core のターミナルサービスに接続し、RemoteApp マネージャを使用して、上で作成した CMD.EXE 用の  rdp ファイルを作成します。rdp ファイルを自身のコンピュータ上のデスクトップに保存しておくことで、ダブルクリックするだけで Server Core のコマンドプロンプトを開くことができます。

    作成の手順についても、@IT の以下の記事に書かれていますのでご参照ください。

    第10回 ターミナル・サービスによるクライアントの仮想化(後編) - 4.ターミナル・サービス環境を整える(2)
    └ クライアントのデスクトップからRemoteAppを利用できるように構成する

    もし、リモートコンピュータから GUIで操作するのが面倒であれば、以下のファイルをコピペして、拡張子 rdp で自身のコンピュータ上に保存してください。太字部分は Server Core のIP アドレスですので、必要に応じて変更してください。

    redirectclipboard:i:1
    redirectposdevices:i:0
    redirectprinters:i:1
    redirectcomports:i:1
    redirectsmartcards:i:1
    devicestoredirect:s:*
    drivestoredirect:s:*
    redirectdrives:i:1
    session bpp:i:32
    span monitors:i:1
    prompt for credentials on client:i:1
    remoteapplicationmode:i:1
    server port:i:3389
    allow font smoothing:i:1
    promptcredentialonce:i:1
    authentication level:i:0
    gatewayusagemethod:i:2
    gatewayprofileusagemethod:i:0
    gatewaycredentialssource:i:0
    full address:s:192.168.7.21
    alternate shell:s:||cmd
    remoteapplicationprogram:s:||cmd
    gatewayhostname:s:
    remoteapplicationname:s:cmd.exe
    remoteapplicationcmdline:s:

 

これで準備は整いました。

rdp ファイルをダブルクリックすると、Server Core 上のコマンドプロンプトが開きます。初回はユーザーIDとパスワードの入力が求められますが、「資格情報の保存」をチェックしておけば、2回目以降問われることはありません。

ためしに、「 Set c 」を入力してみてください。%ComputerName% 環境変数に、Server Core のホスト名が格納されていることがわかるはずです。

で、この機能の便利で面白いところは、実はこれだけではありません。

コマンドプロンプトから、regedit や notepad を起動してみてください。

コマンドプロンプト上から起動したこれらのアプリケーションは、実は Server Core 上で動いています。notepad で「開く」や「保存」を選択すると、「懐かしいタイプのダイアログボックス」が開くことからも、Server Core 上の notepad であることがわかります。

 

Posted by junichia | 0 Comments
Filed under: ,

【OpsMgr 2007】SP1 リリース ~ 余談ですが 「配布アプリケーション」あらため「分散アプリケーション」

Operation Manager 2007 Service Pack 1 がリリースされました。

Operations Manager 2007 Service Pack 1 Upgrade Package - 日本語
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=ede38d83-32d1-46fb-8b6d-78fa1dcb3e85

先ほど、同じエバンジェリストの高添から実際に動いているところを見せてもらったのですが、ちょっと感動するくらいに変わっていました。

具体的な修正内容は、以下に書かれている通りです(現時点で英語ですが、日本語ページを準備中とのこと)。

What's New in Operations Manager 2007 Service Pack 1
http://technet.microsoft.com/ja-jp/library/bb821996(en-us).aspx

  • Webコンソールやレポートも含めたパフォーマンスの向上
  • コンソール上の検索ボックスで、ルールとモニタが検索できる
  • SNMP V1/V2 をサポートしたデバイスの監視
  • ダイアグラムを VISIO のVDX形式で保存
  • アラートの詳細表示画面でコピペ(ctrl+c / ctrl+v)ができるようになった
  • クラスタ構成を含め、バックアップとリストアが行いやすくなった
    ※OpsMge VSS Writer も実装された!
  • レポートをSharePoint上に発行
  • ローカライズ製品(日本語版とか)を使用した場合の表示系が改善された

などなど....

システム センター Operations Manager 2007 Service Pack 1 に修正される問題の一覧 (機械翻訳)
http://support.microsoft.com/default.aspx/kb/944443

機械翻訳結果がおかしい時は、是非ともフィードバックください!
たとえば「システム センター」じゃなくて「System Center 」だろ!とか、「 『could be』 が 『缶ある』 」になっているとか。

で、ですね。これまで Operations Manager 2007 を使用していた方はおそらく1つの疑問があったと思うのです。

「配布アプリケーションて いったい何?」

私も疑問でした。でも、今回の SP1 で謎が解けました。

分散アプリケーション」のことだったんですね....。

そっか、逆翻訳すれば、Distributed Application か....至極納得。

そんな部分も含めて修正されていますので、是非ともお試しください。

【Windows Server 2008】(sample)Server Core 用 無人応答ファイル & RODC 昇格用 無人応答ファイル

いよいよ the Microsoft Conference 2008 が目前に迫ったきました。いまデモンストレーションの最終調整を行っています。

私が担当するのは、「サーバー展開のための留意事項および Server Core の導入シナリオ」というセッションでして、なんというか...タイトルからして地味なわけですが....。それでも、アンケートによればこの時間帯最も注目を集めているらしく....自然と気合いが入ります。

当日のセッションは午前10時開始となりますが、いきなりデモンストレーションから入ります。

その場で Server Core をインストールしてしまおうというものですが、ただインストールしても面白くないので、当然無人で行います。加えて、コンピュータ名の設定やIPの設定、ドメインへの参加、ドメインコントローラへの昇格まで無人で行う予定です。

これが約18分~20分。この間に、すべての説明を完了させ、10時35分にはデモンストレーション画面に戻って、「Server Core の管理を始めるための準備」についてデモンストレーションをする予定です。

正直なところ、時間が厳しく、細かな説明はほとんどできません。

当然のことながら、無人セットアップファイル(unattend.xml)等の説明も行うことができません。

ということで、当日使用する unattend.xml および 読み取り専用ドメインコントローラに昇格するための無人応答ファイルをこちらに掲載しておきます。

[sample] unattend.xml for Windows Server 2008 Server Core

この中では以下の処理を行っています。

  • 既存パーティションの削除
  • 新規にパーティションを30GBで作成
  • Server Core のインストール
  • ドメインへの参加
  • administrator のパスワードの初期設定
  • IPアドレスとDNSの設定
  • コンピュータ名の変更
  • 読み取り専用ドメインコントローラ(RODC)への昇格
    ※以下のdcpromo用無人セットアップファイルを合わせてご覧ください

[sample] unattend file for promotion to rodc

この中では以下の処理を行っています。

  • 既存ドメイン(example.jp)への追加ドメインコントローラとして昇格
  • Active Directory にはRODC用アカウントは事前に作成していないことを前提
    2 ステージ インストール ではない)

RODCについてはこのblogでも何回か取り扱っていますので、以下も参考にしてください。

http://blogs.technet.com/junichia/archive/tags/RODC/default.aspx

 

当日、皆様のご来場を心よりお待ちしております。

 

Posted by junichia | 0 Comments

【Windows Server 2008】Volume Activation 2.0 ~ あなたの Vista アクティベーションされてますか?

みなさん、おつかれさまです。春の新規導入、リプレイス作業は無事に完了しましたか? 学校関係の皆さんは、特に、大量導入やメンテナンスが完了し、ほっと一息といったところでしょうか。

大量のクライアントやサーバーを導入される企業や学校では、ボリュームライセンスを使用されているところが多いと思います。

既にご存じのとおり、Windows Vista および Winodws Server 2008 では、アクティベーションのプロセスが変更されました。新しいアクティベーションは、Volume Activation 2.0 (VA 2.0) と呼ばれています。

さて、なぜに blog でこんな話題を出したかといえば、VA 2.0 は、その仕組み上「設計」が必要だからであり、エンジニアの皆さんに VA 2.0 を理解いただく必要があるからです。「ライセンス関係は営業の仕事」「ライセンスはお客様管理」と突き放すことができない時代になったわけです。

従来のボリュームライセンスでは、契約に対して「ボリュームライセンスキー」が発行され、インストール時にはそれを入力する必要がありました。このプロセスではインターネットに接続して個々にアクティベーションする必要がないため、大量のクライアント配信時は非常に便利でした。が、問題もありました。それは、ライセンスの流出です。ボリュームライセンス用のメディアさえあれば、ライセンス管理者のあずかり知らぬところで(たとえば自宅とか)OSを不正利用することが可能だったわけです。これは脅威です。マイクロソフトにとってももちろん脅威ですが、ライセンス管理者および所属する団体自身の信頼をも低下させる可能性があります。

とはいえ...1台ごとにアクティベーションするというのは...コストがかかりすぎる...。

そこで、VA 2.0 では、1台から数台の「ライセンス管理用コンピュータ」にライセンス管理を任せてしまうことができるようになりました。この「ライセンス管理用コンピュータ」を、「KMS ホスト」といいます。KMS とは Key Management Service の略です。ボリュームライセンス契約を行うと、1つの KMSキー が発行され、このキーを設定したコンピュータが「KMSホスト」となります。KMS ホストとなれるのは以下の通りです。

KMSキーをインストールするには、コマンドプロンプトより、以下のコマンドを使用します。

slmgr -ipk <KMSキー>

slmgr はライセンス管理に関するスクリプトです。内部では WMI を使用してライセンス情報の取得や設定を行っています。重要なコマンドですので、是非覚えておいてください。 時間がとれれば、ライセンス管理の WMIクラスについて解説してみようかと思います。

KMS ホストとなったコンピュータは、DNS サーバーにKMSホストであることを示す SRV レコード( _VLMCS )を登録します。

KMSホスト以外の Vista および Windows Server 2008 は、DNS サーバーから KMS ホストの場所を検出し、自身のライセンス認証のために TCP 1688 ポートを使用して KMS ホストにアクティベーション依頼を行います。

流れを示すと以下のようなイメージです。

[MSアクティベーションセンター] ―(Internet)― [KMS ホスト] ―(LAN)― [KSM クライアント]

この仕組みのメリットは、OSインストール時にライセンスキーを入力しなくてもよいということです。DNS の場所さえ明確であれば、あとはOSが勝手にアクティベーションをしてくれます。

とはいえ、管理者にとって怖いのは、「アクティベーションされたと思っていたのに、されていなかった!」ときです。

KMS の初期導入時の猶予期間は Windows Vista の場合 30日、Windows Server 2008 の場合には 60日です。

これを踏まえて想像してみてください。

(以下妄想モード)

ゴールデンウィークが明けた5月最初の授業。

とある大学のパソコン教室。

学生が次々とログオンしている。

「あれ?なんかおかしい」

学生がログオンしたPCの画面には、「Windows ライセンス認証の手続きをいますぐ行ってください」という画面が...。

学生はわけがわからず [キャンセル] ボタンをクリックする。

とたんに...PC はライセンスされていない状態となり利用が制限されてしまう....。

その日の授業は中止となった。

怒りがおさまらない教授は...情報センターの扉を乱暴に開け......

 (怖いので妄想モードを終了します)

か、考えただけで胃が痛いです。

みなさんのシステム、大丈夫でしょうか?

そろそろゴールデンウィークに入ります。

不安なエンジニアの方々は...是非とも一度確認してみてください。

簡単な手順を以下に示します。

  1. クライアントのアクティベーションを調べる
  2. まずは クライアントのアクティベーションが有効かどうかを調べましょう。クライアントのコマンドプロンプトで以下のコマンドを入力します。これにより、クライアント側のライセンスの有効期限が表示されます。もし有効期限が 30日より長ければひとまず安心ですが、2.の方法で念のためにアクティベートを試してみてください。

    slmgr -xpr

  3. クライアントをアクティベートしてみる
  4. もし有効期限が30日未満だったら..以下のコマンドでアクティベーションを試みてください。

    slmgr -ato 

  5. KMSホストが有効かどうかを調べる
  6. クライアントをアクティベートできない場合、KMS ホスト側に問題がある可能性があります。以下のコマンドで状態を調べてください。クライアント側で実行すれば、どのKMSホストを参照しているかを確認することができます。KMSホスト側で実行すれば、KMSホストの状態を確認することができます。

    slmgr -dli

    または

    slmgr -dlv (これを使用すると詳細モードで表示されます)

    もし、存在しないKMSクライアントが、存在しない KMS ホストを見ていたりした場合、以下のコマンドで強制的に参照先のKMSホストを変更することができます。

    slmgr.vbs -skms <KMSホストのIPアドレス>

  7. KSM ホストをアクティベートする
  8. 3.で「ライセンスされていない」と出力されてしまったら...すぐにアクティベートしましょう。方法はクライアントと同じです。アクティベートがうまくいったら、再度 -dli オプションで状態を確認してみましょう。

    slmgr -ipk <KSMキー>  (KMSキーのインストール に使用します)

    slmgr -ato  (インストールしたKMSキーでアクティベートするために使用します)

  9.  MAK(Multiple Activation Key)を使用する

どうしてもアクティベーションができない場合、もしかすると KMS を使用するための既定のクライアント台数に達していないことも考えられます。Windows Vista をアクティベートする場合、「最低25台の物理的なクライアント」が必要なのです。まずは以下のコマンドで「現在の数」として表示されているクライアント台数を確認してみてください。

slmgr -dli

または

slmgr -dlv (これを使用すると詳細モードで表示されます)

ここに表示されている「現在の数」と実際のクライアントの台数が明らかに異なる場合、一部のクライアントが KMS ホストにアクセスできていない可能性が考えられます。TCP 1688 ポートでクライアントから KMS ホストにアクセス可能かどうかを確認してみてください。

もし、すぐにはポートの状態がわからない場合、KMS の代替策としてMAK という方法が用意されています。KMS キー発行時、同時に MAK キーも発行されているはずです。

MAK の使い方のパターンはいくつか用意されているのですが、手っ取り早いのはクライアントに直接設定してしまうことです。直接設定するには、KMS同様、以下のコマンドを使用します。もちろん、上記コマンドではなく、[コントロールパネル]-[システム]にある「Windowsライセンス認証」を使用することもできます。

slmgr -ipk <MAKキー>

MAKキーが設定されると、クライアントは従来のようにインターネット上のアクティベーションセンターにアクセスし、アクティベーションを完了します。

今回はMAK を単なる回避策としてご紹介しましたが、本当は、事前に KMS を使用するのか、MAK を使用するのか、もしくは併用するのかを決定し、Firewall の設定を含めた設計が必要です。

KMS と MAK に関して理解を深めるために、是非とも以下のドキュメントをお読みください。KMS と MAK について非常にわかりやすく解説されています。

    ボリューム アクティベーション 2.0 KMS 編 ステップ バイ ステップ

    ボリューム アクティベーション 2.0 MAK 編 ステップ バイ ステップ

 内部の動き等について詳しく知りたいという方は、英語になりますが以下のサイトがよいでしょう。

    Volume Activation 2.0 for Windows Vista and Windows Server 2008 (英語)
    http://technet.microsoft.com/en-us/library/bb892849.aspx

 

「急に使えなくなった!」といったことがないよう、くれぐれも、くれぐれも ご注意ください。

Posted by junichia | 0 Comments
Filed under: , , ,

【Windows Server 2008】Server Core に時計はあるか? ~ その2 BGInfo を使用する

前回の続きです。

【Windows Server 2008】Server Core に時計はあるか? ~ その1

【時計の実装例 その2】 BGInfo を使用する

BGInfo はご存知でしょうか?マイクロソフトのセミナー等に参加されたことがある方ならば、Zoomit とともにご覧になったことがあるかと思います。BGInfo は、システムの情報(コンピュータ名やIPアドレス等)をはじめとする任意の文字列を壁紙に焼き付ける機能を持っています。デモ機を多く抱えるエバンジェリストの心の友と言っても過言ではないツールです。

以下の画面の右半分に書かれているのが、BGInfo によって書き込まれた情報です。

BGInfo は Microsoft TechNet サイト内の Windows Sysinternals で配布されているツールです。Windows Sysinternal では多くの使いやすいツールが提供されていますので、IT Pro の方々は是非とも一度チェックしてみてください。

ここまで書くと、これからやることがバレバレですね。そうです。時刻を背景に書き込んでしまおうということです。BGInfo のよいところは、背景として設定されている画像があっても、その画像と文字列をマージしてくれるというところです(背景画像を更新してしまうわけではなく、マージされた画像はテンポラリのbmpファイルとして保存され、それが表示されます)。 

ではさっそくはじめましょう。


※以下の作業はServre Core 以外のマシンで行ってください。なぜならば、Server Core ではブラウザが使えませんし(コマンドブラウザが使える可能性はありますが...)、標準で ZIPファイル を解凍する手段がありません。

はじめに、BGInfo v4.12 をダウンロードしてください。ZIP形式で保存できますので、解凍して BGInfo.exe を取り出します。

取り出した BGInfo.exe を Server Core にコピーしましょう。ひとまず、USBメモリか何かでコピーするのが便利でしょう。

USBメモリを Server Core から安全に取り出すには、以下を参照してください。 

【Windows Server 2008】Server Core に挿した USB ドライブを安全に取り出すには


※ 以降は Server Core で行ってください

Server Core 上で早速 BGInfo を起動してみましょう。以下のような画面が表示されます。

でも油断しないでください。規定では、10秒後に勝手に終了してしまいます。これは、ログオンスクリプト等で起動した場合にいつまでも常駐して邪魔をしないようにするためです。

今回は BGInfo の環境設定を行うので終了しないようにします。そこで、起動直後、以下の画面の赤丸部分をクリックしてください。

上記画面の左側に表示されている「Boot Time: <Boot TIme >」といった文字列が画面に表示する文字列になります。ご覧頂くとだいたい想像できると思いますが、既定ではブート時間やCPUの種類等が表示されます。上記画面は初期設定のままなので、ひとまずこれをクリアしてしまいましょう。もちろん、時刻と一緒に表示したいのだ!ということであれば残しておいても結構です。

標準では現在の時刻を表示するためのフィールドは用意されていません。そこで、時刻を表示するためのフィールドを作成します。

画面の右側にある [Custom] ボタンをクリックしてください。以下のような画面が表示されます。

次に、上記画面 左下の [New] をクリックすると、以下のような画面が表示されます。

 

まずは、「年」を定義しましょう。[Identifier] に 「YEAR」と入力してください。別の名前でも問題はありませんが、識別しやすいようにしておきます。

[Replace identifier with:] で [WMI Query] を選択します。これは何を意味するか...WMI クエリーの結果を受け取って表示することができるんですねぇ。これは便利です。

ということで、[Path] にはWMIクエリーを入力するわけですが、ソラで入力するのは厳しいですよね。そこで [Browse] をクリックしてください。以下のように、WMI のクラスとプロパティを選択する画面が表示されます。ここに表示されるクラスとプロパティは bginfo にハードコーディンスされているものではなく、システムから直接拾ってきているところがニクイです。

ここでは、上記のように、WMI Class に 「Win32_LocalTime」、Class Property に 「Year」を選択しました。Win32_LocalTime は、現在選択されているロケールにあった日時を返すクラスです。日時関係では他にも、Win32_CurrentTime や Win32_UTSTime がありますが、ここで使用するには Win32_LocalTime が最も適しています。

この状態で、[OK] を2回クリックすると、以下のような画面に戻ります。

もうコツはつかんでいただけたと思います。同じ作業を、「月」「日」「時」「分」についても繰り返し、最終的に以下のようにしてください。

 上記画面でOKをクリックすれば、ひとまず準備完了です。

Fields には、追加した フィールドがリストされています。例えば、「Year」を選択して [<- Add] をクリックすると以下のように表示されます。

もし、以下の状態で [Apply] をクリックすれば、デスクトップには 2008 とだけ表示されます。

ちなみに、実際に日時が格納されているのは <YEAR> や <MIN> です。なので、デスクトップに、

YYYY/MM/DD HH:NN

と表示するのであれば、以下のように設定します。

最後に、 [Position] ボタンをクリックして日時の表示場所を設定し、Apply をクリックすればOKです。

私のデスクトップ(Vistaですが)では、以下のように表示されています。わかりやすいようにフォントを大きく設定してありますが、背景とマージされているところがご覧いただけると思います。

さて、これで終わりかと言えばそうではありません。

時刻を表示するたびに、BGInfo を起動してApply をクリックしなければならないなんてのはナンセンスです。

そこで、BGInfo を起動して Apply をクリックする操作を自動的に行うようにします。

Server Core のコマンドプロンプト上から、以下のように入力してみてください。<path> は bginfo をコピーした場所です。

<path>\bginfo /timer:0

特にダイアログ等が表示されず、背景の日時が変わったと思います。あとはご想像通りです。タスクマネージャで定期的に実行すればよいわけです。

以下のように schtasks コマンドを使用して、上記コマンドをタスクマネージャに登録しましょう。以下のコマンドでは、1分に1回自動的に bginfo を実行し、背景を書き換えています。

schtasks /Create /SC MINUTES /MO 1 /TN showDateTime