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.

martes, 29 de julio de 2008

El PATH en Powershell

Una de las cosas que quería hacer cuando tuviera listo mi blog es el poner un resumen de las cosas interesantes que aprendí ultimente, sobre todo aquellas que me llevaron tiempo o que de las que me costo darme cuenta.
Hoy comienzo con esto con dos pequeños truquitos que aprendí hoy.


El PATH en powershell

Quizás porque nunca me puse formalmente a leer sobre powershell, quizás porque no me había molestado lo suficiente, o por lo que fuera, nunca me había enterado de como hacer para que mis scripts puedan ser ejecutados como un comando más, es decir poder usar mi-script en lugar de usar . mi-script.ps1

Ayer me puse a ver como hacerlo y después de googlear un poco encontré la pista: El directorio del script tiene que ser parte del PATH, es decir que aún cuando estés parado en el directorio del script, este no se ejecutara por default si el directorio no forma parte del path. Loco NO ???

Muy bien, sabiendo eso, necesitaba averiguar dos cosas:
  1. como leer el path desde Powershell (Path y $path no funcionan), y
  2. como cambiarlo (para poder agregar mis directorios)


un poco mas de googleo revelo que para leer el path solo tengo que acceder a las variables del entorno:

$env:path


Simple, no ??? ... Y porque no se me ocurrió antes ????


Para agregar ítems al path es igual de simple:

$env:path = $env:path + ";E:\My Scripts\Powershell\"
Ahora si, aquel script que antes solo podía ejecutar como:
& "E:\My Scripts\Powershell\mi-script.ps1"
ahora puedo ejecutarlo usando
mi-script



y para ver si un directorio forma parte del path podemos usar simples funciones de texto:

($env:path -match 'My Scripts\\Powershell')

(Noten la doble barra para que la barra no sea considerada como un comando de REGEX)


Bueno, no precisamente de alto nivel, pero me llevo un rato poner estas piezas juntas, así que espero que esta note le ahorre algo de trabajo al próximo que este buscando hacer esto.

domingo, 27 de julio de 2008

Día de Nacimiento

Si, es mi cumpleaños, pero No, no es una traducción automática de Google, puse ese titulo a propósito.
La versión Inglesa del cumpleaños me gusta mas que la hispana. Al fin y al cabo es eso, el recordatorio del día del Nacimiento, y no algo que se cumple (aunque la verdad que cumplir años no me importa y jamás me ha importado, para mi los años son como mis canas, parte de la vida).

Volviendo al titulo, este tiene una doble implicación, no solo es mi cumpleaños, si no que también es nacimiento de este mi primer blog.

Por alguna razón, nunca me había metido en este mundo de blogs ... al principio porque pensaba que era algo solo para gente especial que tiene cosas importantes para decir, luego porque pensaba hacerlo directamente en mi (eternamente inconcluso) website.
La verdad que esperaba este año poder FINALMENTE terminar las cosas "pendientes" de mi sitio, y lanzar mi blog al mismo tiempo ... pero no se dio la tecnología se complotó en mi contra y no pude terminar mi sitio, con lo cual el 90% sigue oculto ... pero decidí que al menos lanzaría este blog .... y bueno, acá esta.

Los que me conocen, saben que este en un cumple muy especial para mí, o cuando menos muy poco común. En lugar de las maratónicas "picadas MOK" y la casa llena de amigos, este año fue una simple reunión en familia ... y la verdad es que ni eso planeaba hacer yo ... mi plan era hacer absolutamente nada, levantarme el domingo tarde, desayunar en la cama y descansar a mas no poder.
Pero la flia. hizo presión y debo admitir que el reunirme y tenerlos en casa fue lindo... Se acaban de ir, y antes de irme a dormir decidí debutar en este nuevo medio de comunicación.

Pronto escribiré algo mas para que sepan mas locuras de mí ...
Saludos a todos, Mariano, MarianOK, MOK