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