Windows Server バックアップを、PowerShell でやってみる。<変数編 2 >

前回は、一行目のコマンドレット “$policy=new-wbpolicy” の意味を解説しました。新たな変数名「policy」 を定義し、”new-wbpolicy” コマンドレットによって作成されるバックアップ実行時のポリシー情報をその内容として格納するというものです。

 

 

では、二行目の ”add-wbbaremetalrecovery $policy” は何をしているのでしょうか。二行目を実行した後に、「$policy」を実行するとその意味が分かります。変数名の頭に「$」を付けて実行する事でその内容が表示されるわけですが、一行目の実行直後と二行目の実行直後とでは、その内容が変わっているのです。

一行目の実行直後だと、ただ単に “new-wbpolicy” を実行した場合と同じ「空のポリシー」が表示されるだけなのですが、二行目の実行直後では、「BMR」の項目が「: False」から「: True」に変化しています。このことから、「ベアメタル回復を実行する」というポリシーが設定されたことが分かります。

 

 

三行目の "$backuptargetvolume=new-wbbackuptarget -volume G:" では二つ目の変数が登場しますが、やっている事の本質は一行目と同じです。「backuptargetvolume」という変数名を定義し、その中に、「バックアップ先としてGドライブを指定する」という意味の「new-wbbackuptarget -volume G:」を格納しています。

 

 

なお、パラーメーターとして「-volume」を用いても成功しない場合は、「-volumepath」を用いてみてください。私の使っている環境では、先月の <実践編> 執筆時には前者で成功していたはずなのですが、今現在は後者でないとエラーしてしまいます。

英語版 Technet の「New-WBBackupTarget」を見る限りではどちらのパラメーターも存在するのですが、微妙に意味が異なるのか、環境や条件によって使い分ける必要があるようです。

(不思議な事に、打ち間違えて "-volumepat G:" で実行した場合にも成功しました。試しに "-volumepa G:" を実行したところ、これでも成功しました。PowerShell は妙な省略機能が充実しています・・・)

三行目の実行後に「$backuptargetvolume」を実行すると、指定したドライブが表示されます。

 

 

四行目 "add-wbbackuptarget -policy $policy -target $backuptargetvolume" が、最後のポリシー設定となります。三行目で変数「$backuptargetvolume」として設定したバックアップ先ドライブの情報を、さらに変数「$policy」の内容として格納します。(変数の設定を2段階で行うというのは、正直面倒ですね・・・)

四行目の実行後に「$policy」を実行すると、空欄だった「BackupTargets」の項目が「: {指定したドライブ名}」に変化していることが分かります。

 

 

ちなみに、「-policy」と「-target」は省略可能です。二つの変数名だけ記述し、"add-wbbackuptarget $policy $backuptargetvolume" で実行した場合にも、同様の結果となる事を確認しています。

(実は二行目でも、「-policy」を入れて "add-wbbaremetalrecovery -Policy $policy" と書くのが正式な書き方のようです。少なくとも、Technet の「ステップ バイ ステップ ガイド - Windows Server 2008 R2 の Windows Server バックアップ」ではそうなっています。)

 

 

こういった必須パラーメーターを一切記述せず、たとえば  "add-wbbackuptarget" だけを実行したらどうなるかというと、結局「Policy」と「Target」の入力を求められます。ところが、その際にそれぞれ「$policy」と「$backuptargetvolume」を入力しても、エラーしてしまいます。どうやら、コマンドレット上で記述する場合と対話的に入力する場合とで、違う書き方をしなくてはいけないようです。詳しいことはまだよく分かりません。

 

 

最後の五行目 "start-wbbackup -policy $policy" で、変数「$policy」内に格納された各種設定を用いてバックアップを実行します。もちろんここでも、「-policy」を省略可能です。

バックアップ先ドライブがバックアップ元ドライブと物理的に同一ディスク上にある場合には、警告メッセージが出て " y " の入力が必要であると<実践編>に書きましたが、”-force” というオプションを用いることでスキップ可能です。すぐにバックアップが開始されることを確認しました。

 

以上で、「Windows Server バックアップを、PowerShell でやってみる。」シリーズは終了です。

正直言って、まだまだ PowerShell を理解しきれていはいません。変数の扱いや、パラメーターの入力方法など、「なぜこうしなければいけないのだろう?」と疑問に思いながら進めている箇所がいくつもあります。それらは今後、別のシリーズとしてこのブログで取り上げていきたいと思います。