miércoles, 5 de noviembre de 2014

PowerShell para novatos VI, Diez Comandos Básicos

10 Comandos PowerShell cualquier administrador debería saber.


Yo entiendo que powershell tiene dos variantes, una la dedicada a gestión en la cual solicitamos información o interactuamos con el sistema  y otra mas compleja en la que creamos scripts muy elaborados para realizar también operaciones complecas.

A continuación muestro una serie de comandos de uso habitual por cualquier administrador que intente entrar en este mundillo del powershell y que forman parte de esa variante sencilla de powershell.

1: Get-Help

El primer comando PowerShell cmdlet  que cualquier administrador debería conocer es el encargado de pedir ayuda Get-Help. Es como el "man" en linux y se utiliza del mismo modo para solicitar ayuda sobre un comando. Por ejemplo si quieres conocer como se utiliza o para que sirve el cmdlet "Get-Process" pondríamos lo siguiente:

Get-Help -Name Get-Process
 
y windows nos mostrará la sintaxis completa.
TIP: En lugar de usar "Get-help" tabien puedes usar  únicamente "help", rápido y sencillo.
También puedes utilizar "Get-Help" con nombres o verbos individuales. Por ejemplo para encontrar ayuda sobre todos los comandos que empiezan por "Get" utilizaríamos este comando:

Get-Help -Name Get-*
 
 

2: Set-ExecutionPolicy

Crear scripts básico en PowerShell para realizar ciertas operaciones, pero por defecto Microsoft tiene deshabilitada la ejecución de los mismos para evitar un mal uso o la ejecución de software malicioso. . Existe un comando que regula el uso y ejecución de scripts y es "Set-ExecutionPolicy", el cual nos permite establecer el nivel de seguridad en la ejecución de scripts. Existen cuatro niveles de ejecución disponibles:
  • Restricted -- Es la opción por defecto si consultamos el estado con "Get-ExecutionPolicy" y que solamente nos permite ejecución de comandos de forma interactiva y no permite la ejecución de Scripts.
  • All Signed -- Con esta opción, se podrán ejecutar scripts pero únicamente si están firmados por una entidad de confianza. (un poco rollo por que cada ps1 que quieres utilizar ha de ser firmado previamente para que se pueda ejecutar).
  • Remote Signed -- Con esta política (muy cómoda) cualquier script PowerShell creado localmente podrá ser ejecutado. Los scripts creados remotamente o en otro equipo, solo podran ser ejecutados si son firmados por una entidad de confianza.
  • Unrestricted -- barra libre, o lo que es lo mismo cualquiera... no te cuento lo peligroso que esto puede ser.....It is up to you!!.
Este comando es muy sencillo y sabiendo las opciones que hemos comentado es tan sencillo como:

Set-ExecutionPolicy Unrestricted

3: Get-ExecutionPolicy

Creo que esto ya lo he explicado no? LOL pues eso, en realidad esto tendria que ser el punto 2.

4: Get-Service

Una de los comandos que mas he lanzado en el GUI de windows es "services.msc". Con "Get-Service" obtenemos el mismo resultado, mostrándonos todos los servicios y su estado. Si quieres saber el estado de un servicio concreto puedes añadir "-name"

5: ConvertTo-HTML

En ocasiones puede que necesites enviar una salida de comando a algún jefe o compañero. PowerShell permite realizar esta acción mediante el comando "ConvertTo-HTML".
Para usar este comando, simpremete hay que usar el pipe "|" en la salida de un comando de PowerShell. Es necesario utilizar el modificador "-Property"para controlar que propiedades de la salida queremos "imprimir" a html.

Vamos a utilizar el comando "Get-Service" para ver el funcionamiento de este cmdlet:

Get-Service | ConvertTo-HTML -Property Name, Status > C:\services.htm

6: Export-CSV

Además de poder exportar a HTML utilizando PowerShell, también se puede exportar a CSV para luego ser tratado en Microsoft Excel. El modo de funcionamiento es similar a la que hemos visto previamente en HTML. Como mínimo has de proporcionar el fichero de salida y su ruta. Aquí tenemos el mismo ejemplo de antes con CSV:

Get-Service | Export-CSV c:\service.csv

7: Select-Object

Si utilizas el comando anterior, sabes que hay varias propiedades incluidas en el fichero CSV.  Es habitual que solo se incluyan las propiedades que realmente se necesitan o en las que el administrador está interesado. Para esto utilizamos el comando "Select-Object". El comando "Select-Object" permite especificar que opciones de la salida del comando queremos utilizar . Por ejemplo, para crear un fichero CSV con el nombre de los servicio y status, eructaríamos lo siguiente:

Get-Service | Select-Object Name, Status | Export-CSV c:\service.csv

8: Get-EventLog

Antes he dicho que lo que mas uso es "services.msc" pero otra cosa que también utilizo muy amenudo es el Event log de Windows. Se puede obtener el mismo resultado usando  PowerShell.

Lo primero que tenemos que hacer es ver que logs podremos visualizar:

  Get-Evenlog -list

 Max(K) Retain OverflowAction        Entries Log
 ------ ------ --------------        ------- ---
 20.480      0 OverwriteAsNeeded      12.003 Application
 20.480      0 OverwriteAsNeeded           0 HardwareEvents
    512      7 OverwriteOlder              0 Internet Explorer
 20.480      0 OverwriteAsNeeded           0 Key Management Service
  8.192      0 OverwriteAsNeeded           0 Media Center
    128      0 OverwriteAsNeeded         224 OAlerts
 20.480      0 OverwriteAsNeeded      37.655 Security
 20.480      0 OverwriteAsNeeded      43.372 System
 15.360      0 OverwriteAsNeeded         186 Windows PowerShell


Este comando no permitirá seleccionar el log que queremos visualizar

Get-EventLog -Log "Application"
  
Pero si has lanzado el comando has visto la locura que sale ;-)
Para facilitar un poco la vida hay comandos que podremos lanzar  como por ejemplo mostrar los últimos tres eventos y mostrarlos en formato listado o filtra los eventos con ID 403



Get-EventLog system -newest 3 | Format-List
 
Get-EventLog "Windows PowerShell" | Where-Object {$_.EventID -eq 403}


Microsoft tiene un documento muuu bueno para esto:

http://technet.microsoft.com/en-us/library/ee176846.aspx

9 -10 : Get-Process & Stop-process

Igual que puedes ver los servicio operativos y su estado, también se puede obtener informacion de los processo (como lo hacemos en entorno grafico con ctrl+alt+supr). Tan solo hay que usar "Get-Service". La verdades que solo con esto hacemos mas bien poco... lo siguiente que te apetece hacer matar algo no?

Stop-Process 3512
 
Stop-Process -processname notepad
 

No hay comentarios:

Publicar un comentario