我有一个执行多项操作的 PowerShell 脚本,并接受延迟参数(以秒为单位的时间)。我想启动一个后台作业,在延迟参数定义的时间后播放声音。
所以用户输入如下内容:
.\RunMyScript -delay 10
在我的脚本中,我的参数块如下所示:
param([int]$delay, [switch] $cleanup)
现在,$delay 参数在我的脚本中无处不在,但是当我使用 Start-Job 时它不起作用。我尝试了以下两种方法,但都没有奏效。
方法 1
$PlayStartSound = {
Start-Sleep -s $delay
[System.Media.SystemSounds]::Beep.Play();
}
Start-Job $PlayStartSound
方法 2
Start-Job –Scriptblock {Start-Sleep -s $delay; [System.Media.SystemSounds]::Beep.Play();}
两种方法都会立即播放声音,忽略延迟。如果我用这样的数字替换 $delay ,那么它可以工作:
Start-Job –Scriptblock {Start-Sleep -s 10; [System.Media.SystemSounds]::Beep.Play();}
我很好奇为什么 $delay 不在范围内,我该如何解决这个问题?感谢您的关注。