我有以下循环:
$output = (command)
do {
something
} while ($output -match "some string")
哪个工作正常。我想在循环中添加超时,我该怎么做?期望在某些时候输出与字符串不匹配,但如果输出永远与字符串匹配,我不希望它永远运行。
答案 0 :(得分:9)
只需使用Get-Date
cmdlet并检查while
条件下的内容。例如:
$startDate = Get-Date
$output = (command)
do {
something
} while ($output -match "some string" -and $startDate.AddMinutes(2) -gt (Get-Date))
答案 1 :(得分:1)
尽管使用Get-Date
Cmdlet是有效的,但更干净的方法是使用System.Diagnostics.Stopwatch
类,该类在.NET Core> = 1.0中可用。
$timeout = New-TimeSpan -Seconds 5
$stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
do {
# do stuff here
} while ($stopwatch.elapsed -lt $timeout)
来源: