我有一个非常简单的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的新手,绝不是专家。
再次感谢
答案 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
或等效,这样您就不会获得重复输出。