Использование PsObject для автоматического заполнения строк таблицы в цикле while - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу установить скрипт powershell, который будет добавлять новую строку данных в таблицу HTML в выходной файл до тех пор, пока пользователь не прервет его.Этот конкретный пример пишется для записи текущего используемого места на жестком диске вместе с меткой времени каждые две секунды в файл HTML.

Я попытался использовать файл CSV для вывода, но сценарий не может записатьк CSV-файлу и открыть его одновременно.Это важно.

$Header = @"
<style>
TABLE {border-width: 1px; border-style: solid; border-color: gray; border-collapse: collapse;}
TH {border-width: 1px; padding: 3px; border-style: solid; border-color: black; background-color: #E1DEDC;}
TD {border-width: 1px; padding: 3px; border-style: solid; border-color: gray;}
</style>
"@

$DateTime = Get-Date -Format G
$FreeDiskSpace = Get-WmiObject -Class Win32_logicaldisk -Filter "DriveType ='3'" | Select -ExpandProperty FreeSpace

Write-Output $Table1| ConvertTo-Html -Head $Header | Out-File -FilePath C:\users\public\documents\FreeSpaceTimeStamp.html

while ($True)
{

$Table1 = new-object psobject
$Table1 | add-member noteproperty Date/Time $DateTime
$Table1 | add-member noteproperty FreeSpace $FreeDiskSpace

Start-Sleep -Seconds 2
}

Сейчас код не добавляет строки в один и тот же HTML-файл, а просто зависает в цикле while, и я не понимаю, почему.

Любая помощь приветствуется.

Спасибо,

Сет

1 Ответ

0 голосов
/ 16 апреля 2019

Что касается…

Существует ли способ добавления строки в объект PsObject

... См. Эти вопросы и ответы.

Powershell: добавление строк в пользовательские объекты

# array of objects (not 'lines'). So
$serverList= @() 
$serverList+= @{ServerName= 'blabla1'; OSType='Windows XP'}
$serverList+= @{ServerName= 'blabla2'; OSType='Windows XP Profesional'}

#display as table
$serverList | % { new-object PSObject -Property $_}

Вы делаете это в памяти, пока пользователь не закончит, затем напишите или обновите сериализованный файл.Нет, пока он не открыт другим заблокированным процессом.Только один процесс может редактировать файл одновременно.Это не ограничение PowerShell, это ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...