Я создаю сценарий для чтения данных процессора и памяти за определенное время и экспортирую их в электронную таблицу Excel.
Кажется, что все работает правильно, пока не дойдет до "$ sheet.Cells.Item ($ rowStartTime + $ i, $ colStartTime) .value = $ StartTime", где я публикую дату и время в ячейке.
Я протестировал изменение переменной $ StartTime для строки, такой как «TIME», и она записывает в ячейку, но если я это сделаю и $ StartTime = $ StartTime.ToString (), я получу то же самое «Указанное приведение недействительно"ошибка, что заставляет меня думать, что проблема может быть связана с форматом даты.
Ниже сценария приветствуется любая помощь.
$timeout = new-timespan -Minutes 10
$file = "C:\Users\i859241\Desktop\resultilz.xlsx"
$sheetName = "UNO"
$objExcel = New-Object -ComObject Excel.Application
$workbook = $objExcel.Workbooks.Open($file)
$sheet = $workbook.Worksheets.Item($sheetName)
$objExcel.Visible=$false
$i=0
$rowStartTime,$colStartTime = 2,1
$rowCPULoad,$colCPULoad = 2,2
$rowpctFree,$colpctFree = 2,3
$sw = [diagnostics.stopwatch]::StartNew()
Get-WmiObject -Class Win32_logicaldisk
while ($sw.elapsed -lt $timeout){
$StartTime = Get-Date
$os = Get-Ciminstance Win32_OperatingSystem
$CpuLoad = (Get-WmiObject win32_processor | Measure-Object -
property LoadPercentage -Average | Select Average ).Average
pctFree =[math]::Round(($os.FreePhysicalMemory/$os.TotalVisibleMemorySize)*100,2)
Write-Host $StartTime, $pctFree, $CpuLoad
$sheet.Cells.Item($rowStartTime+$i,$colStartTime).value = $StartTime
$sheet.Cells.Item($rowCPULoad+$i,$colCPULoad).value = $CPULoad
$sheet.Cells.Item($rowpctFree+$i,$colpctFree).value = $pctFree
start-sleep -seconds 2
}
write-host "Timed"
$workbook.save()
$workbook.close()
$objExcel.quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcel)
Stop-Process -Name EXCEL -Force