• EnglishSpanishGermanFrenchPolishChinese (Traditional)


EnglishSpanishGermanFrenchPolishChinese (Traditional)

Operating systems, scripting, PowerShell and security

Operating systems, software development, scripting, PowerShell tips, network and security

Menú principal
  • Categorías
  • Cursos
  • Libro de PowerShell (nivel medio)
  • Libro de PowerShell (nivel avanzado)
  • Lo mejor
  • Lo último
  • Proyectos
  • Contactar
Ir al contenido

1. Introducción a PowerShell (nivel avanzado)

Contenidos

  • Características
  • Consola
  • Versiones
        • Ejemplos
          • Cmdlet que sirve para conocer la versión actual de PowerShell
          • ¿Cómo puedo saber si una sesión es de PowerShell convencional o bien de PowerShell Core?
  • Cmdlets
        • Ejemplo
          • Mostrar algunos cmdlets de PowerShell
  • Alias
        • Ejemplo
          • El cmdlet que tiene el alias cls es
        • Ejemplo
          • Ver los alias de los parámetros del cmdlet Get-Process
  • Ayuda
  • Canalizaciones
        • Ejemplo
          • Mostrar los procesos ordenador por nombre
  • Operaciones
    • Seleccionar
        • Ejemplos
          • Seleccionar el nombre de los procesos que se están ejecutando
          • Seleccionar el nombre de los cinco primeros procesos que se están ejecutando
    • Agrupar
        • Ejemplo
          • Agrupar el nombre de los procesos que se están ejecutando
    • Ordenar
        • Ejemplos
          • Ordenar por el nombre los procesos que se están ejecutando
          • Ordenar procesos por nombre descendente y uso de CPU ascendente
    • Contar
        • Ejemplo
          • Contar el número de procesos que se están ejecutando
    • Comparar
        • Ejemplo
          • Ver los nombres procesos que se están ejecutando en dos momentos distintos y comprar el resultado
    • Dar formato
        • Ejemplo
          • Mostrar información sobre los procesos que se están ejecutando con distinto formato
    • Entrada y salida
        • Ejemplo
          • Guardar en un fichero la información sobre los procesos que se están ejecutando
    • Where
        • Ejemplo
          • Mostrar información sobre los procesos que se están ejecutando cuyo nombre sean «svchost»
    • Grid
        • Ejemplo
    • Measure
        • Ejemplo
          • Mostrar tamaños mínimo, máximo y medio de los conjuntos de trabajo de los procesos que se están ejecutado
  • Seguridad
        • Ejemplo
          • Cambiar la política de ejecución a Unrestricted (sin restricción)
  • Entorno de scripting integrado (ISE)
        • Ejercicio
          • Cambiar el título de PowerShell mediante una alarma a la hora del desayuno

Desde el año 2006 Microsoft dispone de una línea de comandos mejorada que se denomina PowerShell (aunque los orígenes de PowerShell datan de años anteriores y el nombre del proyecto se conocía como MONAD), es más potente y rica que la consola de MS-DOS.

PowerShell es una línea de comandos con tecnología de scripting basada en tareas que proporciona a los administradores de tecnologías de la información (TI) un control integral y la posibilidad de automatizar las tareas de administración del sistema.

PowerShell se ha creado sobre .NET Framework, Common Language Runtime (CLR) y .NET Framework, y acepta y devuelve objetos de .NET.

Los comandos (cmdlets, se pronuncia command-let) de PowerShell son sencillos de recordar usan el sistema verbo-nombre para llamar a los cmdlets, los verbos y los nombres están en inglés.

Características

Las principales características de PowerShell son:

  • Es un lenguaje de scripting.
  • Diseñado para administradores de sistemas.
  • Entorno interactivo y shell básica.
  • Basado en .NET.
  • Controlar y automatizar el sistemas operativo.
  • Permite controlar también aplicaciones de Windows.
  • Mejora de la antigua shell de Windows y elimina problemas antiguos.
  • Incorpora conceptos y ventajas de distintos entornos.
  • Realizar tareas de administración relacionadas con el registro, procesos, servicios, eventos, etc.
  • Gestión de WMI.
  • Diseño sencillo.
  • Orientación a objetos. Aunque los cmdlets se escriben como texto, se comportan como objetos.
  • Coherencia en los cmdlets, cada cmdlet se puede utilizar siempre de la misma forma. Si hay un cmdlet que ordena no es necesario añadir esa funcionalidad a un nuevo cmdlet.
  • Seguridad. Tiene sistemas que controlan la ejecución de scripts y así se evita la ejecución de scripts no deseados.
  • Se pueden administrar remotamente.
  • Los proveedores de Windows PowerShell permiten obtener acceso a almacenes de datos (como el Registro y el almacén de certificados) con la misma simplicidad con que se obtiene acceso al sistema de archivos.
  • Permite realizar automatizaciones al tener el control del sistema operativo.
  • Se puede ejecutar en cualquier sistema operativo.

