He actualitzat l’script per canviar de dispositius degut a un problema amb els anteriors.
Sembla que els dispositius “canvien” d’ordre donades algunes sircumstàncies, i per tant l’script anterior basat en l’ordre en que llistàvem els dispositius ja no serveix, per tant, toca automatitzar una mica l’script.
La idea es llistar els dispositius, filtrar els que interessen i activar el que necessitem i la mateixa comanda que varem utilitzar per llistar tots els dispositius ens servirà.
Get-AudioDevice -List
Per poder treballar amb ells la posarem en una variable i ja que hi sóm, farem una taula sols amb les dades que ens interessen. En aquest cas l’Index i Name.
$llista = Get-AudioDevice -List | Select Index, Name
El següent serà recorre la llista per poder saber quin dispositiu hem d’activar, per tant ens falten 2 coses, un nom amb el que comparar i el número index+1.
$disp1 = "BenQ PD2500Q (NVIDIA High Definition Audio)"
$disp = "Altavoces (Realtek High Definition Audio)"
$llista = Get-AudioDevice -List | Select Index, Name
Foreach($i in $llista)
{
$nom = $i.Name
$in = $i.Index + 1
if ( $nom -like $disp )
{
Set-AudioDevice -Index $in
}
}
Veureu que utilitzar Select ens permet accedir molt fàcilment al les columnes de la taula $var.NomCol i que tal com varem fer en l’script anterior, sumem 1 a l’index de la taula. Ara sols ens queda una cosa, dir quin dispositiu volem activar ja que ara sols activaria $disp que són els auriculars.
Podriem fer dos scripts, però en aquest cas utilitzarem $Args i passarem un valor, en cas de no passar res activara els auriculars.
$disp1 = "BenQ PD2500Q (NVIDIA High Definition Audio)"
$disp = "Altavoces (Realtek High Definition Audio)"
if ($Args -eq 'benq')
{
$disp = $disp1
}
$llista = Get-AudioDevice -List | Select Index, Name
Foreach($i in $llista)
{
$nom = $i.Name
$in = $i.Index + 1
if ( $nom -like $disp )
{
Set-AudioDevice -Index $in
}
}
Ara si passem el paràmetre ‘benq’ a l’hora de cridar l’script activarà l’audio del monitor. Per mi ja estaria OK, però podriem expremer una mica mes l’script i ja que definim els dos dispositius, podem recorrer la taula i mitjançant el camp Default, quedant un Script com aquest.
$disp1 = "BenQ PD2500Q (NVIDIA High Definition Audio)"
$disp = "Altavoces (Realtek High Definition Audio)"
$llista = Get-AudioDevice -List | Select Index, Name, Default
Foreach($i in $llista)
{
$nom = $i.Name
$in = $i.Index + 1
if ( $nom -like $disp )
{
if ( $i.Default -like 'False' )
{
Set-AudioDevice -Index $in
exit
}
}
if ( $nom -like $disp1 )
{
if ( $i.Default -like 'False' )
{
Set-AudioDevice -Index $in
exit
}
}
}
És important acabar l’script un cop cambiem el dispositiu ja que si es canvia el primer, podem tornar a activar el segón.
I feina feta, jo em quedo amb l’script anterior ja que tinc un botó per cada cosa en l’Stream Deck però si mai tinc que reduir l’espai dels botons ja tinc l’altre.