PowerShell/Scripts/speak-time.ps1

32 lines
866 B
PowerShell
Raw Normal View History

2021-01-02 13:46:38 +01:00
#!/snap/bin/powershell
<#
.SYNTAX ./speak-time.ps1
.DESCRIPTION speaks the current time by text-to-speech (TTS)
.LINK https://github.com/fleschutz/PowerShell
.NOTES Author: Markus Fleschutz / License: CC0
#>
2021-01-09 16:14:22 +01:00
function Speak([string]$Text) {
write-progress "$Text"
2021-01-02 13:46:38 +01:00
$Voice = new-object -ComObject SAPI.SPVoice
2021-01-09 16:40:46 +01:00
$Voices = $Voice.GetVoices()
foreach ($OtherVoice in $Voices) {
$Description = $OtherVoice.GetDescription()
if ($Description -like "*- English (United States)") {
$Voice.Voice = $OtherVoice
break
}
}
2021-01-09 16:14:22 +01:00
[void]$Voice.Speak($Text)
write-progress -complete "$Text"
}
try {
2021-01-09 16:40:46 +01:00
[system.threading.thread]::currentthread.currentculture=[system.globalization.cultureinfo]"en-US"
2021-01-09 16:14:22 +01:00
Speak("It's now $((Get-Date).ToShortTimeString())")
2021-01-02 13:46:38 +01:00
exit 0
} catch {
write-error "ERROR in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
exit 1
}