私がやっていることはいくつかのデータベースをバックアップすることです。プロセスの一部はそれらを圧縮して1つのファイルだけでなく、次のコードがあります。
# 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, etc
$blocation = 'c:\SQLBackups'
$7zlocation = 'c:\Program Files\7-Zip\7z.exe'
$date = Get-Date
$daynum = [int]$date.DayOfWeek
$month = Get-Date -Format MM
$day = (Get-Date).AddDays(0).ToString('dd')
$sqlfile = "*_backup_" + $date.Year + "_" + $month + "_" + $day + "_*.bak"
cd $blocation
& $7zlocation d ABOCH2_SQL_backup.zip *.bak
& $7zlocation u ABOCH2_SQL_backup.zip *.bak
if($lastExitCode -eq 0) {
del /q *.bak
}
以前の実行から.zipファイルを空にした後、新たにダンプされたデータベースとの.zipファイルを更新し、.zipファイルが正常に更新された後、次にデータベースのみを削除します。私が直面する問題は、これを実行した後、.zipファイルが新しいデータベースで更新されるということです。しかし、$lastExitCode
は機能していないので、.zipに正常に追加されたデータベースは決して削除されず、古いデータベースのバックログが蓄積してしまいます。
何か不足していますか、間違っていますか?
CMD使用することができたい場合は、「$ lastExitCodeが機能していない」というあなたの主張を拡張してください - あなたはどうやったのかこの結論に来る? 7-zipの最後の呼び出し後の値は何ですか? –
少なくとも更新操作の出力も表示します。また、古いアーカイブの名前を変更したり、新しいアーカイブを作成したりする代わりに、zipアーカイブからファイルを削除して追加するのはなぜですか? –
また、 'del'は' remove-item'のエイリアスであり、異なる構文を使用するため、 'del/q * .bak'も失敗します。 'del.exe/q * .bak'はそれに対処する必要があります。代わりにコマンドレットを使用することを検討してください。 – Matt