David Cervigón Luna IT Pro Evangelist

1 2 ...
Author: GALO SALINAS
0 downloads 2 Views

1

2 David Cervigón Luna IT Pro Evangelist [email protected] http://blogs.technet.com/davidcervigon

3 Introducción Conceptos de Powershell Uso de PowerShell Scripting Personalización

4 ¿Que es Windows PowerShell? Nueva shell de línea de comandos y lenguaje de scripting de Microsoft. Fácil De usar De aprender De implementar Facilita y acelera la automatización de la gestión de sistemas Windows Hace a las aplicaciones más manejables Exchange 2007 Windows Server 2008 System Center Virtual Machine Manager System Center Operations Manager 2007 System Center Data Protection Manager 2007

5 Descarga gratuita: Para Windows XP, Windows Vista, Windows server 2003 (tanto x86 como x64) Requiere.NET Framework 2.0 http://www.microsoft.com/windowsserver2003/t echnologies/management/powershell/downloa d.mspx Incluida como una característica en Windows Server 2008 Se instala desde el Server Manager

6

7 Su interfaz se parece a la línea de comandos clásica (cmd.exe) Basada en objetos.Net No procesa ni devuelve texto plano, sino objetos Trae mas de 120 herramientas por defecto con una interfaz consistente Nuevo lenguaje de scripting que permite aprovechar las características de.NET La salida de un comando puede entubarse en otro, estableciéndose una potente “object-pipeline” Permite continuar usando las herramientas de línea de comando clásicas. Ping, Ipconfig, Netsh, etc.

8 Windows or Server Product Functionality Graphical Administrative Tool (e.g., Microsoft Management Console Snap-In) Command-Line Tool Component Object Model (COM) component WMI Classes

9 Windows or Server Product Functionality Microsoft.NET Framework Windows PowerShell Cmdlets MMC Snap-In ScriptsEtc

10 Windows PowerShell SnapIns Instalan Cmdlets y Providers en la PowerShell Windows PowerShell Cmdlets Representan comandos individuales Sintaxis consistente: Verbo-nombre Ejemplos: Get-Help, Get-Command, Get-Process, Stop-Service, etc. Windows PowerShell Providers Permiten el acceso y navegación de una cierta fuente de datos. Ejemplos: FileSystem, Registry, Almacén de certificados, variables del sistema, etc.

11 Un alias es una nombre abreviado de un Cmdlet, pero no puede definirse ningún parámetro Hay alias predefinidos con algunos de los comandos UNIX y DOS más habituales (dir, ls, pwd, copy, del, rm, mv…) Ver: Get-Alias Pueden generarse nuevos Alias con los Cmdlets Set-Alias y New-Alias Set-Alias ayuda get-help Una función es un bloque de código al que se le da un nombre y que puede ser referenciado por otros comandos

12 Host Hosts a PowerShell Engine Implements MshHost PowerShell engine (msh.dll) Script / Parser - processes language constructs such as scripts, predicates, conditionals, etc. Pipeline Processor – manages inter- command communication via pipes Command Processor – manages command execution, registration and associated metadata Session State – variables and state accessible to script and cmdlets Extended Type System – a common interface to accessing properties, methods independent of the underlying object type Error Handler – manages exception to error mapping and reporting CmdletProvider Base Classes and Intefaces Automatically expose common cmdlets PS Shell Script Parser Pipeline Processor Session State Extended Type System Error Handling Session State Extended Type System Error Handling Command Processor Hosting Interfaces PowerShell Engine Other Hosts ExchangeExchange Cmdlet Interfaces CmdletProvider Cmdlets (get, set, copy, push, …) CmdletProvider Cmdlets (get, set, copy, push, …) CmdletsCmdlets CmdletProviders (FileSystem, Registry) CmdletProviders CmdletProvider Interfaces

13 Windows PowerShell Engine Custom Application Microsoft Management Console 3.0 PSObjectPSObject Windows PowerShell Cmdlets Cmdlets GUI Windows Forms Early Bound Objects Aplicación

14

15 Comodines y Pipelines Manipulando la salida Manipulación de elementos Exploración de objetos

16 Format-List Get- Process PowerShell permite la utilización de comodines Get-Command –name Get-Pro* Get-Command –name [A-D:W-Z]* El carácter “|” se utiliza para canalizar la salida de un Cmdlet a otro

17 Get-Process – Name Notepad | Stop-Process Get-Process – Name Notepad Stop-Process Repetimos: Los Cmdlets no aceptan y devuelven texto Los Cmdlets aceptan parámetros y objetos, y devuelven objetos

18 El resultado de la ejecución de un Cmdlet puede ser presentado: Una propiedad en particular  Format-Wide En una Lista  Format-List En una Tabla  Format-Table La salida puede redirigirse, perdiendo su calidad de lista de objetos y convirtiendose a texto, a: Consola  Out-Host Fichero  Out-File Impresora  Out-Printer Null  Out-Null La lista de objetos resultante puede representarse en HTML  Convertto-html

