[CmdletBinding()] param ( [Parameter(Mandatory = $false)] [String]$filePath ) $metrics = Get-CimInstance Win32_ReliabilityStabilityMetrics -ErrorAction SilentlyContinue if ($metrics.Count -ge 1) { $metric = $metrics | Sort-Object TimeGenerated -Descending | Select-Object -First 1 } else { throw ("Get-CimInstance") } if ($filePath) { $records = Get-CimInstance -ClassName Win32_ReliabilityRecords |Where-Object {($_.TimeGenerated -ge $metric.StartMeasurementDate) -and ($_.TimeGenerated -lt $metric.EndMeasurementDate)} | Sort-Object TimeGenerated |Select ComputerName, EventIdentifier, LogFile, Message,ProductName,RecordNumber,SourceName,TimeGenerated,User if ($records.Count -eq 0) { $records = "信頼性に関連するログは記録されていません。期間:$($metric.StartMeasurementDate)~$($metric.EndMeasurementDate)" } # -Encoding UTF8|UTF8BOM|UTF8NOBOM|ANSI(シフトJIS)|ASCII|UNICODE $records | Out-File -FilePath $filePath -Encoding UTF8 -Force } return [Math]::Round($metric.SystemStabilityIndex * 10)