AudioDeviceCmdlets is a suite of PowerShell Cmdlets to control audio devices on Windows
Get list of all audio devices
Get default audio device (playback/recording)
Get default communication audio device (playback/recording)
Get volume and mute state of default audio device (playback/recording)
Get volume and mute state of default communication audio device (playback/recording)
Set default audio device (playback/recording)
Set default communication audio device (playback/recording)
Set volume and mute state of default audio device (playback/recording)
Set volume and mute state of default communication audio device (playback/recording)
Run as administrator
Install-Module-Name AudioDeviceCmdletsGet-AudioDevice-ID <string># Get the device with the ID corresponding to the given <string>Get-AudioDevice-Index <int># Get the device with the Index corresponding to the given <int>Get-AudioDevice-List # Get a list of all enabled devices as <AudioDevice>Get-AudioDevice-PlaybackCommunication # Get the default communication playback device as <AudioDevice>Get-AudioDevice-PlaybackCommunicationMute # Get the default communication playback device's mute state as <bool>Get-AudioDevice-PlaybackCommunicationVolume # Get the default communication playback device's volume level on 100 as <float>Get-AudioDevice-Playback # Get the default playback device as <AudioDevice>Get-AudioDevice-PlaybackMute # Get the default playback device's mute state as <bool>Get-AudioDevice-PlaybackVolume # Get the default playback device's volume level on 100 as <float>Get-AudioDevice-RecordingCommunication # Get the default communication recording device as <AudioDevice>Get-AudioDevice-RecordingCommunicationMute # Get the default communication recording device's mute state as <bool>Get-AudioDevice-RecordingCommunicationVolume # Get the default communication recording device's volume level on 100 as <float>Get-AudioDevice-Recording # Get the default recording device as <AudioDevice>Get-AudioDevice-RecordingMute # Get the default recording device's mute state as <bool>Get-AudioDevice-RecordingVolume # Get the default recording device's volume level on 100 as <float>Set-AudioDevice<AudioDevice># Set the given playback/recording device as both the default device and the default communication device, for its typeSet-AudioDevice<AudioDevice>-CommunicationOnly # Set the given playback/recording device as the default communication device and not the default device, for its typeSet-AudioDevice<AudioDevice>-DefaultOnly # Set the given playback/recording device as the default device and not the default communication device, for its typeSet-AudioDevice-ID <string># Set the device with the ID corresponding to the given <string> as both the default device and the default communication device, for its typeSet-AudioDevice-ID <string>-CommunicationOnly # Set the device with the ID corresponding to the given <string> as the default communication device and not the default device, for its typeSet-AudioDevice-ID <string>-DefaultOnly # Set the device with the ID corresponding to the given <string> as the default device and not the default communication device, for its typeSet-AudioDevice-Index <int># Set the device with the Index corresponding to the given <int> as both the default device and the default communication device, for its typeSet-AudioDevice-Index <int>-CommunicationOnly # Set the device with the Index corresponding to the given <int> as the default communication device and not the default device, for its typeSet-AudioDevice-Index <int>-DefaultOnly # Set the device with the Index corresponding to the given <int> as the default device and not the default communication device, for its typeSet-AudioDevice-PlaybackCommunicationMuteToggle # Set the default communication playback device's mute state to the opposite of its current mute stateSet-AudioDevice-PlaybackCommunicationMute <bool># Set the default communication playback device's mute state to the given <bool>Set-AudioDevice-PlaybackCommunicationVolume <float># Set the default communication playback device's volume level on 100 to the given <float>Set-AudioDevice-PlaybackMuteToggle # Set the default playback device's mute state to the opposite of its current mute stateSet-AudioDevice-PlaybackMute <bool># Set the default playback device's mute state to the given <bool>Set-AudioDevice-PlaybackVolume <float># Set the default playback device's volume level on 100 to the given <float>Set-AudioDevice-RecordingCommunicationMuteToggle # Set the default communication recording device's mute state to the opposite of its current mute stateSet-AudioDevice-RecordingCommunicationMute <bool># Set the default communication recording device's mute state to the given <bool>Set-AudioDevice-RecordingCommunicationVolume <float># Set the default communication recording device's volume level on 100 to the given <float>Set-AudioDevice-RecordingMuteToggle # Set the default recording device's mute state to the opposite of its current mute stateSet-AudioDevice-RecordingMute <bool># Set the default recording device's mute state to the given <bool>Set-AudioDevice-RecordingVolume <float># Set the default recording device's volume level on 100 to the given <float>Write-AudioDevice-PlaybackCommunicationMeter # Write the default playback device's power output on 100 as a meterWrite-AudioDevice-PlaybackCommunicationStream # Write the default playback device's power output on 100 as a stream of <int>Write-AudioDevice-PlaybackMeter # Write the default playback device's power output on 100 as a meterWrite-AudioDevice-PlaybackStream # Write the default playback device's power output on 100 as a stream of <int>Write-AudioDevice-RecordingCommunicationMeter # Write the default recording device's power output on 100 as a meterWrite-AudioDevice-RecordingCommunicationStream # Write the default recording device's power output on 100 as a stream of <int>Write-AudioDevice-RecordingMeter # Write the default recording device's power output on 100 as a meterWrite-AudioDevice-RecordingStream # Write the default recording device's power output on 100 as a stream of <int>Build instructions
Install Visual Studio 2022
Workloads: .NET desktop developmentCreate new project from SOURCE folder
File -> New -> Project From Existing Code...Type of project: Visual C# Folder: SOURCE Name: AudioDeviceCmdlets Output type: Class LibrarySet project properties
Project -> AudioDeviceCmdlets PropertiesAssembly name: AudioDeviceCmdlets Target framework: .NET Framework 4.6.1+Install System.Management.Automation NuGet legacy package
Project -> Manage NuGet Packages...Package source: nuget.org Browse: Microsoft.PowerShell.5.1.ReferenceAssemblies Install: v1.0.0+Set solution configuration
Build -> Configuration Manager...Active solution configuration: ReleaseBuild Cmdlet
Build -> Build SolutionAudioDeviceCmdlets\SOURCE\bin\Release\AudioDeviceCmdlets.dllImport Cmdlet to PowerShell on Windows
$FilePath="C:\Path\To\AudioDeviceCmdlets\SOURCE\bin\Release\AudioDeviceCmdlets.dll"New-Item"$($profile|split-path)\Modules\AudioDeviceCmdlets"-Type directory -Force Copy-Item$FilePath"$($profile|split-path)\Modules\AudioDeviceCmdlets\AudioDeviceCmdlets.dll"Set-Location"$($profile|Split-Path)\Modules\AudioDeviceCmdlets"Get-ChildItem|Unblock-FileImport-Module AudioDeviceCmdlets
Thank you for considering a donation
Bitcoin (BTC) 3AffczXX4Jb2iN8QWQhHQAsj9AqGFXgYUF
BitcoinCash (BCH) qraf6a3fklta7xkvwkh49zqn6mgnm2eyz589rkfvl3
Ethereum (ETH) 0xE4EA2A2356C04c8054Db452dCBd6f958F74722dE
Based on code originally posted to Code Project by Ray Molenkamp with comments and suggestions by MadMidi
http://www.codeproject.com/Articles/18520/Vista-Core-Audio-API-Master-Volume-Control
Based on code originally posted to GitHub by Chris Hunt
https://github.com/cdhunt/WindowsAudioDevice-Powershell-Cmdlet