2016-12-22 17 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-to-runのパスに置き換えられます。 <>はコメントの括弧にすぎないので、実際のコードシンボルと混同しないでください。

答えて

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が空で、その時にエラーはなかった。 IF条件で$ 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 $?) {$error[0].exception.message >> $log ; invoke-expression -Command "<path-of-ps-script-to-run>"} 

else {"Backup "+$BckDate+" done successfully" >> $log} 
関連する問題