Consola

El programa que sirve para ejecutar PowerShell se llama powershell.exe y la versión versión ISE (el entorno de script integrado) se llama powershell_ise.exe.

Versiones

Hay varias versiones de PowerShell, la última versión estable es la 7.1.2.

Microsoft ha liberado una edición de PowerShell llamada: PowerShell Core.

PowerShell Core es una PowerShell más pequeña que la PowerShell convencional y es multiplataforma, quiere decir que puede instalarse en sistemas operativos: MacOS y Linux, también en Windows.


Ejemplos
Cmdlet que sirve para conocer la versión actual de PowerShell
PowerShell
1
Get-Host
¿Cómo puedo saber si una sesión es de PowerShell convencional o bien de PowerShell Core?

Ejecutando en la consola

PowerShell
1
$PSVersionTable.PSEdition

Cmdlets

PowerShell tiene comandos que ayudan al usuario a realizar operaciones y obtener resultados, los comandos en PowerShell se conocen como cmdlets.

Los comandos en PowerShell se consideran objetos, el resultado a la hora de ejecutar un cmdlet no es un texto sino un objeto.

Cada cmdlet se puede utilizar por separado pero la principal potencia radica en enlazar varios cmdlets para realizar tareas complejas.

Hay cmdlets básicos y también se pueden crear nuevos.

Cmdlet que  sirve para listar todos los cmdlets soportados

PowerShell
1
Get-Command

Alias

PowerShell
1
gcm

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Name                 {}        
Verb                 {}        
Noun                 {}        
Module               {PSSnapin}
FullyQualifiedModule {}        
CommandType          {Type}    
TotalCount           {}        
Syntax               {}        
ShowCommandInfo      {}        
ArgumentList         {Args}    
All                  {}        
ListImported         {}        
ParameterName        {}        
ParameterType        {}        
Verbose              {vb}      
Debug                {db}      
ErrorAction          {ea}      
WarningAction        {wa}      
InformationAction    {infa}    
ErrorVariable        {ev}      
WarningVariable      {wv}      
InformationVariable  {iv}      
OutVariable          {ov}      
OutBuffer            {ob}      
PipelineVariable     {pv}

Descubrir cmdlets

PowerShell
1
Get-Command -Name *-Service

Los cmdlets se pueden ejecutar y verificar el resultado de la ejecución para saber si se ha ejecutado correctamente o no.


Ejemplo
Mostrar algunos cmdlets de PowerShell
PowerShell
1
2
Get-Process
#Ver procesos que se están ejecutando en el sistema
PowerShell
1
2
Stop-Process -Name notepad
#Parar el proceso Bloc de notas
PowerShell
1
2
Get-Date
#Ver la fecha actual

Alias

Los usuarios pueden llamar a los cmdlets como ellos quieren.

Utilizar los nombres de los comandos de otras shells.

Mostrar todos los alias que hay en PowerShell

PowerShell
1
alias

Ejemplo
El cmdlet que tiene el alias cls es
PowerShell
1
alias cls

Los cmdlet tienen parámetros, también podemos utilizar alias de los parámetros con el siguiente cmdlet

PowerShell
1
(Get-Command Get-Command).Parameters.Values | Select-Object Name,Aliases

Ejemplo
Ver los alias de los parámetros del cmdlet Get-Process
PowerShell
1
(Get-Command Get-Process).Parameters.Values | Select-Object Name,Aliases

Ayuda

PowerShell dispone de ayuda para utilizar cmdlets, proveedores, funciones, scripts, etc.

Cmdlet de ayuda

PowerShell
1
Get-Help

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Name                {}    
Path                {}    
Category            {}    
Component           {}    
Functionality       {}    
Role                {}    
Detailed            {}    
Full                {}    
Examples            {}    
Parameter           {}    
Online              {}    
ShowWindow          {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}

Ayuda detallada

PowerShell
1
Get-Help Get-ChildItem -Detailed

Mostrar todo el contenido de la ayuda

