我正在寻找一个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循环中,我不明白为什么。
感谢您的帮助。
谢谢
塞思
答案 0 :(得分:0)
至于……
有没有向PsObject添加行的方法
...请参阅此问答。
Powershell: Add lines to a custom objects
# 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的限制,它是一个操作系统。