寻找更好的方式来记录或跟踪脚本何时运行

问题描述

我有一个Powershell脚本,它可以实现远程IT支持。为了跟踪其使用情况,它会记录当前用户名称,日期,时间和当前计算机名称,并将其附加到存储在网络驱动器中的csv文件中。大约有20个人潜在地使用这些脚本,因此csv文件可以尝试同时打开和写入条目。

是否有更好的方法,因为我确定csv最终会损坏?

谢谢。

解决方法

在这种情况下,我将使用EventLog通过Write-EventLog记录事件。

$server = "My-Log-Server" # Log server name or IP
$eventChannel = "Application" # EventLog. It is possible to choose any existing or create own.
$provider = "Calculator" # Provider of event. It is possible to choose any existing or create own.
$eventid = 300 # Id of the event

# Message: current computer,current user,date/time
$msg = ( $env:COMPUTERNAME,$env:USERNAME,( Get-Date ).ToString( "yyyy-MM-dd HH:mm:ss" )) -join","

Write-EventLog -ComputerName $server -LogName $eventChannel -Source $provider -EventID $eventid -EntryType Information -Message $msg

然后选择

  1. 执行计划任务以使用Get-WinEvent收集事件并将记录追加到csv文件中,或者
  2. 进行事件驱动的任务,该任务会将记录追加到csv文件中。