我有以下脚本,当满足if(-not)
条件时,正在生成日志文件,但不会在日志文件中写入错误。
我对脚本语言有非常基本的了解,因此无法理解为什么没有记录任何内容。感谢帮助。
$resulterror = $error[0].exception.message
$BckDate = Get-Date -Format "ddMMyyyy"
$BckFolder = "<path>"+$BckDate
$log = "<path>"+$BckDate+".log"'
Copy-Item -Path $BckFolder -Destination <drive-letter> -ErrorAction silentlyContinue -recurse
if(-not $?) {$resulterror >> $log ; invoke-expression -Command "<path-of-ps-script-to-run>"}
else {"Backup "+$BckDate+" done successfully" >> $log}
实际路径已隐藏在&lt;&gt;中的“路径”解释它是一个目录路径。
在满足if(-not)条件时触发的脚本路径将替换为&lt;&gt;中的ps-script-to-run路径。 &lt;&gt;只是注释的括号,所以不要将它们与实际的代码符号混淆。
答案 0 :(得分:0)
我会使用-ErrorVariable
高级参数将错误消息存储在该变量中并访问它:
Copy-Item -Path $BckFolder -Destination <drive-letter> -ErrorAction silentlyContinue -recurse -ErrorVariable copyError
if($copyError)
{
$resulterror | Out-File -FilePath $log -Append
invoke-expression -Command "<path-of-ps-script-to-run>"
}
else
{
"Backup "+$BckDate+" done successfully" | Out-File -FilePath $log -Append
}
答案 1 :(得分:0)
您的变量 $ resulterror 是空的,因为您在脚本的开头保存它并且当时没有错误。尝试在IF条件下使用显式 $ error [0] .exception.message 而不是$ resulterror。
$BckDate = Get-Date -Format "ddMMyyyy"
$BckFolder = "<path>"+$BckDate
$log = "<path>"+$BckDate+".log"
Copy-Item -Path $BckFolder -Destination <drive-letter> -ErrorAction silentlyContinue -recurse
if(-not $?) {$error[0].exception.message >> $log ; invoke-expression -Command "<path-of-ps-script-to-run>"}
else {"Backup "+$BckDate+" done successfully" >> $log}