我有以下脚本,当满足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}实际路径已被隐藏,<>中的" path“解释它是一个目录路径。
在<>中,当满足if(-not)条件时触发的脚本的路径将替换为要运行的ps脚本的路径。<>只是注释的括号,所以不要将它们与实际的代码符号混淆。
发布于 2016-12-22 15:46:57
我将使用-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
}发布于 2016-12-22 15:50:48
您的变量$resulterror是空的,因为您在脚本一开始就保存了它,并且当时没有任何错误。尝试在IF条件下使用显式$error.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}https://stackoverflow.com/questions/41277756
复制相似问题