この記事には、エージェントレス バックアップの際に仮想コンピュータでバックアップ前後のコマンドを実行する方法を紹介しています(例では、バックアップ前のコマンドを実行しています)。
はじめに
Acronis エージェント for Hyper-V を使ってエージェントレスバックアップを行う際、ゲストの仮想コンピュータ内でバックアップ前後のスクリプトを実行したい場合、この記事の説明に従ってください。スクリプトを実行するためには、Powershell Direct が使われます。
Powershell Direct の詳細については、PowerShell を使用した仮想マシンの自動化と管理 をご参照ください。
システム要件:
ホスト: Windows 10、Windows Server 2016 あるいはそれ以降(Hyper-V を使用)
ゲスト/仮想コンピュータ: Windows 10、Windows Server 2016 あるいはそれ以降
この記事の例に使われたシステム構成:
- Hyper-V ホストおよびゲストの仮想コンピュータの両方に、Windows Server 2016 がインストールされています
- ゲストの仮想コンピュータのコンピュータ名は TestVM で、そのローカル管理者アカウントは TestVM\Administrator です
ソリューション
1. ゲストの仮想コンピュータで、実行したいコマンド(データベース操作のフリーズ、アプリケーションの停止など)が入っている C:\Temp\script.bat というBATファイルを作成します。
ここでは、バックアップ前後のコマンドの実行をテストするために、このサンプル スクリプトを使います:
echo "Hello from %COMPUTERNAME%" Echo "Script Launched" >> C:\Temp\log.txt
2. Hyper-V ホストで、以下の内容の C:\Temp\testPS.ps1 というファイルを作成します:
$password = ConvertTo-SecureString 'MyPassword' -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential ('<仮想コンピュータ\ユーザー>', $password) Invoke-Command -VMName <仮想コンピュータのコンピュータ名> -ScriptBlock { 仮想コンピュータに入っているBATファイルへのパス } -Credential $credential
今回の例では、このようになります:
$password = ConvertTo-SecureString 'MyPassword' -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential ('TestVM\Administrator', $password) Invoke-Command -VMName TestVM -ScriptBlock { C:\Temp\script.bat } -Credential $credential
3. Hyper-V ホストで、以下の内容の C:\Temp\test.cmd というファイルを作成します:
powershell -command set-executionpolicy unrestricted powershell -file "<PS1ファイルへのパス>" powershell -command set-executionpolicy default
ステップ2で作ったファイルへのパスを入れてください。今回の例では、このようになります:
powershell -command set-executionpolicy unrestricted powershell -file "C:\Temp\testPS.ps1" powershell -command set-executionpolicy default
4. バックアップ計画を作成し、必要な仮想コンピュータに適用します。[バックアップ オプション] では、バックアップ前のコマンドを有効にし、実行するコマンドとしてステップ3で作成したCMDファイルを指定します:
5. バックアップ計画を保存し、実行します。
ベリファイ
この記事で例として紹介しているスクリプトを使用した場合、バックアップ計画を開始した後、仮想コンピュータに入っている C:\Temp\log.txt をチェックしてください。「Script launched」という文が入っているはずです。