código: hol-win53 microsoft windows server 2008 r2 powershell

Post on 23-Jan-2016

225 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Código: HOL-WIN53

Microsoft Windows Server 2008 R2

PowerShell

Agenda

►PowerShell

►Cmdlets

►Unidades

►Scripting

►Objetos

►Gestión aplicaciones y objetos

►Tareas de administración

¿Windows PowerShell?

►Es un entorno de línea de comandos

►Acepta comandos de la línea de comandos estándar

►Permite acceder al sistema de archivos, al registro y al almacén de certificados

►Permite la ejecución de Script

►Incluso se pueden lanzar los Script desde la línea de comandos estándar

Windows PowerShell

Apariencia Similar

¿Por qué usar PowerShell?

►La necesidad de extender los sistemas de Scripting

►Sistema más robusto

►Extensible a tareas de administración de sistemas y para el desarrollo

►Integración de entornos (por ejemplo Exchange)

►Evolución de los sistemas de comandos utilizados

Entorno PowerShell

►Presenta una Shell de símbolo de sistema interactivo

►Entorno de scripting

►Ejecución de comandos y aplicaciones

►Interacción local y remota

►Creado sobre Common Language Runtime de .NET y .NET Framework

Disponibilidad PowerShell

• Sistemas Operativos compatibles con PowerShell• Windows XP SP2• Windows Server 2003 SP1• Windows Vista• Windows Server 2008• Windows Server 2008 R2• Requisitos para su instalación:– Instalar en caracteristicas Windows PowerShell

Cmdlets – Introducción

►Diseñados para usar objetos

►Trabajan como comandos binarios

►Se utilizan para agregar proveedores de Windows

►Utilizan la sintaxis de C#

►Su nomenclatura es mediante sustantivos y verbos

Listado cmdlets

►Get-command

Listado de cmdlest

► Para visualizar los cmdlets con verbo: Get-command –verb verbo "get" sólo recuperan datos "set" sólo establecen o modifican los datos "format" sólo aplican formato a los datos "out" sólo dirigen la salida a un destino determinado.

► Para ordenarlos por familias para un objeto: Get-comand –noun objeto p.e: service, process …

Sintaxis

►Los cmdlet contienen cada uno una sintaxis determinada.

►Mediante el parámetro –Syntax podemos recuperar la sintaxis de los cmdlet

Get-command –syntax

►Para cmdlet específico

Get-command –syntax cmdlet

Comandos y cmdlets

►No todos los comando que utilizamos son cmdlets aunque lleven sustantivo y verbo

►Aquí tenemos un ejemplo de función interna.Clear-host

►Para obtener todos los comandosGet-command *

►Los comandos pueden filtrarseGet-command –commandtype tipo (Alias,

function, application)

Parámetros

►Powersell procesa los parámetros de forma directa.

►Los nombres de parámetros se utilizan siempre con un guión (-) como prefijo.

►Por ejemplo cuando a un cmdlet le aplicamos el parámetro -? nos muestra la ayuda.

Parámetros convencionales

►Whatif►Confirm►Verbose►Debug►Warn►Erroraction►Errorvariable►Outvariable

• Force

• Exclude

• Include

• Passthru

• Path

• CaseSensitive

• Outbuffer

Ayuda

►Para solicitar la ayuda podremos operar con la siguiente sintaxis:

Get-help cmdlet

Man cmdlet

Help cmdlet

cmdlet -?

Alias

►El sistema trabaja mediante alias o abreviados

►Para obtener los alias podremos realizarlo mediante este filtro:

Get-command –commandtype alias

►Si queremos obtener el comando que invoca el aliasGet-alias alias

►Creación de alias.Set alias –name alias –value valor

Canalización de objetos

►Actúan como tubos conectados de tal forma que los objetos pasan a través de cada tubo.

►La canalización se establece mediante el carácter “|”.

►Cada comando suele pasar su resultado al siguiente comando

►Reducen la demanda de recursos obteniendo resultados más inmediatos.

Salida de datos mediante pipe

