2016-12-22 52 views
1

我有以下脚本,其中当满足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} 

真正的路径已经被隐藏在<“路径”>解释说这是一个目录路径。

符合if(-not)条件时触发的脚本路径将替换为<>中要运行的ps-script-path-path。 <>只是注释的括号,所以不要将它们与实际的代码符号混淆。

回答

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 
} 
+0

$ resulterror变量在那里仍然是空的 –

0

你的变量$ resulterror是空的,因为你的脚本最begining保存它,当时没有错误。尝试在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} 
相关问题