作为一个恶作剧的一部分,我制作了一个PowerShell脚本,将音量提升到最高水平并播放10个屁声中的1个。它由.bat。
调用当我在Powershell ISE程序中运行它时,它运行得很好但是当我从.bat文件调用PS1时,声音没有发出(但是脚本的其他方面都有效)。在我调试时,我添加了“奇怪的部分”(见下文),并且.bat文件开始工作并且每次都播放随机噪音(不仅仅是声音0)
这是什么原因?
$a=0
while ($a -lt 100){
$obj = new-object -com wscript.shell
$obj.SendKeys([char]175)
$a=$a+1
}
$x= random(10)
$sound = new-Object System.Media.SoundPlayer
$file="S:\Test\farts\$x.wav"
$sound.SoundLocation=$file
$sound.Play()
write-host $x
& soundplayer.play("S:\Test\farts\0.wav");
(由@ powershell.exe -executionpolicy Bypass -file S:\ POWERSHELL_SCRIPTS \ fart.ps1调用)
答案 0 :(得分:1)
我尝试玩了一段时间的脚本,但感到惊讶的是您的设置正确,当不在交互式Powershell中运行脚本时声音无法播放。
在进行一些挖掘之后,在MSDN上找到了该线程,这说明了原因:
出于安全目的,媒体播放器需要交互式UI。
如果您只是想播放一些声音(而不是放屁),我会使用:
[system.Console]::beep(<Frequency>,<Time in ms>)
我在很多脚本中使用它来提醒我一些事情