Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PowerShell每分钟监控文件大小并将结果导出到csv_Powershell_Powershell 3.0 - Fatal编程技术网

使用PowerShell每分钟监控文件大小并将结果导出到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

我希望使用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 = 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个样本,或者您可以计算开始时间和结束时间,然后采样,直到该窗口过期。