小编Car*_*ten的帖子

如何识别Powershell中的默认音频设备?

我正在寻找一种通过 Powershell 获取默认音频设备的解决方案。在最好的情况下,它可以通过嵌入式 C# 代码直接使用 IMMDeviceEnumerator::GetDefaultAudioEndpoint (请参阅此处IMMDeviceEnumertor)。

但如果通过 RegKeys 更容易获得它,那么这也可以。我已经看到一些代码片段从 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render 或 \Capture 读取密钥,但我仍然很难识别默认设备。

看来,当我修改设备的顺序时,我可以简单地搜索活动设备(DeviceState = 1),然后按值“Level:0”,“Level:1”和“Level:2”排序,但是级别值在用户未手动修改订单的系统上不可用。这种情况下的排序标准是什么?

这是通过 RegKeys 解决该问题的代码片段,但如上所述 - 不适用于所有情况:

$regAudio =  "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio"
$nameId = "{b3f8fa53-0004-438e-9003-51a46e139bfc},6"
$classId = "{a45c254e-df1c-4efd-8020-67d146a850e0},2"
$driverDetails = "{83da6326-97a6-4088-9453-a1923f573b29},3"

function get-DefaultDevice($type) {
    $activeDevices = foreach($key in  Get-ChildItem "$regAudio\$type\") {
        foreach($item in Get-ItemProperty $key.PsPath) { 
            if ($item.DeviceState -eq $activeState) {$item}
        }
    }
    $defaultDevice = $activeDevices | Sort-Object -Property "Level:0","Level:1","Level:2" | select -last 1
    $details = Get-ItemProperty "$($defaultDevice.PSPath)\Properties"
    $name = "$($details.$classId) ($($details.$nameId))"
    return @{
        name …
Run Code Online (Sandbox Code Playgroud)

powershell audio-device

5
推荐指数
1
解决办法
8744
查看次数

如何使用动态输入参数从 BASH 使用 StdIn 脚本调用 python?

作为 BASH 脚本的一部分,我需要使用输入参数启动一些 python 代码。我也想避免创建一个临时的 *.py 文件。

这是我到目前为止:

input=123
output=$(
python - <<'END_SCRIPT'
print("$input")
END_SCRIPT
)
echo $output
Run Code Online (Sandbox Code Playgroud)

此代码段将 python 调用的输出写入输出变量。但是它没有返回“123”,而是返回“$input”,因为在管道传输到 python 的过程中不会解释该变量。从 StdIn 读取时,有什么方法可以将输入变量作为参数转发给 python?

python parameters bash command-line input

1
推荐指数
1
解决办法
60
查看次数