September, 2008 - フィールドSEあがりの安納です - Site Home - TechNet Blogs

フィールドSEあがりの安納です

Microsoft Evangelist -- Junichi Anno

September, 2008

  • 【Management】DPM 2007 の初期設定を自動化 その2 DPM保護エージェントをインストールする

    ※今回ちょっと長いです。すんません。

    DPMの環境設定を自動化しようシリーズの 2 回目です。

    1. バックアップ領域となるディスクを認識させる
    2. 保護対象となるサーバー(保護サーバー)にエージェントをインストールする  ← 今回
    3. 保護グループを作成する

    前回はセットアップ直後のDPMに、ボリュームを追加してストレージプールを作成しました。

    【Management】DPM 2007 の初期設定を自動化 その1 ディスクを追加する

    今回は、保護対象となるサーバーに対し、スクリプトを併用してエージェントをインストールしてみます。

    ただ、エージェントのインストール自体は、できることならGUIから行っ���ほうがよいです。なぜならば、そのほうがはるかに簡単だからです。DPMサーバーと保護サーバーの間に Firewall があるためにRPCを使用したリモートからのプッシュインストールが行えないといった理由が無い限りは、管理コンソールから行ってください。

    とはいえ、あえて手動で行ってみると、リモート管理に関する汎用的で細かなスキルを身につけることができますので、スキルアップを目的に挑戦してみるのならばよいかもです。

    では、やってみましょう。

    エージェントを手動でインストールするには2つのステップが必要です。

    ① DPM保護エージェントを保護サーバーにインストール
    ② DPMサーバーに、エージェントがインストールされた保護サーバーを認識させる(PowerShell)

    それでははじめましょう。

    ① DPM保護エージェントを保護サーバーにインストール

    保護エージェントのインストールの流れは以下の通りです。

    • 保護サーバーの Windows Firewall サービスを停止する(無効にするのではなく、サービスを停止する) 
    • 保護サーバーにエージェントをインストール
    • 保護エージェントの修正パッチがあれば、それを適用する
    • Windows Firewall サービスを起動
    • 保護エージェントに対して通信を許可するように Windows Firewall を設定する

    上のリストにはとても重大な問題が含まれています。

    それは、手順の一番上にある、保護サーバー上の Firewall サービスの停止という作業です「無効」ではありません。「停止」です。「停止」しておかないと、以下のように、エージェントのインストール時に 80070643 エラーが発生して DPMAgentInstaller が失敗します。これは、どうやら各国語にローカライズさらたバージョンでのみ発生する問題のようです。

    dpmagentinstaller_error_80070643
    Installing agent and configure for dpmserver =[ServerName]
    DPMAgentInstaller failed with errorcode =8070643, error says:
    Check log files in [WINDIR]\Temp\MSDPM*.LOG
    Press Enter key to close the window

    が、慣れた方ならば何か違和感を感じますよね?そうです。Firewallサービスを無効にするならまだしも、停止してしまったらリモートからの通信を受け付けられないじゃんか!ということです。リモートコンピュータのサービスの停止は SC コマンドで簡単に行えます。が、Firewall サービスを停止してしまうと、二度とコマンドを受け付けることができなくなります。当然、Firewall サービスを起動することせえもできなくなりますから、これはもう、厄介どころの騒ぎではありません。現時点では、管理コンソールを使わず手動でインストールする場合には、リモートからのインストール制御は事実上不可能であると言ってもよいでしょう。

    誠に残念ですが、ここでは保護サーバー上でバッチファイルを実行するという前提でお話を進めていきます。

    WinRM についてご存じない方は、以下の記事をご参照ください

    せっかくなので、WinRM/WinRS 関連のTIPSをご紹介しておきます。

    上記のようなバッチファイルをWinRSでリモートコンピュータに発行しようとすると、既定では以下のように「アクセスが拒否されました」エラーが発生します。

    image

    これは、発行先のコンピュータを経由してさらに別のコンピュータ(この場合には \\DJ-DPM01 )にアクセスしようとしているからです。おそらくお聞きになったことがあると思いますが、あるコンピュータを経由して別のコンピュータに接続する場合には、デリゲート(委任)機能を有効にしなければなりません。

    委任を有効にするには、「Active Directory ユーザーとコンピュータ」で保護サーバーのプロパティを開き、[委任]タブで、「任意のサービスへの委任でこのコンピュータを信頼する」をチェックします。

    image

    ーー 余談 ーー

    実は、舞台裏を明かしますと、問題はこれだけではありませんでした。

    以下のバッチファイルを見てください。ご覧頂くとお分かりの通り、

    Firewallサービスの停止 → エージェントのインストール → Firewallサービスの起動

    までを一気にやってしまおうとしています。こうしたバッチファイルを WinRS で保護サーバーに発行してしまえば、一度に処理を指示できることになるので、Windows Firewall サービスが停止してしまってもうまくいくかなと考えたのですが....どうしてもインストールの途中で処理が止まってしまい、うまくいきませんでした。原因追究にまるまる1日使ってしまいましたが、結局ダメでした。

    net stop MpsSvc
    \\DJ-DPM01\i386\DPMAgentInstaller.exe /q DJ-DPM01.Example64.jp
    net start MpsSvc

     エージェントをインストールするには、保護サーバー上で、DPMサーバの \Program Files\Microsot DPM\DPMAgents\RA\<i386 or amd64> 配下にある DPMAgentInstaller.exe を、DPMサーバー名を引数として実行します。つまり、以下のようなかんじです。

    DPMAgentInstaller.exe /q DJ-DPM01.Example64.jp

    保護サーバーのプラットフォームに合わせて、i386 か amd64 は選択してください。

    この操作をリモートの保護サーバー上で実行させるわけですから、DPMサーバー上の i386 または adm64 フォルダを共有化しておくとよいでしょう。

    i386 フォルダを、i386 という名前で共有化したとすれば、保護サーバーからは以下のようにして実行することができます。

    \\<DPMServerName>\i386\DPMAgentInstaller.exe /q DJ-DPM01.Example64.jp

    エージェントのインストールが完了したら、Firewallサービスを起動しておきましょう。

    次に 保護サーバー側の Windows Firewall の設定を行います。本来は SetDpmServer.exe というコマンドで行うのですが、やはりローカライズ版では不具合があるらしく手動でFirewallの例外の設定を行う必要があります。もちろん、DPM管理コンソールからインストールすれば自動的に例外を作成してくれます。

    DPM管理コンソールを使用してリモートインストールを行うと、DPMRA.exe というプログラムに対して、以下のような例外ルールが作成されます。

     image image image

    上記と同じルールをコマンドから実施するには、おなじみ netsh を仕様します。

    netsh advfirewall firewall add rule name="dpmra" dir=In action=Allow protocol=Any Program="%PROGRAMFILES%Microsoft Data Protection Manager\DPM\bin\DPMRA.exe"

    この後、再起動すれば保護サーバー側の作業は完了です。

    以上の作業をバッチファイルで表現すると、以下の通りです。

    net stop MpsSvc
    \\<DPMServerName>\i386\DPMAgentInstaller.exe /q DJ-DPM01.Example64.jp
    net start MpsSvc
    netsh advfirewall firewall add rule name="dpmra" dir=In action=Allow protocol=Any Program="%PROGRAMFILES%Microsoft Data Protection Manager\DPM\bin\DPMRA.exe"

    ② DPMサーバーに、エージェントがインストールされた保護サーバーを認識させる(PowerShell)

    仕上げの作業として、DPMサーバーに保護サーバーを認識させます。これは専用の PS1 ファイルが提供されています。

    DPM管理シェルを起動して、以下のパスに移動してください。

    C:\Program Files\Microsoft DPM\DPM\bin

    ここで、Attach-ProductionServer.ps1 を以下の書式で実行します。引数を指定しなければ、プロン���トが表示されます。 

    Attach-ProductionServer.ps1 <DPM server name> <production server name> <user name> <password> <domain>.

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

     image

    これで完了です。

    以下のように、DPM管理コンソールにエージェントがリストされていれば成功です。

    image

    エージェントの更新欄に「利用可能な更新」が表示されている場合にはエージェントをアップグレードできますので、クリックして最新にしておきましょう。

    いやー長かったですね。とても面倒です。

    やはり、手動ではなく、管理コンソールを使用することをお勧めします。

    次回は、保護グループの作成を行いましょう。

  • 【Management】DPM 2007 の初期設定を自動化 その2 番外編 ~ Attach-ProductionServer.ps1 の中身を見る

    以前投稿した、以下の記事の続きです。

    その2の②において、DPMサーバーに保護サーバーを認識させる際に、Attach-ProductionServer.ps1 を使用しました。これは、DPM で提供されているスクリプトです。

    じゃ、この中身はどうなっているのか、せっかくなので見ておきましょう。

     

    これはよいですね。おなじみの引数の設定です。

    param([string] $DPMServerName, [string] $PSName, [string] $UserName, [string] $Password , [string] $Domain)

    ここも大丈夫ですね。おなじみ、 DPMサーバーが引数として指定されていなければ、プロンプトを出してDPMサーバーの入力を求めています。

    if(!$args[0])
    {
       if(!$DPMServerName)
       {
           $DPMServerName = read-host "DPMServer:"
       }
    }

    もし、-? または -help が引数として指定されていれば、書式を表示しています。

    else
    {
      if(("-?","-help") -contains $args[0])
      {
        write-host Usage::
        write-host Attach-ProductionServer.ps1 -DPMServername [dpmserver] -PSName [Production server] -Username [PS admin username] -Password [Password] -domain [User domain]
        write-host Help::
        write-host -Registers a server to be protected with this DPM computer. The target server should meet the following requirements: Have a DPM agent installed. DPMMachine name must be provided as the DPM server when installing this agent. Alternatively, you can install the agent without specifying the DPM server and later configure it using the SetDpmServer.exe utility.
        write-host
        exit 0
      }
      else
      {
        write-host "Usage -? for Help"
        exit 1
      }
    }

    以下も、引き続き、引数チェックをしています。

    if(!$PSName)
    {
        $PSName = read-host "PSName:"
    }
    if(!$UserName)
    {
        $UserName =  read-host "UserName:"
    }
    if(!$Password)
    {
        $Pwd = read-host "Password:" -assecurestring
    }
    else
    {
        $Pwd = ConvertTo-SecureString $Password -asPlainText -force
    }
    if(!$Domain)
    {
       $Domain = read-host "Domain:"
    }

    DPMサーバーに接続しています。ここで取得した $dpmserver オブジェクトが重要ですので覚えておいてください。

    $dpmServer = Connect-DPMServer $DPMServerName
    if (!$dpmServer)
    {
        Write-Error "Unable to connect to $dpmServerName"
        exit 1
    }

    ここです。上で取得した $dpmServer のメソッドである、 「AttachProductionServer」を使用して、保護サーバーをDPMサーバーにアタッチしています。これがうまくいくと、DPM管理コンソールのエージェント一覧に、保護サーバーがリストされます。

    #Call Attach production server method on DPM server
    $dpmServer.AttachProductionServer($PSName, $UserName, $Pwd, $Domain)

    以下は、エラーが発生した場合の処理です。エラー番号やメッセージを画面に表示します。

    trap
    {
        Write-host "There is failure while attaching production server" -ForeGroundColor Red
        $e = $_.Exception
        write-Error $e.Error.Problem
        write-host $e.Error.Resolution -ForeGroundColor Green
        #Dispose DPMserver object
        if ($dpmServer)
        {
           $dpmServer.Dispose()
        }
        exit 1
    }

    最後に、DPMサーバーとの接続を解除して処理完了です。

    #Dispose DPMserver object
    if ($dpmServer)
    {
       $dpmServer.Dispose()
    }
    Write-Host "Attached ProductionServer successfully" -ForeGroundColor Green

    大したスクリプトじゃなかったですね。見るまでもありませんでした。

    参考までに、以下のコマンドで出力した、Connect-DPMServer で取得したオブジェクトの member を こちら に掲載しておきますので、AttachProductionServer 以外のメソッドやプロパティについても確認してみてください。DPMのコマンドレットは、Connect-DPMServer を起点にしていることがわかると思います。

    Connect-DPMServer DJ-DPM01 | Get-Member | format-list

  • 【Community】Windows Server 2008 ユーザーアカウント移行コミュニティ が発足(オーナーは 木下 佳織 さん)

    こんにちは。

    コミュニティ関連が続きまして恐縮です。

    新コミュニティ発足のご連絡をいただいたので、この場をかりてご紹介します。

    その名も

    Windows Server 2008 ユーザーアカウント移行コミュニティ
    http://groups.msn.com/admt2008/

    うわー濃いコミュニティだなぁ....怖いです。

    オーナーの木下さん曰く、

    仕事柄 お客様システムの移行をする機会が多いのですが、情報が少なくて困ることもしばしば...情報が無いなら自分が作っちゃえ!ということでコミュニティを発足しました。世の中の移行経験者の方々と情報交換をしつつ、失敗しない移行方法を模索したいです。

    とのこと。

    興味のある方は GO! です。

    あ、ちなみに、ROM禁止(笑) とのことです。

    それにしても...このように、少しずつでも情報発信していただける方が増えるというのは、とてもうれしいことです。

    みなさんもいかがでしょう、ご自分の得意分野でコミュニティを作ってみませんか?ニッチでよいのです。

    情報発信者に情報は集まる と言われます。普段の業務では得られない情報や、人とのつながりができるはず!

  • 【Management】DPM 2007 の初期設定を自動化 その3-1 まずは基礎知識から-保護グループの情報取得

    DPM2007シリーズもそろそろ終盤です。

    前回までで、DPMのエージェントインストールまでが完了しました。

    ここからは保護グループの作成を行うのですが、ちょっと複雑なので、まずは保護グループの情報取得、つまり設定内容を参照する手順を通して、オブジェクト構造のイメージをつかんでください。

    保護グループのバックアップと回復に関するポリシーには、バックアップの頻度や回復の長期的要件および短期的要件に関する情報が格納されています。管理コンソールの設定画面で見ると、以下のような情報です。

    image
    ファイルサーバーに関する保護ポリシー

    image
    SQL Server に関する保護ポリシー

    上記の保護ポリシーの情報を取得するには、保護グループのインスタンスを Get-PolicyObjective コマンドレットに渡します。

    さっそく管理シェル上で保護グループの保護ポリシーを取得してみます。

    ここでは、上の2つ(ファイルサーバーとSQL Server)に関する保護ポリシーを取得してみます。

    まずは、保護グループのインスタンスを取得します。おなじみの方法ですね。DJ-DPM01 はDPMサーバー名です。

    PS C:\> $PG = Get-ProtectionGroup DJ-DPM01
    PS C:\> $PG

    Name                                    Protection method
    ----                                    -----------------
    ProtectionGroup01                       短期的 (ディスクを使用)
    ProtectionGroup02                       短期的 (ディスクを使用)

    次に、それぞれの保護グループ(ProtectionGroup01 と 02)の保護ポリシーを取得します。

    保護ポリシーの取得は、Get-PolicyObjective を使用します。注意しなければならないのは、Get-PolicyObjective に渡せるのは1回に1つの保護グループだけです。

    PS C:\> Get-PolicyObjective -ProtectionGroup $PG[0] -ShortTerm

    Retention Range                 Synchronization Frequency
    ---------------                         -------------------------
    5 日                                     15 分ごと

    PS C:\> Get-PolicyObjective -ProtectionGroup $PG[1] -ShortTerm

    Retention Range                 Synchronization Frequency
    ---------------                         -------------------------
    5 日                                     15 分ごと

    ひとまずこれで終わりなのですが、正直、なんのこっちゃ?ってかんじですよね。上の図と照らし合わせてみても、まったく情報が足りません。

    もうすこし掘り下げましょう。

     

    ◆「保存期間」の取り方

    「保存期間」は、Get-PolicyObjective コマンドレットのメソッドである、Get-RecoveryRange() を使用します。以下の例では、$PG[1] つまりProtectionGroup02 の保存期間を取得しています。注目していただきたいのは、Get-RecoveryRange()に対して、さらにRangeプロパティ、およびUnitプロパティを使用しているところです。Get-RecoveryRange()で取得しただけでは、使い勝手が悪いですよね。なので、「期間(range)」と「単位(Unit)」それぞれを個別に取得しています。

    PS C:\> $PO_1 = Get-PolicyObjective -ProtectionGroup $PG[1] -ShortTerm
    PS C:\> $PO_1

    Retention Range                  Synchronization Frequency
    ---------------                         -------------------------
    5 日                                      15 分ごと

    PS C:\> $PO_1.Range
    PS C:\> $PO_1.Get_RecoveryRange()

                                      Range                                Unit
                                      -----                                    ----
                                          5                                    Days

    PS C:\> $PO_1.Get_RecoveryRange().Range
    5
    PS C:\> $PO_1.Get_RecoveryRange().Unit
    Days
    PS C:\>

     

    ◆同期のスケジュール~ファイルサーバーの「同期の間隔」と「ファイルの回復ポイント(シャドウコピー)の作成時間」の取り方 

    同期の間隔を取得するには、Get-Schedules() メソッドを使用します。

    以下は、ファイルサーバーを含んだ保護グループの同期スケジュールを取得して表示したものです。 同期間隔が15分と表示されているのに加えて、シャドウコピーの作成時間も表示されています。ファイルサーバーの場合、「同期」とは「NTFS ジャーナルファイル」の同期を意味し、回復ポイントが作成されるわけではないことに注意する必要があります。じゃ、NTFS ジャーナルファイルってなんで同期してるの?ってことになりますが、NTFSジャーナルファイルを使用して、手動で回復ポイントを作成することができます。管理者が、「あ、そうだ、今の時点で回復ポイントを作っておこう」という意思に基づき手動で(もちろんスクリプトも可能)回復ポイントを作成しなければ、「ファイルの回復ポイント(以下の出力では、「シャドウコピー」と表示されています)」のスケジュールでのみ回復ポイントが作成されます。

    PS C:\> $PO_0.Get_Schedules()

    Schedule type                     Schedule
    -------------                           --------
    同期                                    15 分ごと
    シャドウ コピー                      0:00、 1:00、 8:00、 12:00、 18:00 ...

    ちなみに、以下の画面を見てください。回復時間に表示されているのは、上の出力結果である、0:00/1:00/8:00/12:00 であることがわかります。15分ごとに回復ポイントが作成されているのであれば、回復時間の一覧には、0:00/0:15/0:30。。。。などぞずらっと回復ポイントの一覧が表示されるはずですが、そうではありません。

    image

    さて、PowerShellの話に戻ります。上記のままでは、プログラム上、使い勝手が悪いので、もっと細かな単位で取得したいですね。そこで、 Get_Schedules() メソッドを使用して、一旦スケジュールのインタンスを取得します。

    PS C:\> $objShc  = $PO_0.Get_Schedules()

    $objSch には、「同期」のスケジュールと 「シャドウコピー」のスケジュールが格納されているので、アレイ値であることが予測できます。

    それぞれの JobTypeプロパティを見てみましょう。「同期」は「Replication」、「シャドウコピー」は「ShadowCopy」というJobTypeで識別されていることがわかります。$objSch のインデックスに注意しながら見てください。「0」がReplication、「1」がShadowCopy であることがわかります。

    PS C:\> $objSch[0].JobType

    Replication

    PS C:\> $objSch[1].JobType

    ShadowCopy

    PS C:\> $objSch[0].JobTypeString

    同期

    PS C:\> $objSch[1].JobTypeString

    シャドウ コピー

    Replication、ShadowCopy それぞれのJobType のタイミングを見てみます。

    JobType = Replicaton のタイミングは、Frequency プロパティで参照します。

    PS C:\ $objSch[0].Frequency

    15

    PS C:\

    JobType = ShadowCopy のタイミングは  TimesOfDay プロパティ および TimesOfWeek で参照することができます。 冒頭の画面「ファイルサーバーの保護ポリシー」と比較してみてください。

    TimesOfDay には今日の日付も入っていることがわかります。これは、当日分のスケジュールに展開して表示されるためです。

    設定を行った時間に影響されているのか、もしくはオフセットとして自動的に設定されたものなのか、「4分」という微妙なずれが見ているのが気になりますが...(笑)。

    PS C:\> $objSch[1].TimesOfDay

    2008年9月12日 8:04:00
    2008年9月12日 1:04:00
    2008年9月12日 12:04:00
    2008年9月12日 0:04:00
    2008年9月12日 18:04:00

    PS C:\> $objSch[1].WeekDays

    Mo
    Tu
    We
    Th
    Fr
    Sa

    PS C:\>

    もうお気づきかと思いますが、TymesOfDay および WeekDay も複数値です。よって、以下のように個々の設定値を取りだすことができます。

    PS C:\> $objSch[1].TimesOfDay[4]

    2008年9月12日 0:04:00

    PS C:\> $objSch[1].WeekDays[3]

    We

     

    # はぁぁぁ、長かったですね。構造について、なんとかご理解いただけましたか?

    # 休むと余計に疲れるので、続けましょう。

     

    さて、一方、以下はSQL Server を含んだ保護グループの同期スケジュールを取得して表示したものです。同期間隔が15分と表示されているのに加えて、高速完全コピーの作成時間も表示されています。SQL Server をはじめとするアプリケーションサーバーの場合、ファイルサーバーのバックアップとは「同期」の意味が異なります。アプリケーションサーバーでは、「同期」=「回復ポイントの作成」を意味しています。「高速完全バックアップ」については、ご存じの通り「フルバックアップの再作成」です。よって、ファイルサーバーのように単にジャーナルファイルが同期されるわけではなく、きちんと回復可能な状態として保存されます。

    PS C:\> $PO_1.Get_Schedules()

    Schedule type                     Schedule
    -------------                           --------
    同期                                    15 分ごと
    高速完全                              20:00 月、 火、 水、 木、 金、 土

    以下の画面を見てください。SQL Server の回復画面です。ファイルサーバーとは異なり、同期の間隔(15分)単位で回復ポイントが作成されていることがわかります。

    image

    それでは、ファイルサーバー同様、GetSchedules() メソッドで取得した値を、細かく掘り下げてみましょう。

    まずは、JobType です。同期が「Replication」であることはファイルサーバーと同様です。高速完全バックアップは「FullReplicationForApplication」という識別名で識別されていることに注意してください。

    PS C:\> $PO_1.Get_Schedules()[0].JobType

    Replication

    PS C:\> $PO_1.Get_Schedules()[1].JobType

    FullReplicationForApplication

    PS C:\> $PO_1.Get_Schedules()[0].JobTypeString

    同期

    PS C:\> $PO_1.Get_Schedules()[1].JobTypeString

    高速完全

    PS C:\>

    回復ポイントの取得間隔(Frequency)や、高速完全バックアップの取得時間(TimesOfDay)、および高速完全バックアップの実施曜日(WeekDays)についてはファイルサーバーの場合と同様ですので、以下をご覧ください。

    PS C:\> $PO_1.Get_Schedules()[0].Frequency

    15

    PS C:\> $PO_1.Get_Schedules()[1].TimesOfDay

    2008年9月12日 20:00:00

    PS C:\> $PO_1.Get_Schedules()[1].TimesOfDay[0]

    2008年9月12日 20:00:00

    PS C:\> $PO_1.Get_Schedules()[1].WeekDays

    Mo
    Tu
    We
    Th
    Fr
    Sa

    PS C:\> $PO_1.Get_Schedules()[1].WeekDays[4]

    Fr

    PS C:\>

    ということで、長くなりましてすみません。

  • 【Management】DPM 2007 の初期設定を自動化 その1 ディスクを追加する

      Tech・Ed 中から予兆はあったのですが、終了と共に気を抜いたら咳がひどくなってしまい、月曜日はお休みをいただきました。即効性のある風邪薬!ということで、咳止めシロップを飲みました。

    咳止めシロップなんて飲んだのは、もう25年ぶり位ですかね...。薬臭い中にも、独特の甘さがありますね。私が子供のころは、家庭の経済状況のこともあり(笑)、あまり「甘いもの」を食べさせてもらえなかった記憶があります。風邪をひくと、きまってこの種のシロップを飲まされたのですが、たまに口にする「甘み」がいとおしくて、大切に大切に飲んだ記憶があります...。そんなことを思い出したら、咳は止まりましたが、涙が止まらなくなりました。

    さて、涙を拭きつつ、今回はData Protection Manager 2007 の初期設定を PowerShell から行ってみます。

    ここでご紹介する内容は、DPMトラブル時の復旧に必要になりますので、是非とも覚えておいてください。

    Data Protection Manager 2007 をインストールした直後にやらねばならない作業は3つあります。

    1. バックアップ領域となるディスクを認識させる
    2. 保護対象となるサーバー(保護サーバー)にエージェントをインストールする
    3. 保護グループを作成する

    今回は、「1. バックアップ領域となるディスクを認識させる」を行ってみます。

    GUI では、初期状態は以下のようになっています。

    dpm_setup00

    ここにディスクを追加していくわけですが、事前にやっておくことがあります。それは、

    • サーバーに接続されたディスクをオンラインにしておく

    以下をご覧ください。Windows Server 2008 サーバーマネージャの「記憶域」でサーバーに接続されているディスクの一覧を参照しているところです。

    赤で囲ったディスクが、Data Protection Manager 2007 で利用可能なディスクですが、このままではディスク1はDPMが認識することができません。

    なぜならば、「ディスク1」は「オフライン」だからです。

    dpm_setup01

    よって、DPMに認識させる前には必ずディスクをオンラインにしておかなければなりません。フォーマットの必要はありません。DPMが勝手に行ってくれます。

    認識させたいディスクがすべてオンラインになったら、まずはDPM管理シェルからディスクの一覧を取得してみます。

    サーバーに接続されている利用可能なディスク一覧を取得するには、Get-DPMDisk コマンドレットを使用します。DJ-DPM01 はDPMサーバーのホスト名です。

    PS C:\> Get-DPMDisk DJ-DPM01 |format-table Name,NTDiskID

    Name                                                               NtDiskID
    ----                                                                   --------
    Msft Virtual Disk SCSI Disk Device                           2
    Msft Virtual Disk SCSI Disk Device                           1

    PS C:\>

    ここで、NTDiskID に注目してください。これは、上の記憶域画面の「ディスク1」「ディスク2」に対応しています。

    それでは、ディスクをDPMに追加しましょう。ディスクを追加するには、Add-DPMDisk を使用し、引数に追加したいディスクのインスタンスを指定します。

    以下の例では、NTDiskID = 1 のディスクを $DPMDisk として取得し、Add-DPMDisk に引数として指定しています。

    PS C:\> $DPMDisk = Get-DPMDisk DJ-DPM01 | Where {$_.NTDiskID -eq 1}
    PS C:\> $DPMDisk

    Name          Status            NtDiskId Total Capaci Unallocated  Type
                                                                           ty          Space
    ----                ------                --------     ------------    ------------    ----
    Msft Virtu... 正常                        1       127 GB            127 GB   基本

    PS C:\>Add-DPMDisk -DPMDisk $DPMDisk
    PS C:\>

     

    この例では、Where句を使用して追加したいディスクを特定しましたが、認識可能なディスクを片っ端から追加するのであれば、Where句を使わずに複数のインスタンスを $DPMDisk に取得しても問題ありません。Add-DPMDisk が複数のディスクを一気に追加してくれます。

  • 【Community】Windows Server 2008 リソースキット研究会 に参加しませんか?(リーダーも募集)

    リーマンブラザーズって聞くと、デビュー当時の東京プリンを思い浮かべるのは私だけでしょうか?

    さて、ちょっと実験的な試みなのですが、Windows Server 2008 リソースキット コミュニティ 研究会 を MSNコミュニティ内に発足(ってほどたいそうなものではありませんが)しました。

    Windows Server 2008 リソースキットコミュニティ 研究会
    http://groups.msn.com/ws2008reskitlab/

    【活動内容】

    • Windows Server 2008 リソースキット(Active Directory 編、Group Policy 編) に書かれている内容に関する技術情報交換
    • 交換された情報をベースにした勉強会、セミナー
    • リソースキットの改善点に関する提言(対 マイクロソフト)

    【活動拠点】

    • 原則オンライン
    • 勉強会、懇親会

    【参加条件】

    特にありませんが、小さな成果を少しずつ出せるコミュニティを目指しています。

    そういう意味では、「AD に詳しい」こともある程度重要ではあるのですが、情報発信に関するモチベーションをお持ちの方に参加いただけるとうれしいです。

    「まだ勉強中だけど半年で追い付くのでそれでもよい?」に対しては「もちろんです!」とお答えします。

    【コミュニティリーダーについて】 

    現在、暫定的に私がコミュニティリーダーになっています。

    が、現場の方で、リソキをもっと使いこなしたい、リソキをよりよいものに変えていきたい!という想いをお持ちの方に是非ともリーダーになっていただきたいと考えております。

    いかがですか?どなたか、一歩踏み出してみませんか?

    きっと新しい世界が開けます。

     

  • 【Script】英単語のボキャブラリーを増やすために考えてみました → 失敗

    入社して1.5年、いつか体が勝手に覚えてくれると思ってノホホーンとしていた「英語」ですが、いやー全く覚えてくれませんね。

    大誤算でした。外資だと思ってなめてました。

    いまだに、Windwos とか書いといて気付かないという体たらくです。

    そこで一念発起です。

    MS 社内で流通している英単語に注力してみよう!プロジェクトの発足です。

    社内のメーリングリストに流れているメールから英単語を抜き出して、頻出リストを作ることにしました。

    どうやるか。

    テキストマイニング?ピボットテーブル?そんなものは知りませんし、見たこともありません。必殺技の名前でしょうか?

    私のツールは昔から vbscript だけって決まってるんです。

     

    結果出来上がったのが、以下のスクリプトです。あまりのベタさに恥ずかしすぎてお見せしたくないのですが、何かのヒントになるかと思い、赤面しながらの放出です。

    何をやっているかは一目瞭然です。

    読みこんだテキストからいらない文字を片っ端から半角空白に置き換え、
    半角空白でSplit し、
    あとはひたすらループで数を計算

    はずかしいです。

    工夫した点は...あえて言えば、色分けした部分でしょうか。Dictionaryオブジェクトを使用して、同じ単語が出てきたらカウントアップしています。

    3行目の「<テキストファイルを指定>」とあるところには、テキストファイルを指定してください。OUTLOOK を使っている方であれば、[ファイル]メニューの[インポートとエクスポート]から、フォルダ全体を一括でテキストファイルに保存できます。

    ForReading = 1
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile =objFSO.GetFile("<テキストファイルを指定>")
    Set objTS = objFile.OpenAsTextStream(ForReading, 0)
    r = objTS.ReadAll

    r = replace(r, "(", " ")
    r = replace(r, ")", " ")
    r = replace(r, "/", " ")
    r = replace(r, "=", " ")
    r = replace(r, ".", " ")
    r = Replace(r,chr(9)," ")
    r = Replace(r, "," ," ")
    r = Replace(r, ":", " ")
    r = Replace(r, ";", " ")
    r = Replace(r, """", " ")
    r = Replace(r, "“", " ")
    r = Replace(r, "”", " ")
    r = Replace(r, "’", " ")
    r = Replace(r, "?", " ")
    r = Replace(r, "!", " ")
    r = Replace(r, "$", " ")
    r = Replace(r, "\", " ")
    r = Replace(r, "%", " ")
    r = Replace(r, "*", " ")
    r = Replace(r, ",", " ")
    r = Replace(r, "[", " ")
    r = Replace(r, "]", " ")
    r = Replace(r, "{", " ")
    r = Replace(r, "}", " ")
    r = Replace(r, " ", " ")
    r = Replace(r, "|", " ")
    r = Replace(r, "~", " ")
    r = Replace(r, "‘", " ")
    r = Replace(r, "+", " ")
    r = Replace(r, "<", " ")
    r = Replace(r, ">", " ")
    r = Replace(r, "…", " ")
    r = Replace(r, "&", " ")
    r = Replace(r, "-", " ")
    r = Replace(r, "1", " ")
    r = Replace(r, "2", " ")
    r = Replace(r, "3", " ")
    r = Replace(r, "4", " ")
    r = Replace(r, "5", " ")
    r = Replace(r, "6", " ")
    r = Replace(r, "7", " ")
    r = Replace(r, "8", " ")
    r = Replace(r, "9", " ")
    r = Replace(r, "0", " ")
    r = Replace(r, "_", " ")
    r = Replace(r, "@", " ")
    r = Replace(r, "    ", " ")
    r = Replace(r, vbCr, " ")
    r = Replace(r, vbLF, " ")
    r = Replace(r, vbCrLf, " ")

    arrR = split(r," ")

    wscript.echo UBound(arrR)

    Set objDic = CreateObject("Scripting.Dictionary")
    Set objDicCount = CreateObject("Scripting.Dictionary")

    For each n in arrR
        n = UCase(trim(n))
        If len(n) >1 and IsNull(n) = False then
            If not objDic.Exists(n) then
                objDic.Add n,1
            Else
                objDic.Item(n) = objDic.Item(n) + 1
            End If   
        End if
    Next

    Wscript.Echo  objDic.Count
    objKeys = objDic.Keys
    objItems = objDic.Items

    For i = 0 To objDic.Count -1
         Wscript.Echo objKeys(i) & "," & objDic.Item(objKeys(i))
    Next

    このスクリプトを、拡張子 vbs で保存します。

    結果を、Excelで読み込み、並べ替えたところ....出ました。

    800通のメールを構成する、13000単語から、MS ワールドワイド エバンジェリズムグループ頻出単語一覧 トップ 140 の発表です。

    順位 単語 出現回数   順位 単語 出現回数
    1 THE 20052   71 MY 1111
    2 TO 15570   72 WOULD 1086
    3 MICROSOFT 12226   73 COMBS 1076
    4 CN 11991   74 USE 1075
    5 AND 11229   75 VIRTUALIZATION 1066
    6 IT 9565   76 LIKE 1059
    7 OF 7349   77 SO 1052
    8 COM 7217   78 AM 1039
    9 IS 6473   79 ME 1033
    10 IN 6056   80 ONE 1009
    11 OU 6050   81 EVENT 1001
    12 EX 5975   82 DPE 999
    13 HTTP 5934   83 THERE 985
    14 FOR 5318   84 RBUIKE 984
    15 WE 4918   85 TARPARA 975
    16 THAT 4535   86 HAS 973
    17 THIS 4468   87 UK 972
    18 NORTHAMERICA 4455   88 UP 957
    19 YOU 4268   89 MAILTO 949
    20 TECHNET 4136   90 PEOPLE 946
    21 RECIPIENTS 4011   91 EDGE 913
    22 ON 3992   92 WAS 908
    23 WITH 3903   93 THEM 907
    24 FROM 3644   94 SOME 895
    25 ARE 3178   95 PRODUCT 894
    26 BE 2833   96 JUST 886
    27 WW 2689   97 NEW 877
    28 HAVE 2676   98 ASPX 857
    29 EVANGELISTS 2674   99 OUT 856
    30 EXCHANGE 2586   100 ANY 846
    31 WINDOWS 2439   101 VIRAL 844
    32 AS 2426   102 GROUP 834
    33 WILL 2306   103 CUSTOMERS 825
    34 NOT 2177   104 TECHNICAL 825
    35 VISTA 2113   105 SUPPORT 819
    36 RE 2095   106 JUNE 817
    37 OUR 2086   107 PM 817
    38 PRO 2083   108 WANT 814
    39 IF 2053   109 ALSO 813
    40 DLS 1986   110 ORLANDO 804
    41 SUBJECT 1946   111 DC 790
    42 CAN 1925   112 WHO 789
    43 SENT 1911   113 APPLE 777
    44 BUT 1903   114 SP 771
    45 BLOGS 1862   115 EVANGELIST 768
    46 OR 1862   116 OTHER 759
    47 AT 1834   117 THAN 754
    48 YOUR 1785   118 WHICH 751
    49 THEY 1724   119 NEED 743
    50 US 1626   120 BEEN 727
    51 CONTENT 1573   121 MICHAEL 719
    52 AN 1554   122 IPHONE 710
    53 WHAT 1505   123 KNOW 710
    54 ABOUT 1500   124 THINK 706
    55 WWW 1490   125 EUROPE 702
    56 RODNEY 1489   126 TIME 699
    57 BUIKE 1469   127 PLEASE 694
    58 SERVER 1451   128 SHOULD 694
    59 SESSION 1406   129 AUDIENCE 690
    60 ALL 1372   130 ESCALANTE 690
    61 GET 1367   131 SEE 689
    62 BY 1342   132 MOBILE 686
    63 DO 1290   133 LOPEZ 670
    64 HOW 1266   134 ONLY 660
    65 TEAM 1246   135 ENTERPRISE 659
    66 LIVE 1216   136 WELL 644
    67 OFFICE 1213   137 DON 638
    68 KEITH 1156   138 WHEN 634
    69 THEIR 1131   139 HELP 631
    70 MORE 1112   140 EVANGELISM 623

    TO と MICROSOFT を抑えて、堂々の一位は THE に決まりました。

    注目は、113 位の APPLE と 122 位の IPHONE ですかね。来週はどうなっているでしょう。

    このリストを見て思うのは...

    THE かよっ!

    やる前からわかっちゃいたんですけどね。

    人名とかURLなんかもごっちゃになったまま集計したので、ぜーんぜん...ではありませんが、大した意味はありませんでした。

    ちなみに、アルファベット順にすると結構よさげなんですけどね。

     

  • DPM用コマンドレット Connect-DPMServer の member 一覧

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : AddBackupNetworkAddress
    MemberType : Method
    Definition : System.Void AddBackupNetworkAddress(String address, UInt32 sequenc
                 eNumber)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : add_ExternalDatasourceDetectedEvent
    MemberType : Method
    Definition : System.Void add_ExternalDatasourceDetectedEvent(EventHandler`1 val
                 ue)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : add_InactiveSourcesChangedEvent
    MemberType : Method
    Definition : System.Void add_InactiveSourcesChangedEvent(EventHandler`1 value)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : add_LibraryCollectionChanged
    MemberType : Method
    Definition : System.Void add_LibraryCollectionChanged(LibraryCollectionChangeEv
                 entHandler value)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : add_ProductionServerCollectionChangedEvent
    MemberType : Method
    Definition : System.Void add_ProductionServerCollectionChangedEvent(EventHandle
                 r`1 value)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : add_ProtectionGroupCollectionChangedEvent
    MemberType : Method
    Definition : System.Void add_ProtectionGroupCollectionChangedEvent(EventHandler
                 `1 value)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : AttachProductionServer
    MemberType : Method
    Definition : System.Void AttachProductionServer(String serverName, String userN
                 ame, SecureString securePassword, String domain)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : CheckIfFileExistsInProdBin
    MemberType : Method
    Definition : System.Boolean CheckIfFileExistsInProdBin(String fileName, String&
                  version, String& folderPath)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : ConvertToDpmTime
    MemberType : Method
    Definition : System.DateTime ConvertToDpmTime(DateTime time)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : CreateProtectionGroup
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.P
                 rotectionGroup CreateProtectionGroup(String protectionGroupName),
                 Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.P
                 rotectionGroup CreateProtectionGroup()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : DisksInStoragePool
    MemberType : Method
    Definition : System.Int32 DisksInStoragePool()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : Dispose
    MemberType : Method
    Definition : System.Void Dispose()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : DumpMediaAsync
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.JobManagem
                 ent.Job DumpMediaAsync(Guid datasetId, Media media, String targetS
                 erver, String targetPath, OverwriteType overwriteType, Boolean rec
                 reateReparsepoint, Boolean restoreSecurity, JobStateChangedEventHa
                 ndler jobEventHandler, String notificationMail)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : Equals
    MemberType : Method
    Definition : System.Boolean Equals(Object obj)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetBackupNetworkAddress
    MemberType : Method
    Definition : System.Collections.Generic.List`1[[System.String, mscorlib, Versio
                 n=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] GetB
                 ackupNetworkAddress()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetCatalogRetentionValues
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.XsdClasses.CatalogRetenti
                 onValues GetCatalogRetentionValues()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetClusters
    MemberType : Method
    Definition : System.Collections.Generic.ICollection`1[[Microsoft.Internal.Enter
                 priseStorage.Dls.UI.ObjectModel.OMCommon.Cluster, ObjectModel, Ver
                 sion=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
                  GetClusters()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetDatasourceCollection
    MemberType : Method
    Definition : System.Collections.Generic.ICollection`1[[Microsoft.Internal.Enter
                 priseStorage.Dls.UI.ObjectModel.OMCommon.Datasource, ObjectModel,
                 Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e3
                 5]] GetDatasourceCollection()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetDatasourcesWithInactiveProtection
    MemberType : Method
    Definition : System.Collections.Generic.ICollection`1[[Microsoft.Internal.Enter
                 priseStorage.Dls.UI.ObjectModel.OMCommon.Datasource, ObjectModel,
                 Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e3
                 5]] GetDatasourcesWithInactiveProtection()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetDatasourcesWithStartPathForShares
    MemberType : Method
    Definition : System.Collections.Generic.List`1[[Microsoft.Internal.EnterpriseSt
                 orage.Dls.UI.ObjectModel.OMCommon.Datasource, ObjectModel, Version
                 =1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]] Get
                 DatasourcesWithStartPathForShares(String startPath)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetDatasourceWithStartPathOnProductionServer
    MemberType : Method
    Definition : System.Collections.Generic.List`1[[Microsoft.Internal.EnterpriseSt
                 orage.Dls.UI.ObjectModel.OMCommon.Datasource, ObjectModel, Version
                 =1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]] Get
                 DatasourceWithStartPathOnProductionServer(String startPath, String
                  productionServerName)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetExternalDatasources
    MemberType : Method
    Definition : System.Collections.Generic.ICollection`1[[Microsoft.Internal.Enter
                 priseStorage.Dls.UI.ObjectModel.OMCommon.Datasource, ObjectModel,
                 Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e3
                 5]] GetExternalDatasources()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetGlobalPropertyValue
    MemberType : Method
    Definition : System.String GetGlobalPropertyValue(String propertyName)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetHashCode
    MemberType : Method
    Definition : System.Int32 GetHashCode()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetHouseKeepingJobStartTime
    MemberType : Method
    Definition : System.DateTime GetHouseKeepingJobStartTime(HouseKeepingJobs job)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetLibraryCollection
    MemberType : Method
    Definition : System.Collections.Generic.ICollection`1[[Microsoft.Internal.Enter
                 priseStorage.Dls.UI.ObjectModel.LibraryManagement.Library, ObjectM
                 odel, Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856a
                 d364e35]] GetLibraryCollection()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetProductInformation
    MemberType : Method
    Definition : DpmInformation GetProductInformation()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetProductionServers
    MemberType : Method
    Definition : System.Collections.Generic.ICollection`1[[Microsoft.Internal.Enter
                 priseStorage.Dls.UI.ObjectModel.OMCommon.ProductionServer, ObjectM
                 odel, Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856a
                 d364e35]] GetProductionServers()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetProductionServerWithId
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.P
                 roductionServer GetProductionServerWithId(Guid psId)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetProductionServerWithName
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.P
                 roductionServer GetProductionServerWithName(String productionServe
                 rName)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetProtectionGroups
    MemberType : Method
    Definition : System.Collections.Generic.IList`1[[Microsoft.Internal.EnterpriseS
                 torage.Dls.UI.ObjectModel.OMCommon.ProtectionGroup, ObjectModel, V
                 ersion=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
                 ]] GetProtectionGroups()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetProtectionGroupWithId
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.P
                 rotectionGroup GetProtectionGroupWithId(Guid pgId)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetStorageNodes
    MemberType : Method
    Definition : System.Collections.Generic.ICollection`1[[System.String, mscorlib,
                  Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
                 ]] GetStorageNodes()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetType
    MemberType : Method
    Definition : System.Type GetType()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_AlertController
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.Alert.Aler
                 tController get_AlertController()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_CurrentShadowCopyProvision
    MemberType : Method
    Definition : System.Int32 get_CurrentShadowCopyProvision()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_DiskController
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.Library.DiskManagement
                 .DiskController get_DiskController()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_Domain
    MemberType : Method
    Definition : System.String get_Domain()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_DPMDatabaseLogicalPath
    MemberType : Method
    Definition : System.String get_DPMDatabaseLogicalPath()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_GetEnterpriseAgentLicensesUsed
    MemberType : Method
    Definition : System.Int32 get_GetEnterpriseAgentLicensesUsed()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_GetStandardAgentLicensesUsed
    MemberType : Method
    Definition : System.Int32 get_GetStandardAgentLicensesUsed()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_IsLocalProtectionSet
    MemberType : Method
    Definition : System.Boolean get_IsLocalProtectionSet()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_LibraryJobQueryObject
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.JobManagem
                 ent.JobQuery get_LibraryJobQueryObject()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_Name
    MemberType : Method
    Definition : System.String get_Name()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_Proxy
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.Engine.CoreServicesProxy
                 get_Proxy()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_ServerId
    MemberType : Method
    Definition : System.Guid get_ServerId()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_SqlContext
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.DB.SqlContext get_SqlCont
                 ext()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : get_VolumeList
    MemberType : Method
    Definition : System.Collections.Generic.ICollection`1[[Microsoft.Internal.Enter
                 priseStorage.Dls.UI.ObjectModel.OMCommon.DpmServerVolume, ObjectMo
                 del, Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad
                 364e35]] get_VolumeList()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : IsRemoteYukon
    MemberType : Method
    Definition : System.Boolean IsRemoteYukon()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : IsServerProtected
    MemberType : Method
    Definition : System.Boolean IsServerProtected(String server)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : JobQuery
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.JobManagem
                 ent.JobQuery JobQuery(Boolean notRegisterForEvents)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : ReadDataSourceWithId
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 atasource ReadDataSourceWithId(Guid dataSourceId)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : RecoverAsync
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.JobManagem
                 ent.Job RecoverAsync(IList`1 recoveryItemList, RecoveryOptions rec
                 overyOptions, JobStateChangedEventHandler jobEventHandler, String
                 notificationMail)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : RefreshLibraryState
    MemberType : Method
    Definition : System.Void RefreshLibraryState()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : RemoveBackupNetworkAddress
    MemberType : Method
    Definition : System.Void RemoveBackupNetworkAddress(String address)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : remove_ExternalDatasourceDetectedEvent
    MemberType : Method
    Definition : System.Void remove_ExternalDatasourceDetectedEvent(EventHandler`1
                 value)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : remove_InactiveSourcesChangedEvent
    MemberType : Method
    Definition : System.Void remove_InactiveSourcesChangedEvent(EventHandler`1 valu
                 e)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : remove_LibraryCollectionChanged
    MemberType : Method
    Definition : System.Void remove_LibraryCollectionChanged(LibraryCollectionChang
                 eEventHandler value)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : remove_ProductionServerCollectionChangedEvent
    MemberType : Method
    Definition : System.Void remove_ProductionServerCollectionChangedEvent(EventHan
                 dler`1 value)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : remove_ProtectionGroupCollectionChangedEvent
    MemberType : Method
    Definition : System.Void remove_ProtectionGroupCollectionChangedEvent(EventHand
                 ler`1 value)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : SetCatalogRetentionValues
    MemberType : Method
    Definition : System.Void SetCatalogRetentionValues(CatalogRetentionValues catal
                 ogRetentionValues)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : SetHouseKeepingJobStartTime
    MemberType : Method
    Definition : System.Void SetHouseKeepingJobStartTime(HouseKeepingJobs job, Date
                 Time startTime, Boolean onlyRemove)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : ToString
    MemberType : Method
    Definition : System.String ToString()

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : TriggerRescan
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.JobManagem
                 ent.Job TriggerRescan(RescanType rescanType, JobStateChangedEventH
                 andler progressHandler)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : UpdateGlobalPropertyValue
    MemberType : Method
    Definition : System.Void UpdateGlobalPropertyValue(String propertyName, String
                 propertyValue)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : VerifyDataset
    MemberType : Method
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.JobManagem
                 ent.Job VerifyDataset(RecoverySourceLocation recoverySourceLocatio
                 n, JobStateChangedEventHandler jobEventHandler)

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : AlertController
    MemberType : Property
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.Alert.Aler
                 tController AlertController {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : CurrentShadowCopyProvision
    MemberType : Property
    Definition : System.Int32 CurrentShadowCopyProvision {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : DiskController
    MemberType : Property
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.Library.DiskManagement
                 .DiskController DiskController {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : Domain
    MemberType : Property
    Definition : System.String Domain {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : DPMDatabaseLogicalPath
    MemberType : Property
    Definition : System.String DPMDatabaseLogicalPath {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetEnterpriseAgentLicensesUsed
    MemberType : Property
    Definition : System.Int32 GetEnterpriseAgentLicensesUsed {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : GetStandardAgentLicensesUsed
    MemberType : Property
    Definition : System.Int32 GetStandardAgentLicensesUsed {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : IsLocalProtectionSet
    MemberType : Property
    Definition : System.Boolean IsLocalProtectionSet {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : LibraryJobQueryObject
    MemberType : Property
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.JobManagem
                 ent.JobQuery LibraryJobQueryObject {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : Name
    MemberType : Property
    Definition : System.String Name {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : Proxy
    MemberType : Property
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.Engine.CoreServicesProxy
                 Proxy {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : ServerId
    MemberType : Property
    Definition : System.Guid ServerId {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : SqlContext
    MemberType : Property
    Definition : Microsoft.Internal.EnterpriseStorage.Dls.DB.SqlContext SqlContext
                 {get;}

    TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D
                 pmServer
    Name       : VolumeList
    MemberType : Property
    Definition : System.Collections.Generic.ICollection`1[[Microsoft.Internal.Enter
                 priseStorage.Dls.UI.ObjectModel.OMCommon.DpmServerVolume, ObjectMo
                 del, Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad
                 364e35]] VolumeList {get;}

     

     

  • 【BOOK】いまやってます~ Windows Server 2008 Group Policy リソースキット監訳中

    2008年9月29日発売予定の Widnows Server 2008 Active Directory リソースキットの監訳に続き、Group Policy 編の監訳を進めています。

    2008年11月発刊予定です。

    ただ、先週、体調を崩しまくり、すこーし?だけ私の作業が遅れています。

    この週末に追いつくはずだったのですが、うーん、ちょっと追いついていません。

    今週1週間が勝負だと考えています。

    なぜならば、今週で目途を立てないと、夏休みがとれません!

    それにしても、このGroup Policy リソースキットも内容が濃いです。

    英語版でも 500P以上あります。日本語版では、はたして...。

     

    で、ですね。

    監訳が終わって、めでたく発刊されたら、リソキをベースにしたセミナーをやりたいと考えています。

    リソースキットはご存知の通り、読むためのスキルも必要です。

    決してビギナー向けでは無いんですよね。

    なので、「リソキを読み解くためのセミナー」をやりたいなと...考えています。

    漠然としていますが。

    ただ、これ、私だけが話すのはもったいないので、同志を募集中です。

    「この章はまかせろ!」
    「この分野ならいくらでも話せる!」
    「というか、俺にやらせろ」
    「とにかくしゃべらせろ」

    という方がいらっしゃるはずです。

    時期は、11月半ばに計画しています。

    また追って募集したいと思います。

    講師をしてもよい!という方。

    是非ともコンタクトください。

  • 【Management】MCSE 最後の1科目はOperations Manager 2007で!

    MCSE を今期の目標の1つにされている方、手を上げてください。

    結構いらっしゃいますね。

    私も過去にそういう目標を立てた記憶がありますが、だいたい、期末になってあわてるんですよね....で、結局受験しないと...

    みなさんには、そんな無残な状況になってほしくありません。

    とはいえ、少ない時間で効率的に勉強ができて、かつ合格率をより高くするにはどうしたらよいだろう....

    悩ましい問題です。

     

    そんな悩めるエンジニアの皆さんに朗報です。

    MCPの試験対策にぴったりの、System Center Operations Manager 2007 自習書シリーズ (全8章)が公開されました。

    System Center Operations Manager 2007 自習書シリーズ
    http://technet.microsoft.com/ja-jp/opsmgr/cc979328.aspx

    某有名講師が開発したこの自習書シリーズで勉強すれば、一発合格間違いナシ...とまでは言いきれませんが、かなりポイントをついた学習ができるはずです。

    もし、普段の業務でOperations Managerを触る機会が無いという方は、自習書に合わせて Virtual Lab も活用してください。ブラウザからマイクロソフトサイトに接続してOperations Manager 2007 の実機が触れるという、すぐれものです。

    System Center Operations Manager 2007 バーチャルラボ
    http://www.microsoft.com/japan/technet/traincert/virtuallab/systemcenter.mspx

    ※2008年9月1日時点で「イントロダクション」の演習が行えないという不具合が発見されましたが、2008年9月16日付で解消されました

    そういう私は、もう何年MCP試験を受験していないだろう...

    思えば、一番最初に受かった試験は、SMS 1.2 でした。なんか、かなりギリギリで合格した記憶があります。

    過去、一番手ごわかった試験は...Windows95 じゃなかったかな...これもギリギリで合格した記憶があります(恥)。

     

    うーむ、久しぶりに挑戦しようかな。

    その前にTOEICかな...などと悩む今日この頃です。

  • 【IDM】日本の Identity Management サポートチームの BLOG が開設

    すこしDPMの話が続きましたが、ちょっと休憩して、新しいBLOGのご紹介です。

    日本の Developer Support グループの中の Identity Management チーム が BLOGを開設しました。

    管理者は見た!~AD と ILM 一家の秘密~
    http://blogs.technet.com/jpilmblg/default.aspx

    image

    毎日、お客様からの難しい問い合わせを受け続けている専門部隊ですから、その内容は深いですよー。

    製品の最新情報というよりは、運営に関するヒントを多く発信してくれると思いますし、サポートチームの内幕を知ることもできるでしょう。

    是非ともみなさんご期待ください。

    とりいそぎ、お知らせです。

  • DPM 2007 CmdLet members

    Get-DPMDisk

    Name                    MemberType Definition
    ----                    ---------- ----------
    Equals                  Method     System.Boolean Equals(Object obj)
    GetHashCode             Method     System.Int32 GetHashCode()
    GetType                 Method     System.Type GetType()
    get_CanAddToStoragePool Method     System.Boolean get_CanAddToStoragePool()
    get_CanBeRemoved        Method     System.Boolean get_CanBeRemoved()
    get_DiskType            Method     System.Int32 get_DiskType()
    get_DPMServerName       Method     System.String get_DPMServerName()
    get_HasData             Method     System.Boolean get_HasData()
    get_Identifier          Method     System.Guid get_Identifier()
    get_IsInStoragePool     Method     System.Boolean get_IsInStoragePool()
    get_IsMissing           Method     System.Boolean get_IsMissing()
    get_Name                Method     System.String get_Name()
    get_NtDiskID            Method     System.Int32 get_NtDiskID()
    get_PgMember            Method     System.Collections.ArrayList get_PgMember()
    get_Status              Method     System.Int32 get_Status()
    get_TotalCapacity       Method     System.Int64 get_TotalCapacity()
    get_UnallocatedSpace    Method     System.Int64 get_UnallocatedSpace()
    get_VolumeCount         Method     System.Int32 get_VolumeCount()
    ToString                Method     System.String ToString()
    CanAddToStoragePool     Property   System.Boolean CanAddToStoragePool {get;}
    CanBeRemoved            Property   System.Boolean CanBeRemoved {get;}
    DiskType                Property   System.Int32 DiskType {get;}
    DPMServerName           Property   System.String DPMServerName {get;}
    HasData                 Property   System.Boolean HasData {get;}
    Identifier              Property   System.Guid Identifier {get;}
    IsInStoragePool         Property   System.Boolean IsInStoragePool {get;}
    IsMissing               Property   System.Boolean IsMissing {get;}
    Name                    Property   System.String Name {get;}
    NtDiskID                Property   System.Int32 NtDiskID {get;}
    PgMember                Property   System.Collections.ArrayList PgMember {get;}
    Status                  Property   System.Int32 Status {get;}
    TotalCapacity           Property   System.Int64 TotalCapacity {get;}
    UnallocatedSpace        Property   System.Int64 UnallocatedSpace {get;}
    VolumeCount             Property   System.Int32 VolumeCount {get;}