【问题标题】:How To Create A Log For Failed Events如何为失败的事件创建日志
【发布时间】:2015-04-18 16:03:39
【问题描述】:

我有一个非常简单的 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 非常陌生,绝不是专家。

再次感谢

【问题讨论】:

    标签: windows powershell windows-7 scripting


    【解决方案1】:

    您可以使用 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 
    

    存在。

    这只是因为我没有为Copy-Item 使用-Force 参数,这会覆盖文件。

    旁注

    我认为您也可以将Move-Item 用于此代码。

    根据此代码在同一会话中运行的频率,您可能需要将变量 $events 设置为 $null 或等效值,这样您就不会得到重复的输出。

    【讨论】:

      猜你喜欢
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      相关资源
      最近更新 更多