如何为失败的事件创建日志

时间:2015-02-17 20:15:12

标签: windows powershell windows-7 scripting

我有一个非常简单的PowerShell脚本,我将数据复制到一个文件夹中,并将其放在外部硬盘上。我想为失败的事件创建一个日志文件(意味着如果没有复制某些数据)数据可以是.txt文件。这是我的简单日志文件。

Set-ExecutionPolicy Unrestricted -Force

Copy-Item -Path C:\Program Files (x86)\Cummins Allisson\TempData\iFX1\* -Destination D:\backup -recurse

Set-ExecutionPolicy Unrestricted -Force

Remove-Item C:\Program Files (x86)\Cummins Allison\TempData\iFX1\* -recurse 

我很感激这方面的帮助。我是PowerShell的新手,绝不是专家。

再次感谢

1 个答案:

答案 0 :(得分:0)

您可以使用common parameters -ErrorAction-ErrorVariable来帮助您。

Copy-Item -Path C:\Program Files (x86)\Cummins Allisson\TempData\iFX1\* -Destination D:\backup -recurse -ErrorAction SilentlyContinue -ErrorVariable events

Remove-Item C:\Program Files (x86)\Cummins Allison\TempData\iFX1\* -recurse -ErrorAction SilentlyContinue -ErrorVariable events

然后你将得到变量$events,它将包含这两个命令发生的错误的所有细节。 SilentlyContinue抑制了屏幕上的错误输出,除了存储在默认变量$error中之外,还存储在$events中。

$events.Exception | Set-Content c:\temp\log.log

这会为您提供样本数据,如

An item with the specified name C:\temp\data2\data already exists.
An item with the specified name C:\temp\data2\data\folder1 already exists.
An item with the specified name C:\temp\data2\data\folder1\folder2 already 

存在。

仅发生这种情况,因为我没有使用-Force Copy-Item参数来覆盖文件。

旁注

我认为您也可以使用Move-Item来代码。

取决于如何在同一会话中运行此代码,您可能需要将变量$events设置为$null或等效,这样您就不会获得重复输出。