默认通信设备 powershell.\
是否可以在 powershell 中将音频设备输出设置为默认通信设备?我需要这个,因为我在扬声器和耳机之间切换,我已经在 powershell 中使用 AudioDeviceCmdlets 将音频设备设置为默认输出。
我已经尝试在注册表中执行此操作,但 powershell 无法更改该特定部分的值(我在管理员模式下运行 powershell)
我想用这个创建一个脚本,它可以查看哪个设备已关闭或打开,然后知道切换到扬声器或耳机作为输出
我已经有这个代码了:
如果((Get-PnpDevice -InstanceId'INSTANCEID'| Select-Object -Property status)-eq“OK”){Disable-PnpDevice -InstanceId'INSTANCEID'-confirm:$falseEnable-PnpDevice -InstanceId'INSTANCEID'-confirm:$false}否则{Enable-PnpDevice -InstanceId'INSTANCEID'-confirm:$false}
默认音频设备输出耳机GAME Set-AudioDevice -ID "deviceid"
默认音频设备输出扬声器 Set-AudioDevice -ID“deviceid”
坦克。
答案1
我从未在 PowerShell 中尝试过这个,但我在 PowerShell 中使用它:
nircmd.exe setdefaultsounddevice FrontHeadphones
FrontHeadphones
音频设备的名称在哪里,你需要NirSoft 的 nircmd为了这。
答案2
尝试下面的操作,根据需要进行调整。
控制面板对话框在后台所做的就是更改一些注册表设置。我想要一个脚本,让我可以从一个配置文件更改为另一个配置文件。
$r = [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$regRoot = "HKCU:\Software\Microsoft\"
$profiles = @{"Netbook" = @("Realtek HD Audio output",
"Realtek HD Audio input");
"Bluetooth" = @("Bluetooth Hands-free Audio",
"Bluetooth Hands-free Audio") }
function Write-Message ( [string]$message )
{
echo $message
# Uncomment this line to show dialog outputs from -set
# $r = [System.Windows.Forms.MessageBox]::Show($message)
}
function Set-Mapping ( [string]$devOut, [string]$devIn )
{
echo "Profile audio:`n in = $devIn`n out = $devOut"
$regKey = $regRoot + "\Multimedia\Sound Mapper\"
Set-ItemProperty $regKey -name Playback -value $devOut
Set-ItemProperty $regKey -name Record -value $devIn
}
function List-Devices
{
$regKey = $regRoot + "\Windows\CurrentVersion\Applets\Volume Control\"
echo "Sound devices:"
ls $regKey | where { ! $_.Name.EndsWith("Options") } |
Foreach-Object {
echo (" " + $_.Name.Substring($_.Name.LastIndexOf("\")+1))
}
}
$cmd = $args[0]
switch ($cmd)
{
"-profiles"
{
echo "Sound profiles:"
echo $profiles
}
"-devices"
{
List-Devices
}
"-set"
{
$p = $args[1]
if (!$profiles.ContainsKey($p)) {
echo "No such profile: $p"
echo $profiles
exit
}
Set-Mapping $profiles.Get_Item($p)[0] $profiles.Get_Item($p)[1]
Write-Message "Profile set to: $p"
}
default
{
Write-Message "No such option: $cmd"
}
}
如您所见,它有三个选项:
-profiles – 列出可用的声音配置文件。
-devices – 列出声音设备。
-set [profile] – 设置音频配置文件。