►Podemos controlar los recursos del sistema.Comprobar rendimiento del procesador con ambas

instruccionesGet-childitem c:\windows –recurse

Get-childitem c:\windows –recurse | out-host -paging

Cambios de formato

►Powershell presenta una serie de cmdlets para controla las propiedades que se muestran de objetos específicos.

►Comienzan por el verbo format:

Format-Wide.

Format-List.

Format-Table.

Format-Custom

Ejemplos

►Sacar por lista

Get-process –name proceso | format-list

►Por tabla

Get-process –name proceso | format-table.

►Mediante autoformato.

Get-process –name proceso | format-table –property path,name,id,company -autosize

Comodines

►Los cmdlets y comandos admiten el uso de comodines.

►Son útiles cuando queremos obtener todos los datos de un objeto.

Get-process –name proceso | format-list –property *

Agrupando datos

►Los datos obtenidos cuando devuelven listas grandes pueden ser difíciles de comparar.

►Mediante el parámetro Groupby podemos agrupar el resultado en función del valor de una propiedad.

Get-process –name * | format-table –wrap –autosize –groupby propiedad

Salida de datos►PowerShell está orientado a ofrecer los objetos

obtenidos por pantalla aunque podríamos sacarlos por otras ubicaciones.

►La salida presenta el verbo out.

►Por defecto la salida es por out-host.

►La especificación de la salida es importante hacerlo correctamente. P.ej. no es lo mismo

Get-process | out-host –paging | format-listGet-process | format-list | out-host –paging

►Las salidas deben establecerse al final de la sintaxis.

Tipos de salidas

► Salida por pantalla Out-host –paging More

► Imprimir datos. Out-printer Por defecto utiliza la predeterminada si queremos utilizar

alguna específica utilizaremos el parámetro –name impresora

► Fichero. Out-file Crea por defecto un fichero en formato unicode, si

queremos formato ASCII utilizaremos el parámetro –encoding ASCII.

Introducción

►Powershell define diferentes tipos de unidades a las que se puede tener objeto.

Unidades lógicas de disco y almacenamiento.

AliasFuncionesContenedor de certificados.

Usuario

Equipo

Introducción

Registro.Clave HKEY_Current_User

Clave HKEY_Local_Machine

EntornoVariables

Unidades►Para obtener las unidades utilizaremos el cmdlet:

Get-psdrive

►Si queremos diferenciarlos por proveedorGet-psdrive –psprovider proveedor

Creación y eliminación unidades

►Crear nuevas unidades utilizadas exclusivamente por PowerShell que pueden definir alias de unidades

New-psdrive –name nombre –psprovider proveedor –root ruta

►Eliminar unidadesRemove-psdrive –name nombre

Archivos y carpetas

►Como otras Shell, PowerShell permite la gestión de ficheros y carpetas.

►Se pueden utilizar dir o ls aunque tienen sintaxis propias tipo verbo/sustantivo como get-childitem

►Para devolver los resultados dentro de los contenedores se utiliza el parámetro –recurse

►Si queremos obtener los elementos ocultos utilizaremos el parámetro -force

Filtrados y comodines

►Podremos filtrar elementos mediante el parámetro name

►Podremos utilizar caracteres comodines para controlar las búsquedas:

*?[ ] (búsqueda de caracteres que coincidan)

►Podremos excluir elementos mediante el parámetro exclude

Creación de elementos

►Pueden crearse elementos mediante la sintaxis cmdlets con el parámetro new-item y el valor file o directory.

New-item –path ruta –itemtype directory

New-item –path ruta –itemtype file

Trabajo con elementos

►Cambiar nombres: rename-item

►Mover elementos: move-item

►Copiar elemento: copy-item

►Eliminar elementos: remove-item

►Ejecutar elementos: invoke-item

Scripting

►Scripting a través de línea de comandos

►Política de Ejecución

►Ejecutar scripts

CScriptWScriptWindows PowerShell Scripts

Script Línea de Comandos

►Todas las variables empiezan con el carácter “$”

►Las variables mantienen sus valores durante toda la sesión del usuario

