错误未记录到输出日志文件中

时间:2016-12-22 07:23:45

标签: powershell

我有以下脚本,当满足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;只是注释的括号,所以不要将它们与实际的代码符号混淆。

2 个答案:

答案 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}