2008 R2: Automatizando tareas administrativas, inicio con powershell

PowerShell v2

Lo primero, asegurarse que la característica está instalada.

powershell v2

Cuando comenzamos el aprendizaje de powershell es importante hacerlo familiarizándonos con la terminología y estructura básica de los comandos. Esto nos permitirá aprender la sintaxis, y poder escribir nuestros propios scripts y comandos.

La construcción básica de scripts de powershell se denominan cmdlets. Todos los cmdlets siguen una pauta: verbo+sustantivo, Get-service, Start-service, Format-Table, etc… En general, cuando vemos cmdlets hemos de ser capaces de entender el propósito general de lo que hacen viendo su estructura.

Podemos usar los verbos y los sustantivos de muchas combinaciones, para el sustantivo Service podemos usar los verbos Start, Stop, Suspend, Set, quedando como Start-Service, Stop-Service, Suspend-Service y Set-Service.

Esta pauta u orden es la clave para aprender la estructura de línea de comandos. Que también nos da una forma fácil para encontrar y recordar los comandos que usemos con regularidad.

Podemos añadir funcionalidad a muchos cmdlets especificando parámetros como parte de la sintaxis del comando. Por ejemplo: si usamos Get-Service, obtendremos el estado de todos los servicios en ejecución del servidor local.

powershell01

Pero si en vez de eso, añadimos el parámetro –Name podemos filtrar los resultados por un comando específico en el que estemos interesados.

Por ejemplo: Get-Service –Name seclogon que nos devolverá el resultado filtrado por ese nombre, o incluso usar comodines Get-Service –Name s* que devolverá …

powershell02

Además del uso de parámetros, PowerShell nos da la posibilidad de usar atajos mediante Alias, por ejemplo los mismos que los anteriores: gsv –n seclogon ,gsv –n s*

powershell03

Los alias nos permiten abreviar el verbo y los parámetros de nuestros cmdlets. Podemos crear nuestros propios alias con el cmdlet New-Alias. Con Get-Help New-Alias obtenemos el cómo hacerlo. A simple vista parece que el cmdlet diga: ayuda de nuevo alias.

Aunque hay que advertir que no todos los cmdlets y parámetros disponen de un alias predeterminado. Para obtener una lista de alias actuales en nuestro R2… ???

Get-Alias, perfecto!

 powershell04

Seguramente ya sabreis que hay unos pocos alias integrados con el propio sistema, y nos sonarán bastante familiares de otros programas de shell, por ejemplo estos tres:

  • cd
  • chdir
  • sl

Todos tienen el mismo cmdlet asignado: Set-Location. Así que si escribimos cualquiera de ellos en PowerShell obtendremos lo mismo:

cd c:\windows

chdir c:\windows

sl c:\windows

Set-Location c:\Windows.

Dicen que esto ayuda a la transición del aprendizaje.

Finalmente os diré que también podemos usar muchos parámetros en su posición correcta (si la sabemos) sin necesidad de indicar previamente –name o –n, puede que esto cree algo de confusión si desconocemos los comandos que ejecutamos, pero siguiendo un ejemplo anterior:

Get-Service –name seclogon, es lo mismo que gsv –n seclogon y lo mismo que gsv seclogon.

powershell05

Las Funciones son otra característica de PowerShell que debemos saber, con get-command –type function obtenemos una lista.

powershell06

Las funciones en algunos casos son una variación de los alias y proporcionan lo mismo que los comandos. Sin embargo, las funciones generalmente se usan para extender powershell o añadirle posibilidades. También proporcionan información adicional a los verbos.

4 thoughts on “2008 R2: Automatizando tareas administrativas, inicio con powershell

  1. Por favor me gustaria ver algunas tarea automatizadas que sean realmente utiles, sin llegar a tener que ser programador para utilizar la eramienta powershell.
    No se si soy yo pero sigon sin encontrarlas

    Saludos

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>