これにより、サーバー フォルダーをWindows Azure Backup へバックアップできるようになります。
退避していたサーバー フォルダーを戻す作業を行いますが、数TBもあるためGUIだと長時間の待ち時間が発生。
これは我慢できないと思い、PowerShellを使用し複数のサーバー フォルダーを移動させたいと思います。
単一のサーバー フォルダーを移動させる場合
対象となるサーバー フォルダーをGet-WssFolder コマンドレットから取得し、Move-WssFolder コマンドレットで移動させます。下記サンプルは、サーバー フォルダー名[会社]をDドライブ(記憶域プールの仮想ディスク)に移動させるスクリプトです。$Folder = Get-WssFolder -Name “会社” Move-WssFolder -Folder $Folder -NewDrive "D:\" -Force -Confirm:$false確認プロンプトを非表示にさせたい場合は、
-Force -Confirm:$falseの組み合わせを追記します。
片方だけだと非表示になりません。
複数のサーバー フォルダーを移動させる場合
複数のサーバー フォルダーを移動させたい場合は、ForEachを組み合わせます。下記サンプルは、退避HDD(Qドライブ)上のサーバー フォルダーを抽出し、Dドライブ(記憶域プールの仮想ディスク)に移動させるスクリプトです。
$Folders = Get-WssFolder | Where-Object{ $_.Path -like "Q:\*"} ForEach($f in $Folders) { #Write-Host $f.Name, $f.Path Move-WssFolder -Folder $f -NewDrive "D:\" -Force -Confirm:$false }実行すると下記画像の中断のようにステータスが表示されます。
このスクリプトの難点は、「いつ終わるかが全く分からない!」点です。
1つのサーバー フォルダーの移動が完了すると、最新のサーバー フォルダーの情報が表示されます。
この時のダッシュボードを見ると対象となるサーバー フォルダーの状態は「移動しています...」になります。
参考にしたサイト
- Move-WssFolder - Technet ライブラリ
- How to stop getting prompted to "Confirm" - Technet Forum
- 並列処理 - Trivial Contentsさんのブログ
余談:バックグランド ジョブを使えばいんじゃないのか?
当初、Start-Job コマンドレットを使用しバッグラウンドで処理させようとしましたが、残念ながら失敗に終わりました。理由は、Windows Server 2012 R2 Essentialsの[サーバー フォルダーの移動]機能は、並列処理が出来ないため。
Start-Job コマンドレットを調べてみると
並列処理(マルチプロセス)※で動作するそうです。
※PowerShellから別のPowerShellを起動、処理をさせる
Start-Job コマンドレット、Get-Job コマンドレット、Remove-Job コマンドレット、Recieve-Job コマンドレットはほとんど使った事がなかったのでいい勉強になりました。