0

我希望设置一个 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 循环中,我不明白为什么。

任何帮助表示赞赏。

谢谢,

赛斯

4

1 回答 1

0

至于……</p>

是否有向 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 限制,而是操作系统限制。

于 2019-04-16T03:37:34.413 回答