我正在处理一些将采用一系列性能计数器的代码,然后将计数器放在一个 .csv 文件中,该文件每次达到 1MB 时都会翻转。
$Folder="C:\Perflogs\BBCRMLogs" # Change the bit in the quotation marks to whatever directory you want the log file stored in
$Computer = $env:COMPUTERNAME
$1GBInBytes = 1GB
$p = LOTS OF COUNTERS;
# If you want to change the performance counters, change the above list. However, these are the recommended counters for a client machine.
$num = 0
$file = "$Folder\SQL_log_${num}.csv"
if( !(test-path $folder)) {New-Item $Folder -type directory}
Get-Counter -counter $p -SampleInterval 2 -Continuous | Foreach {
if ((Get-Item $file -ErrorAction SilentlyContinue ).Length -gt 1mb)
{
$num +=1
$file = "$Folder\SQL_log_${num}.csv"
}
$_
} | Foreach-Object { $_ | Export-Csv $file -Force -Append}
现在,它运作良好。迭代工作正常,每次 .csv 达到 1MB 时都会创建一个新文件。但是,第一个 .CSV 之后的每个 .CSV 在 2 分钟后已创建为 1MB,从而导致创建一个新文件。我不太确定为什么会发生这种情况,尽管我相信这是因为 Powershell 只是在每次创建它时重写整个 .csv。