我想找到一种用powershell更改windows默认声音的方法。
在vbs中,它是这样写的:
WshShell.RegWrite "HKCUAppEventsSchemesApps.Default.Default.Current","c:windowsmediahorn.wav","REG_SZ"
我试着调用命令,但不知道正确的方法。
Powershell没有用于此功能的本机cmdlet,此外,您必须使用C#
才能在Powershell中获得该功能。
幸运的是,有人做了艰苦的工作,并将其放入模块中,检查以下repo:https://github.com/frgnca/AudioDeviceCmdlets
有关于如何安装模块的详细说明,一旦你完成了,你可以看到所有设备
Get-AudioDevice -List
Index : 1
Default : True
Type : Playback
Name : Speakers (2- Jabra EVOLVE LINK)
ID : {0.0.0.00000000}.{8c58263c-e6a0-4c7b-8e51-5231f04cbcb9}
Device : CoreAudioApi.MMDevice
从那里,您可以看到当前的Default
设备,并根据自己的喜好进行更改。
在PowerShell中至少有两种非常简单的方法。第一种是在PowerShell中使用WShell(至少在Windows PowerShell 5.1中-不确定Core(:
$wshell = New-Object -ComObject WScript.Shell
$wshell.RegWrite("HKCUAppEventsSchemesApps.Default.Default.Current","c:windowsmediahorn.wav","REG_SZ")
第二种是使用PowerShell的Set-ItemProperty
cmdlet的一种更内置的方式,它应该在Core版本中工作。
$SetItemProperty = @{
Path = "HKCU:AppEventsSchemesApps.Default.Default.Current"
Name = "(default)"
Value = "c:windowsmediahorn.wav"
}
Set-ItemPoperty @SetItemProperty
(注意:使用带有@
符号的哈希表变量,而不是普通的$
符号,称为Splatting
;它实际上只是将参数名称与值进行匹配,因此我不必编写一个真正(水平(长的命令。(