PowerShell Series I: Introducción y perfiles

Hola lectores,

Como indica el título, hoy vamos a hablar de PowerShell. Y con suerte, no será el único día. Este es el primero de una serie de artículos sobre PowerShell que voy a ir publicando, orientado a la administración de Exchange y Lync, así como el desarrollo de scripts.

Tengo ya unos artículos pensados para la serie, donde cubriremos cosas como crear nuestros propios módulos, hacer uso de dlls de .NET en script de PowerShell y conexiones mediante EWS.

Esta primera sesión se va a basar en preparar nuestro entorno de PowerShell para ser lo más productivos posibles, y una de las claves para ello es el uso del perfil de usuario de PowerShell.

Podemos ver el perfil de usuario como un fichero donde poner instrucciones de PowerShell que se ejecutara cada vez que abrimos una consola de PowerShell. Este fichero está localizado en:

%UserProfile%\Documents\WindowsPowershell\Microsoft.PowerSehll_profile.ps1

Un ejemplo de información que podemos tener en este fichero son nuevas variables que queramos utilizar a menudo o definir distintos alias para las operaciones más comunes que hagamos.

En nuestro ejemplo, vamos a añadir unas nuevas variables para acceder a carpetas más habituales:

$scripts = "$(split-path $profile)\Scripts"

$modules = "$(split-path $profile)\Modules"

$docs    =  $(resolve-path "$Env:userprofile\documents")

$desktop =  $(resolve-path "$Env:userprofile\desktop")

De esta forma, siempre podemos hacer algo como:

cd $desktop

cd $docs

 

Si veis el ejemplo, veréis que hay otras dos variables, en este caso $scripts y $modules. Estas dos variables apuntan a:

%UserProfile%\Documents\WindowsPowershell\scripts

%UserProfile%\Documents\WindowsPowershell\modules

 

Idealmente, estas dos carpetas iremos dejando los distintos scripts y módulos que desarrollemos en estos artículos.

Los scripts son ficheros que se ejecutaran por orden del usuario, como por ejemplo un script para conectarnos a Exchange online. Los módulos son ficheros donde definiremos nuevas funciones o cmdlets. Normalmente estos módulos no se cargan hasta que haga falta un comando o función que estos definan.

Una ventaja de mantener orden con nuestros ficheros de PowerShell es que podemos asegurarnos que podamos llamar a nuestros scripts desde cualquier ruta (incluir $scripts en el path). Podemos hacer esto en nuestro perfil:

$env:path += ";$scripts"

 

Adicionalmente, también podemos asegurar que PowerShell busque módulos en la carpeta $modules, donde podemos tener los módulos que hagamos nosotros o aquellos que descarguemos de internet:

$env:PsModulePath += ";$modules"

 

Por lo tanto, una vez finalizado, nuestra carpeta de Windows PowerShell tendrá la siguiente pinta:

Y el fichero de perfil:

$scripts = "$(split-path $profile)\Scripts"

$modules = "$(split-path $profile)\Modules"

$docs    =  $(resolve-path "$Env:userprofile\documents")

$desktop =  $(resolve-path "$Env:userprofile\desktop")

$env:path += ";$scripts"

$env:PsModulePath += ";$modules"

 

En el próximo episodio miraremos como ir definiendo nuestros propios módulos y permitir que estos se carguen cuando haga falta

Saludos,

David R.