PowerShell
1
Get-Help Get-ChildItem -Full

Buscar ayuda online

PowerShell
1
Get-Help -Name Get-Acl -Online

Actualizar ayuda

PowerShell
1
Update-Help

Canalizaciones

Se realiza entre varios cmdlets, la salida de un segmento del cmdlet es la entrada de otro.

Es uno de los conceptos más útiles de PowerShell porque permite relaciones unos cmdlets con otros.

La canalización se produce con objetos y no con textos.


Ejemplo
Mostrar los procesos ordenador por nombre
PowerShell
1
Get-Process | Sort-Object Name

Operaciones

Las operaciones que se pueden realizar con cmdlets son:

Seleccionar

Cmdlet

PowerShell
1
Select-Object

Alias

PowerShell
1
select

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
InputObject         {}    
Property            {}    
ExcludeProperty     {}    
ExpandProperty      {}    
Unique              {}    
Last                {}    
First               {}    
Skip                {}    
SkipLast            {}    
Wait                {}    
Index               {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}

Ejemplos
Seleccionar el nombre de los procesos que se están ejecutando
PowerShell
1
Get-Process | Select-Object Name
Seleccionar el nombre de los cinco primeros procesos que se están ejecutando
PowerShell
1
Get-Process | Select-Object Name -First 5

Agrupar

Cmdlet

PowerShell
1
Group-Object

Alias

PowerShell
1
group

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
NoElement           {}    
AsHashTable         {AHT}  
AsString            {}    
InputObject         {}    
Property            {}    
Culture             {}    
CaseSensitive       {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}

Ejemplo
Agrupar el nombre de los procesos que se están ejecutando
PowerShell
1
Get-Process | Group-Object

Ordenar

Cmdlet

PowerShell
1
Sort-Object

Alias

PowerShell
1
sort

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Descending          {}    
Unique              {}    
InputObject         {}    
Property            {}    
Culture             {}    
CaseSensitive       {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}

Ejemplos
Ordenar por el nombre los procesos que se están ejecutando
PowerShell
1
Get-Process | Sort-Object Name
Ordenar procesos por nombre descendente y uso de CPU ascendente
PowerShell
1
Get-Process |  Sort-Object -Property @{E='Name'; A=$False},@{E='CPU';A=$True}

Contar

Método en PowerShell

PowerShell
1
count

Ejemplo
Contar el número de procesos que se están ejecutando
PowerShell
1
(Get-Process).count

Comparar

Cmdlet

PowerShell
1
Compare-Object

Alias

PowerShell
1
2
compare
diff

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ReferenceObject     {}    
DifferenceObject    {}    
SyncWindow          {}    
Property            {}    
ExcludeDifferent    {}    
IncludeEqual        {}    
PassThru            {}    
Culture             {}    
CaseSensitive       {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}

Ejemplo
Ver los nombres procesos que se están ejecutando en dos momentos distintos y comprar el resultado
PowerShell
1
2
3
$procesosa=gps | Select-Object Name
$procesosb=gps | Select-Object Name
Compare-Object -ReferenceObject $procesosa -DifferenceObject $procesosb

Dar formato

Cmdlets

PowerShell
1
2
3
4
Format-Custom
Format-Table
Format-List
Format-Wide

Alias

PowerShell
1
2
3
4
fc
ft
fl
fw

Parámetros y alias de los parámetros

Format-Custom

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Property            {}    
Depth               {}    
GroupBy             {}    
View                {}    
ShowError           {}    
DisplayError        {}    
Force               {}    
Expand              {}    
InputObject         {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}

Format-Table

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
AutoSize            {}    
HideTableHeaders    {}    
Wrap                {}    
Property            {}    
GroupBy             {}    
View                {}    
ShowError           {}    
DisplayError        {}    
Force               {}    
Expand              {}    
InputObject         {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}

Format-List

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Property            {}    
GroupBy             {}    
View                {}    
ShowError           {}    
DisplayError        {}    
Force               {}    
Expand              {}    
InputObject         {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}

Format-Wide

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Property            {}    
AutoSize            {}    
Column              {}    
GroupBy             {}    
View                {}    
ShowError           {}    
DisplayError        {}    
Force               {}    
Expand              {}    
InputObject         {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}

Ejemplo
Mostrar información sobre los procesos que se están ejecutando con distinto formato
PowerShell
1
2
3
4
Get-Process | Format-Custom
Get-Process | Format-Table
Get-Process | Format-List
Get-Process | Format-Wide

