使用PowerShell每分钟监控文件大小并将结果导出到csv
我希望使用PowerShell监视应用程序错误日志的文件大小,并在24小时内每分钟将该大小写入一个.csv文件。我不确定代码中的问题在哪里。任何帮助都将不胜感激。多谢各位使用PowerShell每分钟监控文件大小并将结果导出到csv,powershell,powershell-3.0,Powershell,Powershell 3.0,我希望使用PowerShell监视应用程序错误日志的文件大小,并在24小时内每分钟将该大小写入一个.csv文件。我不确定代码中的问题在哪里。任何帮助都将不胜感激。多谢各位 $a = dir c:\users\rob\desktop\testharness\TestFile.txt $a | Add-Member -MemberType AliasProperty -Name FileLength -Value Length $b = $a.FileLength $MaxSamples = 144
$a = dir c:\users\rob\desktop\testharness\TestFile.txt
$a | Add-Member -MemberType AliasProperty -Name FileLength -Value Length
$b = $a.FileLength
$MaxSamples = 1440
$SampleInterval = 1
write-host "starting job"
Start-Job {
Param($jobs, $sample, $interval)
$jobs
$sample
$interval
Get-Counter $jobs -MaxSamples $sample -SampleInterval $interval |
Export-Counter -path $home\FileSize.csv -FileFormat CSV -Force
} -Name test -ArgumentList @($b, $MaxSamples, $SampleInterval)
Wait-Job test | Remove-Job
write-host "job done"
你喜欢这个工作吗
$LogFile = 'c:\Temp\log.txt'
$Csv = 'c:\Temp\LogFileSize.csv'
$MinsIn24Hours = 1440
"Time,Size" | Out-File $Csv
for ($i = 0; $i -lt $MinsIn24Hours; $i++) {
$now = Get-Date -format "dd-MMM-yyyy HH:mm"
# Get file size and confirt to minutes
$Size = (Get-Item $LogFile).Length / 1KB
"$Now,$Size KB" | Out-File $Csv -Append
Start-Sleep -Seconds 60
}
注意:由于每次迭代都需要一些时间来执行,因此您可能会在24小时内损失几秒钟:
Measure-Command{
$now = Get-Date -format "dd-MMM-yyyy HH:mm"
$Size = (Get-Item $LogFile).Length / 1KB
"$Now,$Size KB" | Out-File $Csv -Append
}
11毫秒*1440=
15.84秒我认为您的代码不完整,是否也可以添加$jobs定义。您提供的代码示例应该最小且可验证。您在作业中使用的Get-Counter CMDlet用于从本地计算机(或远程计算机)获取性能计数器。据我所知,不会有一个计数器来测量计算机上特定文件的文件大小。如果您希望在大约24小时内获得1440个样本,或者您可以计算开始时间和结束时间,然后采样,直到该窗口过期。