Publicado el 24 de Mayo del 2018
13.063 visualizaciones desde el 24 de Mayo del 2018
11,0 MB
100 paginas
Creado hace 7a (31/03/2018)
A. P.
PowerShell v.1
Indice
PowerShell
Arranque
Modos de operación
A. P.
Comandos
Funciones
Pipeline
Proveedores
Registro
Scripts
Variables
Tipos Datos
Números
Cadenas
Fecha/Hora
Arrays
Hash Tables
Operadores
Bucles
Variables
entorno
Invocación
Módulos
PowerShell v.1
.NET
WMI
COM
XML
Expresiones Regulares
Programar Tareas
EventLogs
Errores
Rendimiento
Acceso remoto
Internet
Reflexión
2
Windows PowerShell (WPS)
Indice
Proporciona el mejor entorno posible de shell* y script para Microsoft Windows.
PowerShell es sobretodo un shell* interactivo, que incorpora capacidades de script.
PowerShell es un nuevo entorno de consola para Windows basado en .NET.
En PowerShell todo son objetos, al igual que en .NET en que se basa.
WPS opera como .NET: llamando a métodos y accediendo a propiedades de clases .NET.
Acceso a objetos .NET, COM (Component Object Model), y WMI (Windows Management Instrumentation).
PowerShell acepta comandos estándar de Windows (p.ej. ipconfig o ping) y aplicaciones.
PowerShell introduce nuevos comandos – cmdlets - más potentes y fáciles de usar.
Potente interacción entre cmdlets con pipelines, basada en objetos.
La salida de un cmdlet (objeto .NET), se pasa a otro cmdlet mediante pipeline (|).
PowerShell soporta arrays y diccionarios.
Posiblidad de alojar WPS en cualquier aplicación, particularmente en .NET.
Misma forma de navegación en sistema de ficheros, registro, providers, variables, alias.
No hay compilación, solo entrar comandos o scripts, y ejecutar.
Los mismos comandos se usan en el modo interactivo, en los scripts, y en las funciones.
PowerShell soporta XML como tipo primitivo de datos y facilita su tratamiento.
WPS dá acceso a Procesos, Servicios, Event logs, Hard, Soft, FileSystem, Registro, ...
PowerShell usa una sintaxis similar a C#, pero a diferencia de C#, WPS es case-insensitive.
PowerShell corre VBScripts.
PowerShell cuenta con la notable funcionalidad del acceso remoto a otros equipos en red.
A. P.
* Shell: soft que da acceso a las funcionalidades del sistema operativo.
PowerShell v.1
3
VBScript vs. PowerShell
Indice
VBScript está dirigido a páginas Web,
PowerShell está dirigido sobretodo a
no a administradores.
VBScript se compila y por eso las
funciones pueden ir al final.
Hay funciones y subrutinas.
Interactúa con objetos COM.
administradores.
WPS es interpretado y las funciones
deben definirse antes de ser llamadas.
Sólo hay funciones.
Interactúa con objetos .NET, WMI, y COM.
Lenguaje
IDE
Compilado
Autónomo
Visual Basic
VBA
Si
Si
VBScript
No**
Si
Si
Si
Si
No*
No***
PowerShell
Si****
No*****
Si
*) VBA requiere una aplicación host como Microsoft Office, generalmente Excel.
**) Aunque no disponen de IDE, hay editores de script de otros proveedores
***) VBScript requiere una aplicación host como WSH o Internet Explorer
****) En WPS hay un ISE = Integrated Scripting Environment, que es de uso opcional.
****) Aunque WPS es un lenguaje interpretado, algunas partes – los cmdlets - se compilan en DLL.
A. P.
PowerShell v.1
4
PowerShell y .NET Framework
Indice
.NET Framework forma el núcleo del moderno lenguaje scripting que es Windows PowerShell.
.NET es un entorno para desarrollo aplicaciones de escritorio, de red, de internet, móviles, y scripts.
PowerShell
Métodos
Propiedades
Librería de Clases
.NET
l
s
t
e
d
m
c
WPS hace uso de los
recursos de .NET a
través de los cmdlets,
ocultando los detalles
de programación.
WMI
CLR provee:
Compilación
Seguridad
Gestión memoria
Excepciones
CLR
Common Languague Runtime
Windows Management
Instrumentation
.NET Framework
A. P.
Ejecución
PowerShell v.1
COM
Component Object Model
5
Arranque de PowerShell
Indice
PowerShell requiere que esté instalado .NET Framework 2.0 ó posterior
Verificar su existencia en C:\Windows\Microsoft.NET\Framework\v.2.0.50727 (o versión superior).
PowerShell formaba ya parte de Windows 7. Con Windows 8 PowerShell v3
+ R
+ Ejecutar
El shell es
una simple
ventana
con un
símbolo >,
donde se
entran
comandos
y presentan
resultados.
Recupera última entrada, y anteriores,
al seguir pulsando flecha arriba.
Recupera siguiente, y siguientes,
al seguir pulsando flecha abajo.
Get-Host nos permite ver la versión
y características de PowerShell.
Al arrancar, WPS crea un proceso, y
todos los comandos corren dentro de él.
[En la consola clásica de Windows, ejecutables
.exe corren en procesos separados.]
Clear-host
clear
cls
Get-History
Recupera todas las entradas hechas
Invoke-History
ejecuta una de las entradas por nº
Cuando se lanza PowerShell, se abre en el directorio C:\Users\userName.
Esto asegura que se encuentra en un directorio desde el que se pueden lanzar acciones.
Esta técnica es más segura que abrirlo en el directorio raiz o del sistema.
A. P.
Entrando Start-Process powershell -Verb runAs se entra en modo Administrador.
PowerShell v.1
6
Graphical Windows PowerShell
Indice
Microsoft ofrece a partir de PS v2.0 un interface gráfico para una gestión mejorada de PowerShell
PowerShell v3 tiene 2 componentes: la consola estándar de texto y el entorno integrado ISE.
Ejecutar script
Panel de scripts arriba,
panel consola abajo.
Panel gráfico ISE
[graphical host]
Panel de consola
[console host]
ISE = Integrated Scripting Environment
PowerGui es un editor de scripts gratuito, que
puede usarse como alternativa al IDE propio de PS.
A. P.
PowerShell v.1
7
Perfiles en PowerShell
Indice
Al arrancar PS, se cargan automáticamente una serie de ajustes, agrupados en perfiles, que marcan su entorno de uso.
Un perfil en PS es simplemente un script con un nombre especial que reside en una ubicación determinada.
Estos perfiles no se crean de forma predeterminada, ni son obligatorios. Sólo existen si se crean.
$Profile corre automáticamente al arrancar la sesión, y sirve para ejecutar scripts y poner variables al Usuario actual (current user).
El valor de la variable interna $Profile, depende desde donde se llame, pero retorna la vía a Usuario actual, Host actual (PowerShell).
Desde consola PowerShell
Desde consola PowerShell ISE
1
2
ISE
3
4
ISE
C:\windows\system32\windowspowershell\v1.0\profile.ps1
Todos usuarios
Todos hosts
C:\windows\system32\windowspowershell\v1.0\Microsoft.PowerShell_profile.ps1
Todos usuarios
PowerShell
C:\windows\system32\windowspowershell\v1.0\Microsoft.PowerShellISE_profile.ps1
Todos usuarios
PowerShell ISE
C:\Usuarios\Alfonso\Documentos\WindowsPowerShell\profile.ps1
Usurario actual
Todos hosts
C:\Usuarios\Alfonso\Documentos\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Usurario actual
PowerShell
C:\Usuarios\Alfonso\Documentos\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
Usurario actual
PowerShell ISE
Se usa el perfil general (todos hosts) cuando se quieren aplicar los ajustes a PowerShell al arrancar desde aplicaciones de terceros.
Se usa el perfil PowerShell cuando se desea aplicar los ajustes al arrancar sólo la consola PowerShell. Es recomendable usar con preferencia este perfil.
Hay 6 tipos de perfiles, reflejados en la tabla. Estos ficheros se cargan en el orden 1,2,3,4, siendo posible redefinir la misma función en diferentes ficheros.
Por defecto $Profile hace referencia a Usuario actual, PowerShell (current user, current host).
$home y $pshome son variables internas. $home guarda el directorio del usuario actual y $pshome guarda el directorio de instalación de PowerShell.
PowerShell v.1
A. P.
8
Crear/editar un perfil
Indice
PowerShell soporta 4 tipos de ficheros de perfiles y los ejecuta en un orden predeterminado al arrancar.
La variable interna $Profile contiene la ruta y nombre del fichero que contiene el perfil, que por defecto es de Usuario actual, Host actual.
$Profile
Segun desde donde se ejecute, dará la ruta y nombre de un fichero u otro
Desde PowerShell
Desde PowerShell ISE
True
Test-Path $Profile
Comprueba si existe el fichero $Profile
False
New-Item -path $profile -type file -force
Crea nuevo fichero $Profile vacio, si no existía.
Parámetro –force fuerza la creación del fichero.
notepad $profile
Abre la aplicación NotePad y abre el fichero que contiene $profile
$Profile tiene 4 propiedades:
-AllUsersAllHosts
-AllUsersCurrentHost
-CurrentUserAllHosts
-CurrentUserCurrentHost.
Por defecto hace referencia a
Current User, Current Host.
Es posible acceder a las otras
propiedades mediante
$PROFILE.CurrentUserAllHosts,
$PROFILE.AllUsersAllHosts,
$PROFILE.AllUsersCurrentHost.
El cmdlet Get-Host devuelve
un objeto que detalla el
entorno PS. Uno de sus
miembros es la propiedad UI
que a su vez cuenta con la
propiedad RawUI que dá las
caracteristicas de la consola.
La variable interna $host dá
acceso al objeto Get-Host, y a
sus propiedades UI y RawUI.
Guardar
Apagar PS
Iniciar PS
Al arrancar PS, aplican las características definidas en $Profile.
En NotePad se entra o edita el contenido del
fichero dado por $profile,
puede ser uno de los indicados arriba,
según se esté en PowerShell o PowerShellISE.
$Host.UI.RawUI
Contiene una serie
de propiedades de
la consola.
BackgroundColor
BufferSize
CursorPosition
CursorSize
ForegroundColor
KeyAvailable
MaxPhysicalWindowSize
MaxWindowSize
WindowPosition
WindowSize
WindowTitle
9
Hay que distinguir entre el propio motor PowerShell y
la aplicación –host – que lo aloja.
Estas hosts pueden ser la consola o PowerShellISE, que
son responsables de cargar y ejecutar los perfiles cada
vez que se arranca.
A. P.
PowerShell v.1
Comentarios de: Windows PowerShell WPS (1)