Entrada y salida

Cmdlet

PowerShell
1
Out-File

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
FilePath            {}          
LiteralPath         {PSPath}    
Encoding            {}          
Append              {}          
Force               {}          
NoClobber           {NoOverwrite}
Width               {}          
NoNewline           {}          
InputObject         {}          
Verbose             {vb}        
Debug               {db}        
ErrorAction         {ea}        
WarningAction       {wa}        
InformationAction   {infa}      
ErrorVariable       {ev}        
WarningVariable     {wv}        
InformationVariable {iv}        
OutVariable         {ov}        
OutBuffer           {ob}        
PipelineVariable    {pv}        
WhatIf              {wi}        
Confirm             {cf}

Ejemplo
Guardar en un fichero la información sobre los procesos que se están ejecutando
PowerShell
1
Get-Process | Out-File procesos.txt

Where

Cmdlet

PowerShell
1
Where-Object

Alias

PowerShell
1
where

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
InputObject         {}            
FilterScript        {}            
Property            {}            
Value               {}            
EQ                  {IEQ}        
CEQ                 {}            
NE                  {INE}        
CNE                 {}            
GT                  {IGT}        
CGT                 {}            
LT                  {ILT}        
CLT                 {}            
GE                  {IGE}        
CGE                 {}            
LE                  {ILE}        
CLE                 {}            
Like                {ILike}      
CLike               {}            
NotLike             {INotLike}    
CNotLike            {}            
Match               {IMatch}      
CMatch              {}            
NotMatch            {INotMatch}  
CNotMatch           {}            
Contains            {IContains}  
CContains           {}            
NotContains         {INotContains}
CNotContains        {}            
In                  {IIn}        
CIn                 {}            
NotIn               {INotIn}      
CNotIn              {}            
Is                  {}            
IsNot               {}            
Verbose             {vb}          
Debug               {db}          
ErrorAction         {ea}          
WarningAction       {wa}          
InformationAction   {infa}        
ErrorVariable       {ev}          
WarningVariable     {wv}          
InformationVariable {iv}          
OutVariable         {ov}          
OutBuffer           {ob}          
PipelineVariable    {pv}

Ejemplo
Mostrar información sobre los procesos que se están ejecutando cuyo nombre sean «svchost»
PowerShell
1
Get-Process | Where-Object Name -EQ svchost

Grid

Cmdlet

PowerShell
1
Out-GridView

Alias

PowerShell
1
ogv

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
InputObject         {}    
Title               {}    
Wait                {}    
OutputMode          {}    
PassThru            {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv} 

Ejemplo

Enviar la salida a una tabla interactiva sobre los procesos que se están ejecutando

PowerShell
1
Get-Process | Out-GridView

Measure

Cmdlet

PowerShell
1
Measure-Object

Alias

PowerShell
1
measure

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
InputObject         {}    
Property            {}    
Sum                 {}    
Average             {}    
Maximum             {}    
Minimum             {}    
Line                {}    
Word                {}    
Character           {}    
IgnoreWhiteSpace    {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}

Ejemplo
Mostrar tamaños mínimo, máximo y medio de los conjuntos de trabajo de los procesos que se están ejecutado
PowerShell
1
Get-Process | Measure-Object -Property workingset -Minimum -Maximum -Average

Seguridad

PowerShell tiene mecanismos de seguridad.

Se puede cambiar la política de ejecución.

El cmdlet que sirve para ver el listado de la política de ejecución de secuencias de comandos de Windows PowerShell

PowerShell
1
Get-ExecutionPolicy

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
Scope               {}    
List                {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}

El cmdlet Get-ExecutionPolicy simplemente le indica en cuál de las cuatro políticas de ejecución (políticas que determinan cuáles son los scripts de Windows PowerShell, en su caso, se ejecutarán en su ordenador) se encuentra actualmente en la fuerza.

Las directivas de ejecución de Windows PowerShell se incluyen los siguientes:

  • Restricted (restringido) – No hay secuencias de comandos se pueden ejecutar. Windows PowerShell sólo se puede utilizar en modo interactivo.
  • AllSigned (todos firmados) – Sólo guiones firmados por un editor de confianza se pueden ejecutar.
  • RemoteSigned (firmados remotamente) – guiones descargados deben ser firmados por un editor de confianza antes de que se pueden ejecutar.
  • Unrestricted (sin restricción) – No hay restricciones de libre disposición; todos los scripts de Windows PowerShell se pueden ejecutar.