►Al cerrar la sesión las variables se eliminan

Windows PowerShellCopyright (C) 2006 Microsoft Corporation. Reservados todos los derechos.

PS C:\Scripts> $a = 4PS C:\Scripts> $b = 6PS C:\Scripts> $a + $b10

Script Línea de Comandos

►Permite instrucciones de control de flujo

Windows PowerShellCopyright (C) 2006 Microsoft Corporation. Reservados todos los derechos.

PS C:\Scripts> $a = 4PS C:\Scripts> $b = 6PS C:\Scripts> $a + $b10PS C:\Scripts> if ($a –gt $b)>> {$a}>> else>> {$b}>>6PS C:\Scripts>

Script Línea de Comandos

Windows PowerShellCopyright (C) 2006 Microsoft Corporation. Reservados todos los derechos.

PS C:\Scripts> $a = Get-ServicePS C:\Scripts> $a

Status Name DisplayName------ ---- -----------Running AeLookupSvc Experiencia con aplicacionesStopped Appinfo Información de la aplicaciónStopped AppMgmt Administración de aplicacionesRunning Browser Examinador de equiposStopped CertPropSvc Propagación de certificadosStopped COMSysApp Aplicación del sistema COM+Running CryptSvc Servicios de cifradoRunning Dhcp Cliente DHCPRunning Dnscache Cliente DNS...

Scripts en Archivos

►Crear los scripts con la aplicación Notepad

►Salvar los archivos con extensión .ps1

$a = 4$b = 6“a = “ + $a“b = “ + $bif ($a –gt $b){ “a es mayor que b”}else{ “a no es mayor que b”}

Script que asigna valores a dos variables y comprueba cual es mayor.

Ejecutando Scripts

►Los scripts de PowerShell tienen extensión .ps1►Se debe especificar la ruta completa, aunque se

encuentre en la ruta actual►O añadir la ruta a la variable de entorno Path

Windows PowerShellCopyright (C) 2006 Microsoft Corporation. Reservados todos los derechos.

PS C:\Scripts> C:\Scripts\Script.ps1

a = 4b = 6a no es mayor que b

PS C:\Scripts>

Políticas de Ejecución

►La política de ejecución determinan que Script podrá ser ejecutado en la máquina local

►Cuatro políticas de EjecuciónRestricted (por defecto)

PowerShell no permite la ejecución de Scripts

AllSignedÚnicamente Scripts firmados por publicadores de confianza

RemoteSignedLos firmados y los creados localmente en la máquina

UnrestrictedSe ejecutarán todos los scripts

Políticas de Ejecución

►Usar el cmdlet Get-ExecutionPolicy para descubrir que política de ejecución se está aplicando

Windows PowerShellCopyright (C) 2006 Microsoft Corporation. Reservados todos los derechos.

PS C:\Scripts> Get-ExecutionPolicy

Restricted

PS C:\Scripts> ./Script.ps1

File C:\Scripts\Script.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details.At line:1 char:9+ .\Script.ps1 <<<<

Políticas de Ejecución

►Usar el cmdlet Set-ExecutionPolicy para modificar la política de ejecución a aplicar

Windows PowerShellCopyright (C) 2006 Microsoft Corporation. Reservados todos los derechos.

PS C:\Scripts> Set-ExecutionPolicy Unrestricted

PS C:\Scripts> ./Script.ps1

a = 4b = 6a no es mayor que b

Scripts VBScript

►Se pueden ejecutar script escritos en VBScript desde PowerShell

►Se deben ejecutar mediante los comandos CScript o WScript

►Las políticas de ejecución no se le aplican a estos script

Windows PowerShellCopyright (C) 2006 Microsoft Corporation. Reservados todos los derechos.

PS C:\Scripts> Get-ExecutionPolicy

Restricted

PS C:\Scripts> WScript test.vbs

Test VBScript

Perfiles

►Windows PowerShell ejecuta un script cada vez que se inicia sesión

►El script que se ejecuta es el que apunta la variable $Profile

