【发布时间】:2017-01-13 15:08:40
【问题描述】:
所以我正在使用 Powershell 进行 robocopy。我想要的只是写一个日志文件。 Robocopy 有效,但 try and 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 做到这一点。但是,当在 try 短语中出现错误时,它不会被抓住。它会停止。
-
我的意思是这是一个选项:robocopy.exe ... /LOG:"C:\users\boriv\Desktop\$(get-date -f dd-MM-yyyy)"跨度>
标签: powershell try-catch