【问题标题】:Looking for a better way to record or track when a script runs寻找一种更好的方法来记录或跟踪脚本何时运行
【发布时间】:2020-12-22 08:18:57
【问题描述】:

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

是否有更好的方法来做到这一点,因为我确信 csv 最终会损坏?

谢谢。

【问题讨论】:

  • 要么使用标志文件来锁定 CSV 更新,要么使用数据库。
  • 但是锁定 CSV 会阻止它被其他人更新,对吧?你能解释更多关于数据库的信息吗?

标签: database powershell csv append record


【解决方案1】:

在这种情况下,我将使用 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 文件。

【讨论】:

  • 我会试试的。谢谢
猜你喜欢
  • 2017-07-30
  • 2014-10-21
  • 1970-01-01
  • 2011-01-27
  • 2020-06-22
  • 2017-08-11
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
相关资源
最近更新 更多