如何让 Windows PowerShell 在 .bat 作业完成 运行 后播放声音?
How do you get Windows PowerShell to play a sound after .bat job has finished running?
如标题所述,我在 PowerShell 中有一个 .bat
作业 运行,当它完成 运行 时,我希望发出声音通知。我想知道是否有可以添加到现有 PowerShell 命令的 PowerShell 命令。
您可以使用 powershell 自动变量来检查 bat 文件状态..根据 this,$?
returns 如果命令成功..
下面是示例代码
$a =Invoke-Command -ScriptBlock {
& "C:\temp1\test.bat"
}
if($?){
[console]::beep(500,300)
}
您还可以播放自定义声音,
$PlayWav=New-Object System.Media.SoundPlayer
$PlayWav.SoundLocation=’C:\Foo\Soundfile.wav’
$PlayWav.playsync()
参考资料:
https://devblogs.microsoft.com/scripting/powertip-use-powershell-to-play-wav-files/
除了@TheGameiswar 建议的解决方案之外,您还可以通过让系统实际与您对话来获得一些乐趣:
# Create a new SpVoice objects
$voice = New-Object -ComObject Sapi.spvoice
# Set the speed - positive numbers are faster, negative numbers, slower
$voice.rate = 0
# Say something
$voice.speak("Hey, Harcot, your BAT file is finished!")
注意:我只在Windows 10上测试过,所以它可能不适用于其他版本,但试试看。
除了boxdog () and TheGameiswar ()的优秀解决方案外,我想提另一种可能性,它可以让你播放一些标准的系统声音:
[System.Media.SystemSounds]::Asterisk.Play()
[System.Media.SystemSounds]::Beep.Play()
[System.Media.SystemSounds]::Exclamation.Play()
[System.Media.SystemSounds]::Hand.Play()
[System.Media.SystemSounds]::Question.Play()
如标题所述,我在 PowerShell 中有一个 .bat
作业 运行,当它完成 运行 时,我希望发出声音通知。我想知道是否有可以添加到现有 PowerShell 命令的 PowerShell 命令。
您可以使用 powershell 自动变量来检查 bat 文件状态..根据 this,$?
returns 如果命令成功..
下面是示例代码
$a =Invoke-Command -ScriptBlock {
& "C:\temp1\test.bat"
}
if($?){
[console]::beep(500,300)
}
您还可以播放自定义声音,
$PlayWav=New-Object System.Media.SoundPlayer
$PlayWav.SoundLocation=’C:\Foo\Soundfile.wav’
$PlayWav.playsync()
参考资料:
https://devblogs.microsoft.com/scripting/powertip-use-powershell-to-play-wav-files/
除了@TheGameiswar 建议的解决方案之外,您还可以通过让系统实际与您对话来获得一些乐趣:
# Create a new SpVoice objects
$voice = New-Object -ComObject Sapi.spvoice
# Set the speed - positive numbers are faster, negative numbers, slower
$voice.rate = 0
# Say something
$voice.speak("Hey, Harcot, your BAT file is finished!")
注意:我只在Windows 10上测试过,所以它可能不适用于其他版本,但试试看。
除了boxdog (
[System.Media.SystemSounds]::Asterisk.Play()
[System.Media.SystemSounds]::Beep.Play()
[System.Media.SystemSounds]::Exclamation.Play()
[System.Media.SystemSounds]::Hand.Play()
[System.Media.SystemSounds]::Question.Play()