【发布时间】:2023-01-24 02:48:19
【问题描述】:
我正在尝试使用 PowerShell 告诉我计算机何时使用电池或交流电源。
我希望我的脚本在笔记本电脑的充电器拔下时向我发送 Windows 通知。
目前,我尝试使用递归函数每 5 秒测试一次电池状态,但它不起作用......
请放纵我的水平,3 小时前我对 PowerShell 一无所知……而且我上次编写代码是很久以前的事了!
Function Test-IsOnBattery
{
$battery = Get-WmiObject Win32_Battery
If ($battery.BatteryStatus -eq 2) {
Write-Host "PC sur secteur."
Start-Sleep -Seconds 5
return Test-IsOnBattery
}
Else {
Write-Host "PC sur batterie."
New-BurntToastNotification -Text "Battery Notification" , "Batterie plus sur secteur !"
}
}
【问题讨论】:
-
但什么是“但它不起作用...“?你有错误吗?会发生什么/不会发生什么?
-
你的功能对我来说很好。刚刚测试过它并且工作正常。我肯定会使用
while循环而不是递归,但除此之外看起来不错 -
PowerShell 没有任何尾调用优化方式。用递归来实现一个可能无界的循环,肯定是迟早要耗尽栈的,所以不要这样做。在这种情况下也没有实际需要,因为它不会使代码更简单。
标签: powershell recursion