Do-Speak: comience a hablar con computadoras remotas (System.Speech)
En este artículo, le mostraré cómo usar un comando muy simple que funciona para la computadora local y remota y permite que sus computadoras hablen.
A veces tengo ideas extrañas. Encontré la clase System.Speech y la usé para dejar hablar a mi computadora. Es posible que algunos de ustedes hayan leído mi otro artículo sobre cómo informar a los usuarios con mensajes de texto que describí aquí: Active Directory: envíe mensajes a todos los usuarios actualmente conectados (msg.exe). Ahora hacemos algo diferente, informamos a nuestros usuarios con “Conversación Remota”.
Función Hablar
Do-Speak le permite dejar que su computadora hable algo. Do-Speak también admite el habla remota. Dicho esto, puede enviar un mensaje de texto a una computadora remota que luego emitirá su mensaje a través de audio. Asegúrese de que la administración remota de Windows (WinRm) esté habilitada en sus computadoras cliente. En Windows Server 2012 y versiones posteriores, está habilitado de forma predeterminada. Más información sobre cómo habilitar WinRm con GPO consulte: Políticas de grupo: Habilitación de WinRM para sistemas operativos de cliente Windows (Windows 10, Windows 8, Windows 7)
Ejemplos
Computadora Local
Do-Speak
Computadora remota
Cuando envía su mensaje de texto de audio a una computadora remota, generalmente debe autenticarse con una cuenta de administrador. Por lo tanto, implementé un comando para solicitarle sus credenciales antes de que pueda enviar el mensaje.
Y aquí en acción:
Do-Speak -Computer client01
La función Do-Speak
Copie este código en PowerShell ISE y presione el botón verde. Diviértete con eso.
Function Do-Speak {
[CmdletBinding()]
param
(
[Parameter(Position=0)]
$Computer
)
If (!$computer)
{
$Text=Read-Host 'Enter Text'
[Reflection.Assembly]::LoadWithPartialName('System.Speech') | Out-Null
$object = New-Object System.Speech.Synthesis.SpeechSynthesizer
$object.Speak($Text)
}
else {
$cred=Get-Credential
$PS=New-PSSession -ComputerName $Computer -Credential $cred
Invoke-Command -Session $PS {
$Text=Read-Host 'Enter Text'
[Reflection.Assembly]::LoadWithPartialName('System.Speech') | Out-Null
$object = New-Object System.Speech.Synthesis.SpeechSynthesizer
$object.Speak($Text)
}
}
}
Hazlo permanente
Si le gusta mi enfoque, abra PowerShell ISE. Copie la función en su sesión ISE. Cree una carpeta en C:\Program Files\Windows PowerShell\Modules y guarde el código como archivo psm1. Asegúrese de que el nombre de su archivo y el nombre de la carpeta coincidan.
De ahora en adelante, PowerShell cargará el módulo personalizado al inicio.



