Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porTrinidad Aro Modificado hace 10 años
1
Código: HOL-WIN53 Microsoft Windows Server 2008 R2 PowerShell
2
Agenda ► PowerShell ► Cmdlets ► Unidades ► Scripting ► Objetos ► Gestión aplicaciones y objetos ► Tareas de administración
3
¿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
4
Windows PowerShell
5
Apariencia Similar
6
¿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
7
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
8
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
9
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
10
Listado cmdlets ► Get-command
11
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 …
12
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
13
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 comandos Get-command * ► Los comandos pueden filtrarse Get-command –commandtype tipo (Alias, function, application)
14
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.
15
Parámetros convencionales ► Whatif ► Confirm ► Verbose ► Debug ► Warn ► Erroraction ► Errorvariable ► Outvariable Force Exclude Include Passthru Path CaseSensitive Outbuffer
16
Ayuda ► Para solicitar la ayuda podremos operar con la siguiente sintaxis: Get-help cmdlet Man cmdlet Help cmdlet cmdlet -?
17
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 alias Get-alias alias ► Creación de alias. Set alias –name alias –value valor
18
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.
19
Salida de datos mediante pipe ► Podemos controlar los recursos del sistema. Comprobar rendimiento del procesador con ambas instrucciones Get-childitem c:\windows –recurse Get-childitem c:\windows –recurse | out-host -paging
20
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
21
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
22
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 *
23
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
24
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-list Get-process | format-list | out-host –paging ► Las salidas deben establecerse al final de la sintaxis.
25
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.
26
Introducción ► Powershell define diferentes tipos de unidades a las que se puede tener objeto. Unidades lógicas de disco y almacenamiento. Alias Funciones Contenedor de certificados. Usuario Equipo
27
Introducción Registro. Clave HKEY_Current_User Clave HKEY_Local_Machine Entorno Variables
28
Unidades ► Para obtener las unidades utilizaremos el cmdlet: Get-psdrive ► Si queremos diferenciarlos por proveedor Get-psdrive –psprovider proveedor
29
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 unidades Remove-psdrive –name nombre
30
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
31
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
32
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
33
Trabajo con elementos ► Cambiar nombres: rename-item ► Mover elementos: move-item ► Copiar elemento: copy-item ► Eliminar elementos: remove-item ► Ejecutar elementos: invoke-item
34
Scripting ► Scripting a través de línea de comandos ► Política de Ejecución ► Ejecutar scripts CScript WScript Windows PowerShell Scripts
35
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 PowerShell Copyright (C) 2006 Microsoft Corporation. Reservados todos los derechos. PS C:\Scripts> $a = 4 PS C:\Scripts> $b = 6 PS C:\Scripts> $a + $b 10
36
Script Línea de Comandos ► Permite instrucciones de control de flujo Windows PowerShell Copyright (C) 2006 Microsoft Corporation. Reservados todos los derechos. PS C:\Scripts> $a = 4 PS C:\Scripts> $b = 6 PS C:\Scripts> $a + $b 10 PS C:\Scripts> if ($a –gt $b) >> {$a} >> else >> {$b} >> 6 PS C:\Scripts>
37
Script Línea de Comandos Windows PowerShell Copyright (C) 2006 Microsoft Corporation. Reservados todos los derechos. PS C:\Scripts> $a = Get-Service PS C:\Scripts> $a Status Name DisplayName ------ ---- ----------- Running AeLookupSvc Experiencia con aplicaciones Stopped Appinfo Información de la aplicación Stopped AppMgmt Administración de aplicaciones Running Browser Examinador de equipos Stopped CertPropSvc Propagación de certificados Stopped COMSysApp Aplicación del sistema COM+ Running CryptSvc Servicios de cifrado Running Dhcp Cliente DHCP Running Dnscache Cliente DNS...
38
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 = “ + $b if ($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.
39
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 PowerShell Copyright (C) 2006 Microsoft Corporation. Reservados todos los derechos. PS C:\Scripts> C:\Scripts\Script.ps1 a = 4 b = 6 a no es mayor que b PS C:\Scripts>
40
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ón Restricted (por defecto) PowerShell no permite la ejecución de Scripts AllSigned Únicamente Scripts firmados por publicadores de confianza RemoteSigned Los firmados y los creados localmente en la máquina Unrestricted Se ejecutarán todos los scripts
41
Políticas de Ejecución ► Usar el cmdlet Get-ExecutionPolicy para descubrir que política de ejecución se está aplicando Windows PowerShell Copyright (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 <<<<
42
Políticas de Ejecución ► Usar el cmdlet Set-ExecutionPolicy para modificar la política de ejecución a aplicar Windows PowerShell Copyright (C) 2006 Microsoft Corporation. Reservados todos los derechos. PS C:\Scripts> Set-ExecutionPolicy Unrestricted PS C:\Scripts>./Script.ps1 a = 4 b = 6 a no es mayor que b
43
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 PowerShell Copyright (C) 2006 Microsoft Corporation. Reservados todos los derechos. PS C:\Scripts> Get-ExecutionPolicy Restricted PS C:\Scripts> WScript test.vbs Test VBScript
44
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
45
Crear un Perfil ► Para comprobar si existe o no un perfil creado: ► Para crear el perfil se debe ejecutar: Windows PowerShell Copyright (C) 2006 Microsoft Corporation. Reservados todos los derechos. PS C:\Scripts> Test-path $Profile False Windows PowerShell Copyright (C) 2006 Microsoft Corporation. Reservados todos los derechos. PS C:\Scripts> New-Item -Path $profile -ItemType file -Force
46
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
47
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.
48
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 –MemberType Property
49
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
50
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
51
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
52
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
53
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
54
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.
55
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
56
Ejemplos de clase estática ► [system.environment]::commandline ► [system.environment]::osversion ► [system.environment]::username ► [system.environment]::machinename ► [system.environment]::systemdirectory
57
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
58
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.
59
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-process Stop-process Get-process proceso ► Admite el uso de comodines y los modificadores - name e -id
60
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 PowerShell Copyright (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
61
Administración de servicios ► Podemos gestionar los servicios de un sistema mediante los cmdlets service Get-service ► Mediante –displayname podremos buscar un servicio por el nombre para mostrar. ► Los servicios pueden iniciarse, suspenderse o reiniciarse: Stop-service Start-service Suspend-service Restart-service
62
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.
63
Ejemplos ► Obtener datos de la BIOS Get-wmiobject –class win32_bios ► Obtener datos del procesador. Get-wmiobject –class win32_processor ► Mostrar actualizaciones instaladas. Get –wmiobject –class win32_quickfixengineering ► Mostrar usuarios Get-wmiobject –class win32_operatingsystem | select-object –property *user*
64
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
65
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”}
66
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)
67
Cambiar estado de un equipo ► Un equipo lo podremos bloquear, cerrar la sesión, apagarlo o reiniciarlo. Bloquearlo Rundll32.exe user32.dll,lockworkstation Cerrar la sesión Shutdown.exe -1 (get-wmiobject –class win32_operatingsystem –computername.).invokemethod(“win32shutdown”, 0) Apagarlo o reiniciarlo Tsshutdn.exe o shutdown.exe
68
Suscripción gratuita en: http://www.informatica64.com/technews.aspx
69
Informática 64 http://www.informatica64.com i64@informatica64.com +34 91 146 20 00
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.