我有一个小脚本,可每60秒为PC电池电量分级并写入一个文本文件(我尝试过export-csv)。但是,脚本只会将相同的值写入文件,并且不会更改或增加正确。
$csvfile = "c:\Users\PC-battery.csv"
$Battstatus = (Get-WmiObject -Class Win32_Battery).estimatedchargeremaining
while ($true)
{
"$Battstatus" | Add-Content $csvfile
Start-Sleep -Seconds 60
}
答案 0 :(得分:3)
您遇到的问题是,$Battstatus
的值在您首次设置后就永远不会更新。您要向系统询问一次电池状态,然后进入一个无限循环,在该循环中您只需返回该值即可。
相反,您需要在循环内 检索值,如下所示:
$csvfile = "c:\Users\PC-battery.csv"
while ($true)
{
$Battstatus = (Get-WmiObject -Class Win32_Battery).estimatedchargeremaining
$Battstatus | Add-Content $csvfile
Start-Sleep -Seconds 60
}
我也取消了变量引用的引号,因为我认为它们不是必需的(除非我误解了变量的值,如果需要可以将其重新使用)。
还要注意:Add-Content
仅附加到文件,它不支持CSV。您可以利用PowerShell使用对象的优势,并将所有电池信息放入适当的CSV中,如下所示:
$csvfile = "c:\Users\PC-battery.csv"
while ($true)
{
$Battstatus = Get-WmiObject -Class Win32_Battery
$Battstatus | Export-Csv $csvfile -NoTypeInformation -Append
Start-Sleep -Seconds 60
}
(未经测试,可能会有一些怪癖)