Update set-volume.ps1

This commit is contained in:
Markus Fleschutz 2023-09-17 11:31:10 +02:00
parent 6ad06a7b31
commit c311385d43

View File

@ -1,35 +1,33 @@
<#
.SYNOPSIS
Sets the volume
Sets the audio volume
.DESCRIPTION
This PowerShell script sets the audio volume in percent.
.PARAMETER volume
Specifies the percent number
This PowerShell script sets the audio volume to the given value in percent (0..100).
.PARAMETER percent
Specifies the volume in percent (0..100)
.EXAMPLE
PS> ./set-volume 50
PS> ./set-volume.ps1 50
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz | License: CC0
#>
Param([Parameter(Mandatory=$true)] [ValidateRange(0,100)] [Int] $Volume)
Param([Parameter(Mandatory=$true)] [ValidateRange(0,100)] [Int] $percent)
try {
# Create the Windows Shell object.
$obj = New-Object -ComObject WScript.Shell
# First, set volume to zero.
1..50 | ForEach-Object { $obj.SendKeys( [char] 174 ) }
# Calculate number of (volume up) key presses
$keyPresses = [Math]::Ceiling( $Volume / 2 )
for ([int]$i = 0; $i -lt 100; $i += 2) {
$obj.SendKeys([char]174) # each tick is -2%
}
# Raise volume to specified level.
for( $i = 0; $i -lt $keyPresses; $i++ ) {
$obj.SendKeys( [char] 175 )
for ([int]$i = 0; $i -lt $percent; $i += 2) {
$obj.SendKeys([char]175) # each tick is +2%
}
& "$PSScriptRoot/speak-english.ps1" "$($Volume)% volume."
exit 0 # success
} catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"