martes, 21 de septiembre de 2010

Modulos vs. Snapins vs. Providers

Windows Powershell introduce muchos conceptos nuevos. Voy a describir tres conceptos que pueden causar confusión.

Módulo

Es un paquete de cmdlets, providers, funciones, alias o otro tipo de elementos que se pueden usar en PowerShell. Una vez qué el módulo está en el disco, podemos importarlo para usarlo en PowerShell.

Normalmente los módulos los instalan los programas que instalamos en el servidor, y podemos ver los existentes con el cmdlet get-module -listAvailable.

Pero para poder usarlos hay que importarlos. Los módulos por defecto, hay que instalarlos en c:\Windows\System32\WindowsPowerShell\v1.0\Modules\ActiveDirectory y consisten en una dll ( o un archivo psm1) y una serie de archivos de configuración.

Snap-ins (Complementos)

Un complemento de Windows PowerShell es un ensamblado de Microsoft .NET Framework que contiene proveedores y/o cmdlets de PowerShell.

Para ver la lista de Snap-ins: get-pssnapin


Según vemos en las definiciones de módulo y complemento, parece que son muy similares. Realmente es lo mismo, lo que pasa es que en PowerShell v1 se definieron los Complementos y en PoweShell v2 se definen los módulos que facilitan la ampliación de PowerShell. En PowerShell v2 se siguen soportando los complementos por compatibilidad hacia atrás, pero se recomienda hacer uso de los módulos.

Provider

Los proveedores de Windows PowerShell son programas basados en Microsoft .NET Framework que permiten que los datos de un almacén de datos especializado estén disponibles en Windows PowerShell para poder verlos y administrarlos fácilmente. Los datos que un proveedor expone aparecen en una unidad y se obtiene acceso a los datos a través de una ruta de acceso, al igual que en una unidad del disco duro.

Es decir, un provider permite el acceso a la configuración de determinados elementos (registro, almacén de certificados, Servicios de escritorio remoto, alias, funciones, etc) de la misma manera que usamos para acceder a las carpetas y archivos de un disco.

Se pueden ver los proveedores con el cmdlet get-psprovider

miércoles, 15 de septiembre de 2010

Desinstalación Masiva

¿Tenéis un equipo de pruebas con mucho software instalado, y queréis desinstalar todo?

Con PowerShell muy fácil:


$programas=Get-Wmiobject -class win32_product
foreach($prog in $programas){
$cadena="Name='" + $prog.name + "'"
$prog1=Get-Wmiobject -class win32_product -filter "$cadena"
$prog1.uninstall()
}

miércoles, 1 de septiembre de 2010

Bucle WHILE

La sintaxis de este tipo de bucle es:

while (condicion)
{
instrucciones
}


Este bucle funciona de la siguiente manera:

1) Se evalúa la condición.
2) Si la condición es True, se ejecuta el bloque de instrucciones y se vuelve a 1). Si la condición es False se sale del bucle.

Nota. Este bucle puede que no se ejecute ninguna vez. Si la primera evaluación de la condición es False, se sale del bucle sin haber ejecutado ninguna iteración.

Ejemplo

$i=11
while ($i -lt 20 -and $i -gt 10)
{
Write-Host "Iteración: $i"
$i++
}