小難しくない程度にPowershellでもにょもにょやってみました。
作ってみたけどお蔵入り…orz
Windows Server Backup by powershell
WBADMINによるSYSTEMバックアップ取得が失敗した場合に、PSのerrorlevelに相当する$lastexitcodeを使用して正常終了(0)でない場合に、自分で作ったフォルダを片付けてスクリプトを離脱exitする。だけ。
point
- \$lastexitcode
dosでいうerrorlevelと同じように扱える
- \$ret= Invoke-Expression -Command \$command2
Invokeに渡すときは$commandのように変数に1つに固める。\$ret= で出力を取出せる
- Remove-Item $bkup_path -recurse
フォルダ消去。recurseで中身・サブフォルダごと。
WSBSYSBACKUP.ps1
###ログの指定と格納先準備
$logfile = "C:\UserScripts\WSB_LOG.txt"
$bkup_path ="\\192.168.1.10\ABChost_sysbk\"
$DateText = get-date -format "yyyyMMdd_HHmmss"
$bkup_path = $bkup_path + $DateText
###フォルダ作る
md $bkup_path
###WSBコマンド
$command = "WBADMIN Delete Catalog -quiet"
$command2 = "WBADMIN START BACKUP -backupTarget:" + $bkup_path + " -allCritical -systemState -vssFull -quiet"
###いざ実行
Invoke-Expression -Command $command
$ret= Invoke-Expression -Command $command2
###WSBログはoutしとく
echo $ret > $logfile
###エラー処理(正常の0じゃneぇとき反応。WSBを直接キャンセルすると-3とか。)
if ($lastexitcode -ne 0){
echo "WBADMINが正常に終了しなかったため処理を中断します。return:$lastexitcode" >> $logfile
echo "この処理で作成した次のフォルダのバックアップは不完全です。" >> $logfile
echo "$bkup_path は自動削除します。" >> $logfile
###フォルダは消す
Remove-Item $bkup_path -recurse
exit ###離脱
}else{
}
以降に、引き続き正常な時の処理を書く