19 Un elemento o “Item” puede representar, archivos, carpetas, claves del registro, certificados, variables de entorno Podemos enumerar todos los elementos de un contenedor o “Drive” con Get-Childitem Cmdlets para manipular elementos New-Item Remove-Item Copy-Item Rename-Item Move-Item Set-Item Get-Item Invoke-Item Clear-Item

20 Un Objeto.Net es una instancia de una clase.Net que define las propiedades y los métodos de dicho objeto. Diferentes objetos de una misma clase tienen diferentes propiedades que pueden ser modificadas usando los métodos asociados. Para obtener información de un objeto se utiliza el Cmdlet Get-Member Ejemplos: Get-process | Get-member Get-service | Get-member

21

22 Variables Funciones y Filtros Operadores Bucles y Condiciones Métodos específicos de Objetos Gestión de errores Políticas de Ejecución

23 Ficheros de texto con extensión.ps1 Se ejecutan: Directamente en la consola de PowerShell Mediante el siguiente comando PowerShell.exe c:\scripts\Script.ps1 Con el modificador –noexit no se se cerrará la consola después de le ejecución Admiten: Cmdlets Variables (Enteros, decimales, cadenas, arrays…) Operadores, Bucles, condicionales Métodos, Funciones

24 Las variables empiezan por $ y no tienen tipos específicos por defecto, aunque pueden ser declaradas explícitamente $a=10 $b= “Esto es una cadena” $c= 1,2,3 $d= 1..10 $e=“Esto es”,”un array”,”de cadenas” $f= (1,2),(3,4),(5,6) [int]$entero=1 [string]$cadena=“Esto es otra cadena” Las variables creadas en una sesión de PowerShell solo perduran durante esa sesión, y las creadas en un script solo durante la ejecución del script Los Cmdlets Read-Host y Write-Host son útiles a la hora de pedir y devolver valores durante la ejecución de un Script $nombre = Read-Host “Introduce tu Nombre” Las variables también son objetos, y por tanto pueden almacenarlos

25 Bloques de código con nombres asignados Pueden referenciarse tanto desde la propia Shell como desde scripts Los parámetros que se pasan a los scripts y de las funciones se almacenan en la variable especial $args Ver: get-help about_function