►Por defecto $Profile apunta a My Documents\ WindowsPowerShell\Microsoft.PowerShell_Profile.ps1

►Se puede editar el perfil con el bloc de notas

►El perfil no se ejecuta si las políticas de ejecución está en Restricted

Crear un Perfil

►Para comprobar si existe o no un perfil creado:

►Para crear el perfil se debe ejecutar:

Windows PowerShellCopyright (C) 2006 Microsoft Corporation. Reservados todos los derechos.

PS C:\Scripts> Test-path $Profile

False

Windows PowerShellCopyright (C) 2006 Microsoft Corporation. Reservados todos los derechos.

PS C:\Scripts> New-Item -Path $profile -ItemType file -Force

Objetos

►Powershell trabajo con objetos com y .net.

►Dentro de los objetos más importantes con los que podemos trabajar en administración se encuentran los objetos de WMI.

►El acceso a objetos WMI se realiza mediante el cmdlet get-wmiobject que permite enumerar las clases de WMI

WMI Remoto

►Podemos utilizar PowerShell para acceder a un equipo remoto mediante el parámetro –computername

Get-wmiobject –list –computername 192.168.0.1

►La cuenta utilizada debe pertenecer al grupo de administradores

►No es necesario que el equipo remoto tenga instalado PowerShell.

Obtención detallada de clases

►Si conocemos el nombre de una clase WMI podemos obtener la información.

Por ejemplo una de las clases más utilizadas es Win32_operatingsystem

Get-WmiObject -Class "Win32_OperatingSystem" -Namespace "root/cimv2 "

Como esta clase presenta más propiedades podremos recuperarlas mediante Get-Member:

Get-WmiObject -Class "Win32_OperatingSystem" -Namespace "root/cimv2 “ | Get-Member –MemberTypeProperty

Utilización de objetos

►Muchos componentes com y .net permiten realizar muchas tareas que amplían las funcionalidades de cmdlets.

►Muchos comandos cmdlets no se pueden utilizar remotamente frente a los componentes com y .net

►Pueden crearse instancias de una clase .Net mediante el cmdlet New-object

Almacenamiento en variables►El uso de objetos para más de un uso dentro de la

sesión puede referenciarse mediante variables:$app = new-object –typename

system.diagnostics.eventlog –argumentlist application

Genera la variable $app donde se almacena un registro de eventos para el registro aplicación.

►Podremos acceder remotamente proporcionando la IP o el nombre de equipo remoto como argumentos.

New-object –typename system.diagnostics.eventlog application,192.168.0.1

Aplicaciones

►Muchas aplicaciones pueden automatizarse mediante objetos

►Algunas de las más utilizadas con Internet Explorer o Microsoft Office

►Utilizaremos I.E. como referencia mediante su ProgID: InternetExplorer.Application

Creación de la instancia

►$ie1 = new-object –comobject internetexplorer.application

Podemos comprobar que se está ejecutando mediante get-process aunque no lo veamos.

El valor visible se encuentra por defecto en false.

►Para poder ver las propiedades y métodos de I.E.

$ie1 | get-member

►Si queremos hacer visible la ventana del I.E.

$ie1.visble = $true

Uso de I.E. desde Powershell

