hotarunx's diary

競プロとゲームをしていません

再生デバイスをトグルするPowerShellスクリプトを書いた

この記事を読んで実装しただけなので、この記事を読んだほうがいいです。

[PowerShell]再生デバイスの「既定のデバイス」をワンアクションでトグルする - Qiita

スクリプト

Indexまわりがハードコーディングです。

# [PowerShell]再生デバイスの「既定のデバイス」をワンアクションでトグルする - Qiita
# https://qiita.com/heliojack/items/1cf3cc74f180374618ce#%E5%85%88%E4%BA%BA%E3%81%AE%E7%9F%A5%E6%81%B5powershell%E3%81%8C%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88

Set-Variable -Name forSound -Value 1;
Set-Variable -Name forVoice -Value 2;
$before = (Get-AudioDevice -Playback).Index;

$after = $forSound;
switch ($before) {
    $forSound { $after = $forVoice; }
    $forVoice { $after = $forSound; }
}
$null = Set-AudioDevice -Index $after;

EXE化

PS2EXEというソフトでEXE化した。

MScholtes/PS2EXE: Module to compile powershell scripts to executables

ps2exe .\再生デバイスのトグル.ps1 -noConsole

実装のコツ

  • ps2exeに-noConsoleオプションをつけてウインドウでなくした
  • -noConsoleオプションが有効だとウインドウの代わりにダイアログが出る 無駄なメッセージがあると邪魔なので、$nullに捨てた