miércoles, 30 de julio de 2008

Nivel de confirmación

Parte de los scripts que estoy creando para el trabajo involucran la actualizacion de Listas de distribucion en forma automatica.
En esto estaba cuando me tope con el hecho de que el comando Remove-DistribtionListMember me pedia confirmacion antes de remover usuarios, aun cuando yo no habia especificado la opcion -Confirm.

Un vistazo al exchange.ps1 revelo que efectivamente en el ambiente Powershell de exchange, las preferencias de confirmacion estan configuradas por default como HIGH (es decir que va a pedir confirmacion cada vez que se intente realizar un cambio importante en AD)

Cambiar el nivel de confirmacion es tan facil como :

$ConfirmPreference = 'High' # Los Valores Validos parecen ser High, Medium, Low, None.


Pero no me gustaba la idea de cambiar el seteo para todo el ambiente, quien sabe lo que podria quere correr despues ...

con lo cual decidi usar un simple trasvasado, uso una variable intermedia donde, al principio del script, almaceno el valor actual del $ConfirmPreference, y al final del script usa mi variable intermedia parqa volver el seteo a su valor original


$ConfirmPreference =$OLD_ConfirmPreference

... # Mi código aquí

$OLD_ConfirmPreference =$ConfirmPreference

Despues me puse a pensar en lo genial que seria implementar confirmaciones en mis scripts y decidi que, podia hacerlo facilmente :

Param(
[switch] $Confirm
)

$OLD_ConfirmPreference =$ConfirmPreference
if ($Confirm) {
$ConfirmPreference = 'High'
} else {
$ConfirmPreference = 'None'
}

...... # Mi código aquí

$ConfirmPreference =$OLD_ConfirmPreference



Ahora tengo (y puedo dar a los usuarios de mis scripts) control sobre las confirmaciones de Powershell.

No hay comentarios.: