以下函数用于在PowerShell中实现阻塞睡眠
执行Start-Sleep
cmdlet时会出现以下错误:
“无法验证参数'Seconds'的参数。 参数为null,为空,或者参数集合的元素包含空值“
echo打印正确的参数值,但参数不会传递给cmdlet。 我尝试了一个具有相同结果的局部变量。试图将其转换为字符串或整数 - 无济于事。如果数字是硬编码的唯一方法
function BlockedSleep($numSecs)
{
echo "Sleeping $($numSecs) seconds"
$job = Start-Job {Start-Sleep -s $numSecs }
Wait-Job $job >$null #this supresses job output to console
Receive-Job $job
}
答案 0 :(得分:0)
作业在另一个无法访问脚本参数的线程中执行。您可以将变量作为参数包含在scriptblock中:
$job = Start-Job {param($secs) Start-Sleep -Seconds $secs } -ArgumentList $numSecs
或者您可以使用使用变量范围(PS 3.0 +):
$job = Start-Job {Start-Sleep -Seconds $using:numSecs }