►Para ir a una url utilizaremos el método navigate:$ie1.navigate(“http://www.informatica64.com”)

►Permiten recuperar el contenido del texto HTML.$ie1.Document.body.innertext

►Para cerrar el objeto utilizamos el método quit()$ie1.quit()

►Aunque cerremos el objeto sigue apareciendo como un objeto com, para volverlo a utilizar deberemos eliminar la referencia

Remove-variable ie1$ie1 = $null

Uso de clases

►No todas las clases de .net framework pueden crearse mediante new-object.

►Determinadas clases no hay que crearlas puesto que ya están creadas, solamente hay que utilizarlas.

►Estas clases se denominan estáticas puesto que no pueden crearse ni eliminarse.

Clases estáticas

►Cuando las definamos deben ir entre corchetes.

[system.environment]

►El uso de miembros estáticos necesitarán especificar el parámetro static:

[system.environment] | get-member -static

Ejemplos de clase estática

►[system.environment]::commandline

►[system.environment]::osversion

►[system.environment]::username

►[system.environment]::machinename

►[system.environment]::systemdirectory

Variables

►PowerShell admite la generación de variables

►Para mostrar la información de una variables puede utilizarse get-member

►PowerShell permite la manipulación de variables.Para ver una lista completa de manipulaciones:

Get-command –noun variable | format-table –propertyname,definition –autosize –wrap

►Podremos conocer todas la variables mediante la sentencia

Get-childitem variable

Introducción

►Una de las funcionalidades más importantes que podremos encontrar en PowerShell es la administración de los sistemas.

►La administración puede ser local o remota.

►Permite combinar cmdlets con aplicaciones externas.

Administración de Procesos

►Uno de los elemento fundamentales es el control de los procesos

►Estos se realizan a través de dos cmdlets:

Get-processStop-process

Get-process proceso

►Admite el uso de comodines y los modificadores -name e -id

Parar Procesos

►Podremos parar procesos mediante la orden stop-process

►Para ordenes en las cuales no queramos equivocarnos podremos utilizar el parámetro -confirm

Windows PowerShellCopyright (C) 2006 Microsoft Corporation. Reservados todos los derechos.

PS C:\Scripts> Stop-Process iexplorer

Confirmar¿Está seguro de que desea realizar esta acción?Realizando la operación "Stop-Process" en el destino "iexplore (3916)".[S] Sí [O] Sí a todo [N] No [T] No a todo [U] Suspender [?] Ayuda (el valor predeterminado es "S"): s

Administración de servicios►Podemos gestionar los servicios de un sistema

mediante los cmdlets serviceGet-service

►Mediante –displayname podremos buscar un servicio por el nombre para mostrar.

►Los servicios pueden iniciarse, suspenderse o reiniciarse:

Stop-serviceStart-serviceSuspend-serviceRestart-service

Obtención de Datos con WMI

►Mediante Get-Wmiobject podremos obtener la configuración fundamental de Windows.

►Podremos obtener la información localmente mediante ‘.’ o mediante la IP de un equipo remoto.

Ejemplos

►Obtener datos de la BIOSGet-wmiobject –class win32_bios

►Obtener datos del procesador.Get-wmiobject –class win32_processor

►Mostrar actualizaciones instaladas.Get –wmiobject –class win32_quickfixengineering

►Mostrar usuariosGet-wmiobject –class win32_operatingsystem |

select-object –property *user*

Aplicaciones instaladas

►Aplicaciones que están instaladas

Get-wmiobject –class win32_product

►Aplicaciones que pueden desinstalarse

New-psdrive –name uninstall –psprovider registy-root HKLM:\software\microsoft\windows\ currentversion\uninstall

Instalar aplicaciones

►La clase win32_product permite instalar paquetes .msi

►En el caso de instalaciones remotas deberos especificar la ruta del paquete como una ruta de red UNC

►(get-WMIobjec –computername IP o nombre –list | where object –filterscript {$_.name-eq “Win32_Product”)} .invokemethod(“install”,”\\ruta unc paquete msi”}

Desinstalar aplicaciones

►Igualmente que instalamos podemos invocar al método uninstall para eliminar una aplicación:

(get-wmiobject –class wind32_product –filter “name=‘aplicación’” –computername .) .invokemethod (“uninstall”,$null)

Cambiar estado de un equipo

►Un equipo lo podremos bloquear, cerrar la sesión, apagarlo o reiniciarlo.

BloquearloRundll32.exe user32.dll,lockworkstation

Cerrar la sesiónShutdown.exe -1(get-wmiobject –class win32_operatingsystem –computername .) .invokemethod(“win32shutdown”, 0)

Apagarlo o reiniciarloTsshutdn.exe o shutdown.exe

Suscripción gratuita en: http://www.informatica64.com/technews.aspx

TechNews de Informática 64

Informática 64

http://www.informatica64.com

i64@informatica64.com

+34 91 146 20 00

Contactos

top related