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

DPM2007シリーズもそろそろ終盤です。 前回までで、DPMのエージェントインストールまでが完了しました。 【Management】DPM 2007 の初期設定を自動化 その1 ディスクを追加する 【Management】DPM 2007 の初期設定を自動化 その2 DPM保護エージェントをインストールする 【Management】DPM 2007 の初期設定を自動化 その2 番外編 ~ Attach-ProductionServer.ps1 の中身を見る ここからは保護グループの作成を行うのですが、ちょっと複雑なので、まずは保護グループの情報取得、つまり設定内容を参照する手順を通して、オブジェクト構造のイメージをつかんでください。 保護グループのバックアップと回復に関するポリシーには、バックアップの頻度や回復の長期的要件および短期的要件に関する情報が格納されています。管理コンソールの設定画面で見ると、以下のような情報です。 ファイルサーバーに関する保護ポリシー 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…


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

TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D             pmServerName       : AddBackupNetworkAddressMemberType : MethodDefinition : System.Void AddBackupNetworkAddress(String address, UInt32 sequenc             eNumber) TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D             pmServerName       : add_ExternalDatasourceDetectedEventMemberType : MethodDefinition : System.Void add_ExternalDatasourceDetectedEvent(EventHandler`1 val             ue) TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D             pmServerName       : add_InactiveSourcesChangedEventMemberType : MethodDefinition : System.Void add_InactiveSourcesChangedEvent(EventHandler`1 value) TypeName   : Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.D             pmServerName       : add_LibraryCollectionChangedMemberType : MethodDefinition : System.Void add_LibraryCollectionChanged(LibraryCollectionChangeEv             entHandler value) TypeName   :…

1

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

※今回ちょっと長いです。すんません。 DPMの環境設定を自動化しようシリーズの 2 回目です。 バックアップ領域となるディスクを認識させる 保護対象となるサーバー(保護サーバー)にエージェントをインストールする  ← 今回 保護グループを作成する 前回はセットアップ直後のDPMに、ボリュームを追加してストレージプールを作成しました。 【Management】DPM 2007 の初期設定を自動化 その1 ディスクを追加する 今回は、保護対象となるサーバーに対し、スクリプトを併用してエージェントをインストールしてみます。 ただ、エージェントのインストール自体は、できることならGUIから行ったほうがよいです。なぜならば、そのほうがはるかに簡単だからです。DPMサーバーと保護サーバーの間に Firewall があるためにRPCを使用したリモートからのプッシュインストールが行えないといった理由が無い限りは、管理コンソールから行ってください。 とはいえ、あえて手動で行ってみると、リモート管理に関する汎用的で細かなスキルを身につけることができますので、スキルアップを目的に挑戦してみるのならばよいかもです。 では、やってみましょう。 エージェントを手動でインストールするには2つのステップが必要です。 ① DPM保護エージェントを保護サーバーにインストール ② DPMサーバーに、エージェントがインストールされた保護サーバーを認識させる(PowerShell) それでははじめましょう。 ① DPM保護エージェントを保護サーバーにインストール 保護エージェントのインストールの流れは以下の通りです。 保護サーバーの Windows Firewall サービスを停止する(無効にするのではなく、サービスを停止する)  保護サーバーにエージェントをインストール 保護エージェントの修正パッチがあれば、それを適用する Windows Firewall サービスを起動 保護エージェントに対して通信を許可するように Windows Firewall を設定する 上のリストにはとても重大な問題が含まれています。 それは、手順の一番上にある、保護サーバー上の Firewall サービスの停止という作業です。「無効」ではありません。「停止」です。「停止」しておかないと、以下のように、エージェントのインストール時に 80070643 エラーが発生して DPMAgentInstaller が失敗します。これは、どうやら各国語にローカライズさらたバージョンでのみ発生する問題のようです。 Installing agent and configure…

2

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   …


RemoveRecoveryPoint.ps1

