使用Powershell更改默认Windows声音



我想找到一种用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-ItemPropertycmdlet的一种更内置的方式,它应该在Core版本中工作。

$SetItemProperty = @{
Path         = "HKCU:AppEventsSchemesApps.Default.Default.Current"
Name         = "(default)"
Value        = "c:windowsmediahorn.wav"
}
Set-ItemPoperty @SetItemProperty

(注意:使用带有@符号的哈希表变量,而不是普通的$符号,称为Splatting;它实际上只是将参数名称与值进行匹配,因此我不必编写一个真正(水平(长的命令。(

最新更新