私はPowershellでrobocopyをやっています。そして、私が望むのは、ログファイルを書くことです。 Robocopyは動作しますが、tryとcatchはうまく動作しません。ここに私のPowerShellのコードがある:シンプルなtry catchは動作しませんPowershell
function Write-Log{[CmdletBinding()]
Param(
[Parameter(Mandatory=$False)]
[ValidateSet("INFO","WARN","ERROR","FATAL","DEBUG")]
[String]
$level = "INFO",
[Parameter(Mandatory=$True)]
[string]
$message ,
[Parameter(Mandatory=$True)]
[string]
$logfile
)
$timeStamp = (Get-Date).toString("dd.MM.yyyy HH:mm:ss")
$line = "$timeStamp $level $message"
if($logfile) {
Add-Content $logfile -Value $line
} else {
Write-Output $line
}}
try {C:\WINDOWS\SysWOW64\robocopy.exe "C:\Users\boriv\Desktop\por" "C:/users/boriv/desktop/1" robocopy *.* /MIR /EFSRAW /DCOPY:DAT /A+:R /A-:AE /IA:ACEHNORST /V /BYTES}
catch { Write-Log -message "Der Kopiervorgang war nicht erfolgreich" -logfile "C:\users\boriv\Desktop\$(get-date -f dd-MM-yyyy).txt" -level ERROR}
Write-Log -message "Der Kopiervorgang war erfolgreich" -logfile "C:\users\boriv\Desktop\$(get-date -f dd-MM-yyyy).txt" -level INFO
ROBOCOPYには/ LOGまたは/ LOG +オプションがあります。あなたはそれを使うことができますか?私はあなたがtry catchで達成しようとしていたことを理解していません。エラーがなければ、何も記録されません。 –
@ShawnEstermanいいえROBOCOPY LOGオプションを使用することはできません。毎日新しいログファイルを作成したいからです。私はrobocopyでそれを行うことはできません。しかし、試しフレーズに間違いがあると、それはキャッチに行きません。それは止まるでしょう。 – Doggo
これはオプションです:robocopy.exe .../LOG: "C:\ users \ boriv \ Desktop \ $(取得日-f dd-MM-yyyy)" –