Para cambiar la política de ejecución se utiliza el cmdlet junto con la directiva de ejecución a la que se quiera cambiar

PowerShell
1
Set-ExecutionPolicy

Parámetros y alias de los parámetros

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ExecutionPolicy     {}    
Scope               {}    
Force               {}    
Verbose             {vb}  
Debug               {db}  
ErrorAction         {ea}  
WarningAction       {wa}  
InformationAction   {infa}
ErrorVariable       {ev}  
WarningVariable     {wv}  
InformationVariable {iv}  
OutVariable         {ov}  
OutBuffer           {ob}  
PipelineVariable    {pv}  
WhatIf              {wi}  
Confirm             {cf}

Ejemplo
Cambiar la política de ejecución a Unrestricted (sin restricción)
PowerShell
1
Set-ExecutionPolicy Unrestricted

Entorno de scripting integrado (ISE)

En PowerShell se puede escribir, ejecutar y probar scripts de maneras que no están disponibles en la consola de Windows PowerShell.

Escribir en la consola un script es tedioso, para escribir un script se hace desde el Entorno de scripting integrado.

El entorno de scripting integrado se utiliza para crear, ejecutar y depurar comandos o scripts, en definitiva es una mejora el símbolo de sistema.

El ISE agrega color de sintaxis, finalización con tabulación, IntelliSense, depuración visual y ayuda contextual.

El ISE permite ejecutar cmdlets en un panel de consola, pero también admite paneles que se pueden usar para ver simultáneamente el código fuente del script y otras herramientas que pueden conectarse al ISE. También puede abrir varias ventanas de script al mismo tiempo, lo cual es especialmente útil cuando se depura un script que usa las funciones definidas en otros scripts o módulos.

El editor tiene varias características:

  • Color de la sintaxis XML
  • Coincidencia de llaves
  • Vista Esquema
  • Editar texto con arrastrar y colocar
  • Zoom
  • Copia y pegado de texto enriquecido

Ejercicio
Cambiar el título de PowerShell mediante una alarma a la hora del desayuno
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$code =
{
    # Enviar la interfaz RawUI del proceso host y el contexto de ejecución
    param($RawUi)
    do
    {
        $HoraActual = Get-Date -Format 'HH:mm'
        $HoraAlarma = Get-Date -Format 'HH:mm' -Hour 10 -Minute 00
        if($HoraActual -eq $HoraAlarma){
                # Cambiar título
                $RawUI.WindowTitle = "Es hora de desayunar"
        }
        else
        {
                $RawUI.WindowTitle = "Es hora de trabajar"
        }
 
        # Esperar medio segundo
        Start-Sleep -Milliseconds 500
    }while ($true)
}
 
$ps = [PowerShell]::Create()
$null = $ps.AddScript($code).AddArgument($host.UI.RawUI)
$handle = $ps.BeginInvoke()

Publicado el día 1 de agosto de 2017

CATEGORÍAS

PowerShell

ETIQUETAS

Append, AutoSize, Certificados, Código, Compare-Object, Contains, Date, diff, expand, ExpandProperty, Format-Custom, Format-List, Format-Table, Format-Wide, Framework, gcm, Get-Acl, Get-ChildItem, Get-Command, Get-Date, Get-Host, Get-Process, GPS, Group-Object, Help, Herramientas, Libro PowerShell nivel avanzado, Linux, macOS, match, Measure-Object, Microsoft, Milliseconds, Module, MONAD, notcontains, Objetos, ogv, Out-File, Out-GridView, Parameter, Path, PowerShell Core, powershell_ise, powershell_ise.exe, ps, PSVersionTable, Script, Select-Object, Set-ExecutionPolicy, Sistema Operativo, Sort, Sort-Object, Start-Sleep, Stop-Process, svchost, Unique, Visual, Where-Object, Windows, Windows PowerShell, WMI, Word

MÁS

  • 13. Interfaces de usuario gráficas en PowerShell (nivel intermedio)
  • 11. Gestión del Directorio Activo (nivel intermedio)
  • Curso de Especialización de formación profesional en ciberseguridad en entornos de las tecnologías de la información
  • Tutorial de PowerShell
  • Listar los nombres de los ficheros DLL que hay en System32 con PowerShell
  • Libro de PowerShell (nivel avanzado), (libro online de PowerShell), (tutorial gratis de PowerShell)
Jesusninoc utiliza cookies: saber más aquí.