2016-12-22 53 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} 
相關問題