このソースの解説はこちらから。【Management】DPM2007 管理シェルで保護領域の容量不足を回避する その2   ********************* param([string] $DPMServerName, [string] $ProtectionGroupName,[string] $Datasource, [string] $RepeisentedPointInTime) if(!$DPMServerName){     $DPMServerName = read-host “DPMサーバー名:”} $DPMServer = Connect-DPMServer $DPMServerName if(!$ProtectionGroupName){     $PGList = Get-ProtectionGroup $DPMServerName     $PGList      Write-Host “保護グループを選択してください”     $ProtectionGroupName = read-host “保護グループ名:”} $pg = Get-ProtectionGroup $DPMServerName | where {$_.FriendlyName -eq $ProtectionGroupName} if(!$Datasource){     $DSList = Get-Datasource $pg | format-table Name,ProductionServerName     $DSList     Write-Host “データソースを選択してください”     $Datasource = read-host…

2

【Management】DPM2007 管理シェルで保護領域の容量不足を回避する その2

※2008/8/28 に「【Management】Data Protection Managere 2007 で回復ポイントを削除する というタイトルで投稿した記事にリフレッシュ版です 先日の投稿で、保護領域を拡張する方法についてご紹介しました。 【Management】DPM2007 管理シェルでほ保護領域の容量不足を回避する その1 今回は、もう1つの容量不足対策をご紹介します。 DPMでは、保護グループ作成時に「保存期間」を日数単位で指定することができます。そのため、一度バックアップが取られると、指定した日数が経過しない限り削除されることはありません。 この機能によりバックアップの信頼性は向上するわけですが、ときによっては「あのバックアップいらねー」となることもあるでしょう。 そこで、古いバックアップを保護領域から削除するスクリプトをご紹介します。 ソース全体はこちらから。 このスクリプトでは、指定したサーバーの保護グループにある、特定の回復ポイントを削除します。 スクリプト名につづいて[サーバー名]、[保護グループ名]、[データソース名], [回復ポイントの日時(yyyy/mm/dd hh:nn:ss)]を指定することができます。保護グループ名やデータソース名、回復ポイントの日時が分からない場合でも安心してください。なにも入れなければ一覧から選択できるようになっています(以降参照) param([string] $DPMServerName, [string] $ProtectionGroupName,[string] $Datasource, [string] $RepeisentedPointInTime) サーバー名が指定されていなければ、プロンプトが表示されてサーバー名の入力を求められます。 if(!$DPMServerName) {      $DPMServerName = read-host “DPMサーバー名:” } DPM サーバーに接続します。 $DPMServer = Connect-DPMServer $DPMServerName もし保護グループ名が指定されていなければ、指定したサーバーの保護グループ一覧を表示し、保護グループの選択を求めます。 if(!$ProtectionGroupName) {      $PGList = Get-ProtectionGroup $DPMServerName      $PGList         Write-Host “保護グループを選択してください”…

1

ResizeStoragePool.ps1

このソースの解説はこちらから。【Management】DPM2007 管理シェルで保護領域の容量不足を回避する その2 *************************  param([string] $DPMServerName) if(!$DPMServerName){     $DPMServerName = read-host “DPMServerName:”} $dpmserver=Connect-DPMServer $dpmservername $PGList = @(Get-ProtectionGroup $dpmservername) foreach($PG in $PGList){  $MPG = Get-ModifiableProtectionGroup $PG  $ModifiableProtectionGroupName = $MPG.FriendlyName Write-Host “保護グループ::$ModifiableProtectionGroupName”  $dslist=@(get-datasource $MPG)  foreach ($ds in $dslist)     { $DataSourceName    = $ds.Name $RecentReplicaSize = $ds.ReplicaSize  $RecentReplicaUsedSpace = $ds.ReplicaUsedSpace $RecentReplicaUsedPercent = $RecentReplicaUsedSpace / $RecentReplicaSize * 100  $RecentShadowCopyAreaSize = $ds.ShadowCopyAreaSize $RecentShadowCopyUsedSpace = $ds.ShadowCopyUsedSpace $RecentShadowCopyUsedPercent = $RecentShadowCopyUsedSpace…

2

【Scripting】VBScript から PowerShell を使用する - ActiveXPoSh (ActiveX PowerShell)

全国の VBScript ファンの皆さん、こんにちは。 Scripting Life を楽しんでますか? ちょっと前のことになりますが、PowerShell チームの blog に以下の記事が投稿されました。 Invoking PowerShell from VBScript (COM) この記事では、VBScript から PowerShell を使用する方法として、Sapien Technologies 社が無償提供している ActiveXPosh を紹介しています。 既に InfoQ 日本語版にも掲載されていますし、何名かの Microsoft MVP の方々も blog でも紹介されていますので、ご存じの方も多いかもしれません。 VBScript から PowerShell が使うことに意味があるのか? てか、はじめから PowerShell を使ったら? という貴重なご意見には一切耳を貸さず、とりあえず使ってみることにします。   <準備> ActiveX PowerShell(ActiveXPosh)をダウンロードしてインストール PowerShell をインストール  <リファレンス> ActiveXPoSh のリファレンスはこちら <ちょっとだけ使ってみる> まずは、リファレンスにも掲載されている簡単なスクリプトから。以下のスクリプトを拡張子 vbs で保存してコマンドプロンプトから実行してみてください。 Set objActiveXPosh =…

1

【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.UTF8EncodingPS C:\> $bytPassword = $objUTF8Enc.GetBytes($strPassword)PS C:\>…

7

VBScript Quick Reference 2007.06 版

VBScript Quick Reference というものがリリースされております。 VBScript Quick Reference downloadhttp://www.microsoft.com/downloads/details.aspx?FamilyID=9c80b0df-b9b4-4fcb-b513-02f8f40049e8&DisplayLang=en 英語ですが、忘れがちな書式をちょっと調べたいときに非常に便利です。ワードドキュメント2ページに、わかりやすくまとめてあります。  クリックすると大きな画像で表示されます クリアファイルの間や、部屋の壁はもちろんのこと、ご自宅のトイレに貼っていただければお子様の情操教育にも役立ちます。 姉妹品として、Powershell Quick Reference もございます。 Powershell Quick Reference downloadhttp://www.microsoft.com/downloads/details.aspx?familyid=DF8ED469-9007-401C-85E7-46649A32D0E0&displaylang=en