Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

79 Commits

Repository files navigation

Description

AudioDeviceCmdlets is a suite of PowerShell Cmdlets to control audio devices on Windows

Features

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)

Installation

Run as administrator

Install-Module-Name AudioDeviceCmdlets

Usage

Get-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 Cmdlet from source

Build instructions
  1. Install Visual Studio 2022

     Workloads: .NET desktop development
    
  2. Create new project from SOURCE folder
    File -> New -> Project From Existing Code...

     Type of project: Visual C#
    Folder: SOURCE
    Name: AudioDeviceCmdlets
    Output type: Class Library
    
  3. Set project properties
    Project -> AudioDeviceCmdlets Properties

     Assembly name: AudioDeviceCmdlets
    Target framework: .NET Framework 4.6.1+
    
  4. 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+
    
  5. Set solution configuration
    Build -> Configuration Manager...

     Active solution configuration: Release
    
  6. Build Cmdlet
    Build -> Build Solution

     AudioDeviceCmdlets\SOURCE\bin\Release\AudioDeviceCmdlets.dll
    
  7. Import 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

Donation

Thank you for considering a donation
Bitcoin (BTC) 3AffczXX4Jb2iN8QWQhHQAsj9AqGFXgYUF
BitcoinCash	(BCH) qraf6a3fklta7xkvwkh49zqn6mgnm2eyz589rkfvl3
Ethereum	(ETH) 0xE4EA2A2356C04c8054Db452dCBd6f958F74722dE

Attribution

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

About

AudioDeviceCmdlets is a suite of PowerShell Cmdlets to control audio devices on Windows

Topics

Resources

Stars

920 stars

Watchers

33 watching

Forks

Releases

Packages

Used by

Contributors

Languages