26 OperatorDescription -eqTests for equality (==) -neTests for inequality (!=) -gtTests whether the value on the left is greater than the value on the right (>) -geTests whether the value on the left is greater than or equal the value on the right (>=) -ltTests whether the value on the left is less than the value on the right (=) -ltTests whether the value on the left is less than the value on the right (

27 PowerShell soporta los siguientes constructores de bucles While, Do..While, Until: Ejecuta código mientras la condición sea cierta For: Ejecuta código un número especificado de veces ForEach: Ejecuta código para cada elemento de una colección Break Expresiones condicionales If.. Else.. Elseif Switch Ver la Windows PowerShell Language Quick Reference o “Get-Help about*”Windows PowerShell Language Quick Reference

28 En un Script pueden usarse los métodos asociados a cada tipo de objeto Usar Get-Member para saber cuales son: $nombre=“Windows Server 2008” $nombre | Get-Member –membertype Method Utilizar el método necesario $nombre.ToUpper()

29 La variable $ErrorActionPreference define el modo de gestión de errores: $ErrorActionPreference = “Continue” $ErrorActionPreference = “Stop” $ErrorActionPreference = “SilentlyContinue” $ErrorActionPreference = “Inquire” La variable $DebugPreference especifica el modo de depuración $DebugPreference = “Continue” $DebugPreference = “Stop” $DebugPreference = “SilentlyContinue” $DebugPreference = “Inquire” Clear Error Count Do Something If Error Count > 0 Take Action Continue

30 $error.psbase.clear() $ErrorActionPreference = “SilentlyContinue” $DeUserOu = [ADSI]’LDAP://CN=users,DC=contoso,DC=com’ $user = $DeUserOu.create(‘user’, ‘CN=‘ + $args[0]) $user.setinfo() If($error.count –eq 0) { $user.put(‘SAMAccountName’, $args[0]) $user.setinfo() “user “ + $args[0] + “ created successfully” } Else { “Could not create user!” $error[0].message } $error.psbase.clear() $ErrorActionPreference = “SilentlyContinue” $DeUserOu = [ADSI]’LDAP://CN=users,DC=contoso,DC=com’ $user = $DeUserOu.create(‘user’, ‘CN=‘ + $args[0]) $user.setinfo() If($error.count –eq 0) { $user.put(‘SAMAccountName’, $args[0]) $user.setinfo() “user “ + $args[0] + “ created successfully” } Else { “Could not create user!” $error[0].message }

31 Determinan Si se pueden o no ejecutar scripts y bajo que condiciones de seguridad Si se pueden cargar ficheros de configuración personalizados Cuatro estados Restricted: (defecto): No se permite la ejecución de scripts AllSigned: Los scripts deben estar firmados digitalemente por un emisor de confianza para poder ejecutarse RemoteSigned: Los scripts que se hayan descargado, que vengan por correo electrónico o IM, han de estar firmados digitalmente por un emisor de confianza para poder ejecutarse. Los locales se ejecutaran todos Unrestricted: Todos los scripts podrán ejecutarse Ver: Get-executionpolicy, Set-executionpolicy, Get-help about_signing Configurables por políticas de grupo

32

33 El Directorio Activo puede manejarse a través de ADSI de alguna de estas dos maneras Con un objeto de la clase "System.DirectoryServices.DirectoryEntry“ $dom = New-Object system.directoryservices.directoryentry ‘ ’ Usando el wrapper [ADSI]. $dom = [ADSI] ‘ ’ Para obtener la lista de metodos de un objeto del AD: $dom.psbase | Get-Member $dom.psbase.get_children()

34

35 WMI (Windows Management Intrumentation) es la implementación de Microsoft de WBEM (Web Based Enterprise Management) PowerShell soporta WMI de manera nativa Get-WMIObject Interactúa con el espacio de nombres WMI Scripts y Herramientas útiles http://www.microsoft.com/technet/scriptcenter/scripts/msh/default.mspx?m fr=true Scriptomaticv2 WMICodeCreator WMI ExplorerWMI Explorer (PowerShell Script de http://thepowershellguy.com)http://thepowershellguy.com WMI Explorer

36

37 La mayor parte de los objetos COM y objetos derivados de las clases COM del.NET Framework pueden crearse con el Cmdlet New- Object Ver: http://msdn2.microsoft.com/es-es/library/ms306608(vs.80).aspx http://msdn2.microsoft.com/es-es/library/ms306608(vs.80).aspx Las clases estáticas, como System.Math o System.Environment, pueden manejarse directamente: PS> [system.math]::Sqrt(5) PS> [system.environment]::get_OSVersion()

38

39 Permiten que los alias, variables y funciones personalizados se carguen al iniciar una sesión Tipos de perfiles Para todos los usuarios y Shells %windir%\system32\WindowsPowerShell\v1.0\profile.ps1 Para todos los usuarios, pero solo para la Microsoft.PowerShell %windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1 Para el usuario actual y todas las Shells %UserProfile%\My Documents\WindowsPowerShell\profile.ps1 Para el usuario actual, pero solo para la Microsoft.PowerShell %UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 También se puede configurar la apariencia de la ventana

40

41 9/26/201640 Windows PowerShell sitewww.microsoft.com/powershell Newsgroupmicrosoft.public.windows.powershell Team bloghttp://blogs.msdn.com/powershell Channel 9http://channel9.msdn.com/tags/powershell Wikihttp://channel9.msdn.com/wiki/default.aspx/channel9.powershell TechNet Script Centerhttp://www.microsoft.com/technet/scriptcenter/powershell Windows PowerShell 1.0 Documentation Pack http://go.microsoft.com/fwlink/?linkid=64774 PowerShell Graphical Help File http://www.microsoft.com/downloads/details.aspx?familyid=3B3F 7CE4-43EA-4A21-90CC-966A7FC6C6E8&displaylang=en QUEST PoweGUIhttp://www.powergui.org

42 David Cervigón Luna IT Pro Evangelist [email protected] http://blogs.technet.com/davidcervigon

43 Microsoft Windows Server 2008. Administración Microsoft Windows Server 2008. Active Directory Microsoft Windows Server 2008. Internet Information Server 7.0 Microsoft Windows Vista. Business Desktop Deployment

44 Managing Windows Server 2008 and Windows Vista using Group Policy Managing Windows Vista and Windows Server 2008 Network Bandwidth with Policy-based Quality of Service Windows Server 2008 Beta 3 Server Core Windows Server 2008 Beta 3 Server Manager Centralized Application Access with Windows Server 2008 Beta 3 Deployment Services (WDS) in Windows Server 2008 Beta 3 Fine Grained Password Settings in Windows Server 2008 Beta 3 Managing Network Security Using Windows Firewall with Advanced Security Beta 3 Windows Server 2008 Enterprise Failover Clustering Managing TS Gateway and RemoteApps in Windows Server 2008 Beta 3 Managing Windows Server 2008 Using New Management Technologies Beta 3 Network Access Protection with IPSec Enforcement Using APPCMD Command Line or UI with IIS 7 in Windows Server 2008 Beta 3 Using PowerShell in Windows Server 2008 Beta 3

45 TechCenter de Windows Server 2008 http://www.microsoft.com/spain/technet/prodtechnol/windowsserver/2008/defa ult.mspx Próximos webcasts en vivo http://www.microsoft.com/spain/technet/jornadas/default.mspx Webcasts grabados sobre Windows Server http://www.microsoft.com/spain/technet/jornadas/webcasts/webcasts_ant.aspx ?id=1 Webcasts grabados otras tecnologías Microsoft http://www.microsoft.com/spain/technet/jornadas/webcasts/webcasts_ant.aspx Foros técnicos http://forums.microsoft.com/technet-es/default.aspx?siteid=30

46 Registrarse a la newsletter TechNet Flash http://www.microsoft.com/spain/technet/boletines/default.mspx Obtenga una Suscripción TechNet Plus http://technet.microsoft.com/es-es/subscriptions/default.aspx