Disk2Vhdのコマンドラインでシステムで予約済みパーティションを含めつつドライブ指定をする
Windows Server 2008にはシステムで予約済みとかいう領域が勝手にできる。
この環境でVHDに含めたくないドライブがある場合、Disk2Vhdのコマンドラインが使えない。
しょうがないのでUWSCで実行した。
Option Explicit //============================================================================== // Disk2vhd自動化スクリプト // Disk2vhdのコマンドラインだとSystem Reservedを指定できないのでUWSCにて実行 // (アスタリスクもあるが、VHDに入れたくないドライブがある場合に対応できない) //------------------------------------------------------------------------------ // 13.06.06 shey_nassy 新規作成 //============================================================================== //============================================================ // 設定 //============================================================ //disk2vhdフルパス CONST C_D2V_PATH = "C:\Documents and Settings\SheyNassy\デスクトップ\Disk2vhd\disk2vhd.exe" //VHDファイル保存ディレクトリ(末尾\無し) CONST C_VHD_DIR = "F:\VHD" //VHDファイルプレフィックス CONST C_VHD_PREFIX = "bkup_vhd_" //バックアップ対象ドライブ(例.aryBackUpDrive[] = "C:\","D:\") Dim aryBackUpDrive[] = "C:\" //============================================================ // 定数 //============================================================ //チェックボックス状態 CONST C_CHECKBOX_NULL = -1 CONST C_CHECKBOX_OFF = 0 CONST C_CHECKBOX_ON = 1 CONST C_CHECKBOX_INVALID = 2 //ドライブレター用文字定数 CONST C_CHAR_C = 67 CONST C_CHAR_Z = 90 //============================================================ // メイン処理 //============================================================ Dim WindowId=Exec(C_D2V_PATH) If WindowId < 0 Then WindowId = GetId("Disk2vhd - Sysinternals: www.sysinternals.com","Disk2VhdClass") If WindowId < 0 Then ExitExit EndIf EndIf //VHDファイル名 GETTIME() Dim strVhdFileName = C_VHD_DIR + "\" + C_VHD_PREFIX + G_TIME_YY4 + G_TIME_MM2 + G_TIME_DD2 + ".vhd" sendstr(WindowId,strVhdFileName,1,TRUE) //不要なドライブノチェックをはずす Dim DriveIdx Dim DriveLetter Dim BackUpDriveIdx For DriveIdx = C_CHAR_C to C_CHAR_Z DriveLetter = ChrB(DriveIdx) + ":\" For BackUpDriveIdx = 0 to Length(aryBackUpDrive) - 1 If DriveLetter <> aryBackUpDrive[BackUpDriveIdx] Then CheckOff(WindowId,DriveLetter) EndIf Next Next //実行 //clkitem(WindowId,"Create",CLK_BTN) //処理終了待ち合わせ //未実装 //終了 //clkitem(WindowId,"Close",CLK_BTN) //============================================================ // チェック解除 //============================================================ Procedure CheckOff(pWindowId,pTitle) Dim strCheckStatus strCheckStatus = clkitem(pWindowId,pTitle,CLK_LSTVEW) If strCheckStatus = C_CHECKBOX_ON Then //Check Off CLKITEM(pWindowId,pTitle,CLK_LSTVEW) //クリックで選択しかされないのでスペースを送る SCKEY(pWindowId,VK_SPACE) EndIf Fend //============================================================ // Memo //============================================================ //【起動オプション】 //オプションなしでスクリプト名と引数を指定した場合は、スクリプトを実行し、実行後はUWSC本体を終了します。 //UWSC.exe スクリプト名 [引数...] // ///L ///L オプションを付けると、実行はせずに、UWSC本体にファイルを読み込ませるのみとなります。 //UWSC.exe /L スクリプト名 [引数...] // ///K ///K オプションを付けると、スクリプトを実行し、実行後はUWSC本体を起動したままにします。 //UWSC.exe /K スクリプト名 [引数...] //