PowerShell Commands Every Developer Should Know: 50+ Cmdlets for Getting Things Done, Monitoring Performance, Debugging

publicado en: Articles | 0

a muchos desarrolladores les encanta PowerShell, y por una buena razón: agrega potencia, funcionalidad y flexibilidad al símbolo del sistema de Windows, donde muchos de nosotros pasamos mucho tiempo. Sin embargo, viene con un poco de curva de aprendizaje, pero una vez que haya dominado los comandos esenciales que necesita saber, es la productividad en esteroides.,

los comandos de PowerShell se conocen como cmdlets, y estos cmdlets son la fuerza impulsora detrás de sus capacidades funcionales. Desde comandos que mejoran la experiencia general de Windows hasta comandos útiles para el trabajo de desarrollo, hay docenas de comandos importantes que los desarrolladores deben conocer., Hemos creado esta lista para que sirva como una guía de referencia práctica para aquellos que recién están comenzando a aprovechar la potencia de PowerShell, así como para aquellos que desean mejorar su experiencia con PowerShell, incluidos:

  • Cmdlets básicos de PowerShell
  • comandos de PowerShell para hacer las cosas
  • Cmdlets para la supervisión del rendimiento, las pruebas y la depuración

además de los cmdlets, hay docenas de parámetros y métodos que le ayudan a aprovechar al máximo tus guiones., El parámetro WhatIf es particularmente útil para probar scripts de PowerShell sin ejecutarlos (@pluralsight). Normalmente hay varios parámetros y métodos disponibles para cada comando. Los comandos enumerados a continuación son un buen punto de partida para cualquier desarrollador, pero para darse cuenta de los beneficios, debe dominar los parámetros y otros métodos también.

Cmdlets básicos de PowerShell

estos comandos básicos de PowerShell son útiles para obtener información en varios formatos, configurar la seguridad y crear informes básicos.,

Get-Command

Get-Command es un cmdlet de referencia fácil de usar que muestra todos los comandos disponibles para su uso en la sesión actual.

Simplemente escriba este comando:

get-command

El resultado será algo parecido a esto (@MS_ITPro):

2. Get-Help

El comando Get-Help es esencial para cualquier persona que utilice PowerShell, ya que proporciona un acceso rápido a la información que necesita para ejecutar y trabajar con todos los comandos disponibles.

si quieres algunos ejemplos, por ejemplo, introduce lo siguiente (@jp_jofre):

3., Set-ExecutionPolicy

Microsoft deshabilita los scripts de forma predeterminada para evitar que se ejecuten scripts maliciosos en el entorno de PowerShell. Sin embargo, los desarrolladores desean poder escribir y ejecutar scripts, por lo que el comando Set-ExecutionPolicy le permite controlar el nivel de seguridad que rodea a los scripts de PowerShell. Puede establecer uno de los cuatro niveles de seguridad:

  • Restringido: este es el nivel de seguridad predeterminado que bloquea la ejecución de los scripts de PowerShell. En este nivel de seguridad, solo puede introducir comandos de forma interactiva.,
  • Todos firmados: este nivel de seguridad permite que los scripts se ejecuten solo si están firmados por un editor confiable.
  • firma remota: en este nivel de seguridad, se permite ejecutar cualquier script de PowerShell que se haya creado localmente. Los Scripts creados de forma remota solo pueden ejecutarse si han sido firmados por un editor de buena reputación.
  • Sin restricciones: como su nombre indica, el nivel de seguridad sin restricciones permite que todos los scripts se ejecuten eliminando todas las restricciones de la directiva de ejecución.,

del mismo modo, si está trabajando en un entorno desconocido, puede averiguar fácilmente qué está utilizando la directiva de ejecución actual con este comando:

Get-ExecutionPolicy

consulte este hilo en superusuario para obtener más información sobre la configuración de la directiva de ejecución en PowerShell. (@StackExchange)

Get-Service

también es útil saber qué servicios están instalados en el sistema., Puede acceder fácilmente a esta información con el siguiente comando:

Get-Service

la salida se verá como la siguiente (@MS_ITPro):

si necesita saber si un servicio específico está instalado, puede agregar el interruptor-Name y el nombre del servicio, y Windows mostrará el estado del servicio. Además, puede aprovechar las capacidades de filtrado para devolver un subconjunto específico de servicios instalados actualmente., El siguiente ejemplo dará como resultado una salida de datos del comando Get-Service que se canalizó al cmdlet Where-Object, que luego filtra todo lo que no sea los servicios que se han detenido:

Get-Service | Where-Object {$_.status -eq "stopped"}

consulte esta publicación para ver algunos ejemplos adicionales de Get-Service en acción.

5. ConvertTo-HTML

Si necesita extraer datos que puede usar en un informe o enviar a otra persona, ConvertTo-HTML es una forma sencilla de hacerlo., Para usarlo, canalice la salida de otro comando al comando ConvertTo-HTML y use el conmutador-Property para especificar qué propiedades de salida desea en el archivo HTML. También deberá proporcionar un nombre de archivo.

por ejemplo, el siguiente código crea una página HTML que enumera los alias de PowerShell en la consola actual:

PS C:\> get-alias | convertto-html > aliases.htmPS C:\> invoke-item aliases.htm

Bonus: las funciones del cmdlet

Export-CSV

de la misma manera, pero exporta datos a a .Archivo CSV en lugar de HTML., Use

Select-Object

para especificar qué propiedades desea incluir en la salida.

echa un vistazo a este artículo de 4sysops para obtener más información sobre el uso eficaz de ConvertTo-HTML (@adbertram).

6. Get-EventLog

de hecho, puede usar PowerShell para analizar los registros de eventos de su máquina mediante el cmdlet Get-EventLog. Hay varios parámetros disponibles. Utilice el conmutador-Log seguido del nombre del archivo de registro para ver un registro específico., Usarías el siguiente comando, por ejemplo, para ver el registro de la aplicación:

Get-EventLog -Log "Application"

echa un vistazo a algunos ejemplos más de Get-EventLog en acción en este post (@nextofwindows). Otros parámetros comunes incluyen (@SS64):

  • -Verbose
  • -Debug
  • -ErrorAction
  • -ErrorVariable
  • -WarningAction
  • -Outvariable
  • -OutBuffer
  • -OutVariable

Get-Process

Mucho como la obtención de una lista de servicios disponibles, a menudo es útil ser capaz de obtener una lista rápida de todos los procesos actualmente en ejecución., El comando Get-Process pone esta información a su alcance.

Bonus: Use Stop-Process para detener los procesos que están congelados o que ya no responden. Si no está seguro de qué proceso lo está demorando, use Get-Process para identificar rápidamente el proceso problemático. Una vez que tenga el nombre o ID de proceso, use Stop-Process para terminarlo.

Aquí hay un ejemplo., Ejecute este comando para terminar todas las instancias del Bloc de notas que se están ejecutando actualmente (@MS_ITPro):

Stop-Process -processname notepad

También puede usar caracteres comodín, como el siguiente ejemplo, que termina todas las instancias del Bloc de notas, así como cualquier otro proceso que comience con nota:

Stop-Process -processname note*

echa un vistazo a esta publicación para obtener más información sobre PowerShell (@HowToGeek):

8. Clear-History

¿Qué pasa si desea borrar las entradas de su historial de comandos? Fácil de usar el cmdlet Clear-History. También puede usarlo para eliminar solo comandos específicos., Por ejemplo, el siguiente comando eliminaría los comandos que incluyen «help» o terminan en «command» (@MS_ITPro):

PS C:\> Clear-History -Command *help*, *command

Si desea agregar entradas a una sesión, use:

Add-History

consulte esta publicación para obtener información útil sobre cómo borrar el historial y cargar previamente el historial con una lista de ms_itpro).,

Where-Object

Where-Object es uno de los cmdlets más importantes a conocer, ya que le permite tomar un conjunto de datos y pasarlo más abajo en su canalización para filtrar (@jonathanmedd):

Get-Service | Where-Object {$_.Status -eq 'Running'}Status Name DisplayName------ ---- -----------Running AdobeARMservice Adobe Acrobat Update ServiceRunning AppHostSvc Application Host Helper ServiceRunning Appinfo Application InformationRunning AudioEndpointBu... Windows Audio Endpoint BuilderRunning Audiosrv Windows AudioRunning BFE Base Filtering EngineRunning BITS Background Intelligent Transfer Ser...Running BrokerInfrastru... Background Tasks Infrastructure Ser...Running Browser Computer BrowserRunning CDPSvc Connected Devices Platform Service

10. Set-AuthenticodeSignature

Si desea mantener su trabajo seguro en producción y evitar modificaciones, utilice Set-AuthenticodeSignature para agregar una firma de Authenticode a un script o archivo.

Comandos de PowerShell para Hacer las Cosas

Cuando se trata de productividad, PowerShell puede ayudarte a hacer las cosas con los siguientes comandos.

11., ForEach-Object

el cmdlet ForEach-Object realiza una operación contra cada elemento de un grupo especificado de objetos de entrada. Aunque muchos cmdlets funcionan con todos los objetos de una colección, necesitará ForEach-Object para aquellas situaciones en las que desee realizar otras modificaciones o aplicar un formato específico a todos los objetos de una colección.

Aquí hay un ejemplo (@MS_ITPro)., Si desea mostrar una lista de nombres de proceso y desea que esos nombres se representen en Cian, puede intentar lo siguiente:

Get-Process | Write-Host $_.name -foregroundcolor cyan

pero lo anterior producirá el siguiente error:

At line:1 char:25+ get-process | write-host <<<< $_.name -foregroundcolor cyan Write-Host : The input objectcannot be bound to any parameters for the command either because the command does nottake pipeline input or the input and its properties do not match any of the parametersthat take pipeline input.

porque el cmdlet Write-Host no entiende lo que desea hacer con los datos que se envían a través de la canalización.

por lo tanto, el uso del cmdlet ForEach-Object resuelve este problema:

Get-Process | ForEach-Object {Write-Host $_.name -foregroundcolor cyan}

consulte este tutorial para obtener más información sobre ForEach-Object y trabajar con bucles (@tomsitpro).

12., Clear-Content

Si desea eliminar el contenido de un elemento pero conservarlo, utilizará el cmdlet Clear-Content:

Clear-Content C:\Temp\TestFile.txt

También puede utilizar este comando para borrar el contenido de todos los archivos con una extensión de archivo especificada. El siguiente código borraría el contenido de todos los archivos con el .extensión txt, por ejemplo:

Clear-Content -path * -filter *.TXT –force

también puede utilizar caracteres comodín. Además, puede borrar el contenido de cualquier tipo de archivo, desde .archivos txt a .doc, .xls, y más.

echa un vistazo a este post para más detalles.

13., Checkpoint-Computer

si realiza cambios importantes o ejecuta un experimento arriesgado, puede establecer un punto de restauración en el equipo con el cmdlet Checkpoint-Computer.

tenga en cuenta que solo puede crear un punto de restauración con este cmdlet una vez cada 24 horas. Si vuelve a ejecutar el comando, mantendrá el punto de restauración anterior:

consulte este artículo de MCP Mag para obtener más información (@MCPmag).

Compare-Object

a menudo es útil poder comparar dos objetos directamente., Puede hacer esto usando Compare-Object, que genera un informe sobre las diferencias entre dos conjuntos como (@Marcam923):

15. ConvertFrom-StringData

Use ConvertFrom-StringData para convertir una cadena que contenga uno o más pares de valores en una tabla hash. Este es un ejemplo de cómo se ve el comando:

$settings = $TextData | ConvertFrom-StringData

Este comando es útil en una variedad de situaciones, como cuando desea guardar la configuración de un script de PowerShell para permitir que otros editen la configuración sin trabajar directamente en el código del script.,

ConvertTo-Secureling

convierta una cadena estándar cifrada en una cadena segura o texto sin formato en una cadena segura utilizando ConvertTo-Secureling. Este cmdlet se usa junto con ConvertFrom-Secustring y Read-Host (@AdmArsenal):

ConvertTo-XML

Use el cmdlet ConvertTo-XML para crear una representación basada en XML de un objeto. Esto también se llama serialización, y es un proceso útil para guardar datos para su posterior reutilización. Tenga en cuenta que es importante que su expresión escriba objetos en la canalización., Cualquier cosa que use Write-Host no escribirá en la canalización y, por lo tanto, no puede ser serializada. Este es un ejemplo de ConvertTo-XML en action (@PetriFeed):

Get-Service wuauserv -ComputerName chi-dc04,chi-p50,chi-core01 |Export-Clixml -Path c:\work\wu.xml

el cmdlet específico utilizado en el ejemplo anterior, Export-Clixml, es adecuado para la mayoría de los propósitos. Convierte el resultado de una expresión de PowerShell a XML y lo guarda en un archivo.

18. New-AppLockerPolicy

New-AppLockerPolicy crea una nueva política de AppLocker a partir de una lista de información de archivo y otras opciones de creación de reglas., En total, hay cinco cmdlets que permiten interactuar con AppLocker, incluido (@RootUsers_):

  • Get-AppLockerFileInformation: obtiene la información necesaria para crear reglas de AppLocker a partir de una lista de archivos o del registro de eventos.
  • Get-AppLockerPolicy: se utiliza para recuperar una directiva de AppLocker local, efectiva o de dominio.
  • New-AppLockerPolicy: como se mencionó, este cmdlet se utiliza para crear nuevas directivas de AppLocker.
  • Set-AppLockerPolicy: establece la directiva AppLocker para un objeto de directiva de grupo especificado.,
  • Test-AppLockerPolicy: se usa para determinar si un usuario o grupo de usuarios podrá realizar ciertas acciones basadas en la política.

19. New-ItemProperty

New-ItemProperty crea una nueva propiedad para un elemento y establece su valor. Puede usarlo para crear y cambiar valores y datos del registro (propiedades de una clave de registro), por ejemplo.

echa un vistazo a este tutorial de mnaoumov.NET para algunas soluciones útiles usando este cmdlet (@mnaoumov).

20. New-Object

para crear una instancia de Microsoft .,NET Framework o el objeto Component Object Model (COM), utilice el cmdlet New-Object.

Este es un ejemplo que crea un nuevo objeto usando New-Object, lo almacena en una variable, luego lo canaliza a Add-Member, que luego agregará propiedades o métodos especificados en el objeto creado (@gngrninja):

21. New-WebServiceProxy

New-WebServiceProxy crea un objeto proxy de servicio web que le permite usar y administrar el servicio web desde PowerShell., Este cmdlet es algo hermoso para los desarrolladores: hace innecesario escribir mucho código complejo para intentar lograr algo en PowerShell cuando simplemente puede llamar a otro servicio que ya lo hace posible.

Este es un ejemplo:

Ahora, puede ejecutar lo siguiente para ver una lista de todos los métodos disponibles:

$proxy | gm -memberType Method

22. New-WSManInstance

Al igual que New-WebServiceProxy, New-WSManInstance crea una nueva instancia de un recurso de administración.,

echa un vistazo a este tutorial para un ejemplo completo paso a paso de cómo obtener la información que necesitas para ejecutar este script con éxito (@jonathanmedd).

23., New-WSManSessionOption

New-wsmansessionoption crea una nueva tabla hash de sesión de administración que se usa como parámetros de entrada para otros cmdlets de WS-Management, incluyendo:

  • Get-WSManInstance
  • Set-WSManInstance
  • Invoke-WSManAction
  • Connect-WSMan

Aquí está la sintaxis (@SAPIENTech):

Select-Object

el cmdlet Select-Object selecciona las propiedades especificadas de un único objeto o grupo de objetos. Además, puede seleccionar objetos únicos de una matriz o un número especificado de objetos desde el principio o el final de una matriz.,

PS > Get-Process | Sort-Object name -Descending | Select-Object -Index 0,1,2,3,4

Este tutorial proporciona más información sobre las diversas formas en que puede usar Select-Object (@infosectactico).

hay otros cmdlets con funciones similares, como:

  • Select-String: encuentra texto en cadenas o archivos.
  • Select-XML: busca texto en una cadena o documento XML.

25. Set-Alias

Set-Alias es un gran comando para mejorar la productividad. Permite establecer un alias para un cmdlet u otro elemento de comando en la sesión actual (similar a un método abreviado de teclado) para que pueda trabajar más rápido.,

el siguiente ejemplo establece el Bloc de notas en np en la sesión actual mediante Set-Alias (@powershellatoms):

New-Alias np c:\windows\system32\notepad.exe

tenga en cuenta que también puede personalizar su perfil de PowerShell con los alias que utiliza con más frecuencia (@howtogeek).

26. Set-StrictMode

Set-StrictMode establece y aplica reglas de codificación en scripts, bloques de scripts y expresiones. Es un comando útil para hacer cumplir la calidad del código y evitar que te aflojes y escribas código descuidado cuando son las 3: 00 a.m. y no has dormido en dos días (@adbertram).,

para usarlo, hay dos parámetros a considerar: -Off y-Version, Y-Version tiene tres valores posibles:

  • Versión 1.0: evita el uso de variables que no se han inicializado (como la opción explícita en VBScript)
  • Versión 2.0: evita el uso de variables que no se han inicializado y también evita la llamada de propiedades inexistentes en objetos, evita que llame a una función como un método y prohíbe la creación de variables sin un nombre.,
  • Version Latest: esta opción selecciona la última versión StrictMode disponible y la utiliza. Esta es una buena opción porque significa que la última versión StrictMode se usa independientemente de la versión de PowerShell que esté utilizando.

Wait-Job

Wait-Job suprime el símbolo del sistema hasta que se completen los trabajos en segundo plano que se ejecutan en la sesión actual. Sin embargo, Wait-Job no muestra la salida de jobs, pero se puede usar junto con Receive-Job. El multiproceso es posible en PowerShell gracias a-Jobs.

Write-Progress

¿a quién no le gusta una barra de estado?, Supervise el progreso mediante Write-Progress, que muestra una barra de progreso dentro de una ventana de comandos de Windows PowerShell.

Este es un ejemplo que ofrece una barra de progreso completa y cadenas de tiempo de ejecución (@credera):

Cmdlets para la supervisión del rendimiento, las pruebas y la depuración

también hay una variedad de cmdlets útiles para los desarrolladores para la solución de problemas, las pruebas, la depuración y la supervisión. Aquí están algunos que usted necesita saber.

Debug-Process

¡a los desarrolladores les encanta depurar! Bueno, nos gusta aún más cuando no hay errores que eliminar, pero lamentablemente no siempre es así., Con PowerShell, puede depurar un proceso mediante el cmdlet Debug-Process.

También puede depurar trabajos usando Debug-Job (@MS_ITPro). Además, puede establecer puntos de interrupción o usar el cmdlet Wait-Debugger:

30. Disable-PSBreakpoint

Si ha establecido puntos de interrupción a la vez pero desea eliminarlos, hágalo fácilmente utilizando Disable-PSBreakpoint, que deshabilita los puntos de interrupción en la consola actual. Esta es la sintaxis (@ActiveXperts):

Disable-PSBreakpoint Disable-PSBreakpoint 

alternativamente, si desea habilitar puntos de interrupción en la consola actual, use Enable-PSBreakpoint.,

Get-Counter

Get-Counter obtiene datos de contador de rendimiento en tiempo real de la instrumentación de supervisión de rendimiento en el sistema operativo Windows. Se utiliza para obtener datos de rendimiento de equipos locales o remotos a intervalos de muestra específicos que especifique.

en este ejemplo, obtendrá un contador establecido con un intervalo de muestra para una muestra máxima especificada (@MS_ITPro):

PS C:\> Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3

en el ejemplo siguiente, este comando obtiene datos de contador específicos de varios equipos:

32., Export-Counter

Export-Counter exports PerformanceCounterSampleSet objects as counter log files. Dos propiedades están disponibles:

  • Contramuestras: Obtiene y establece los datos de los contadores.
  • Timestamp: obtiene y establece la fecha y hora en que se recopilaron los datos de muestra.,

Y varios métodos, todos los cuales se heredan de Object:

  • Equals(Object)
  • Finalize()
  • GetHashCode()
  • GetType()
  • MemberwiseClone()
  • ToString()

Por ejemplo, el siguiente comando utiliza Get-Contador para recoger el Tiempo de Procesador de datos y las exportaciones a una .archivo blg usando Export-Counter (@TechGenix):

Get-Counter "\Processor(*)\% Processor Time" | Export-Counter -Path C:\Temp\PerfData.blg

33. Test-Path

Test-Path le permite verificar si existen elementos en una ruta de acceso especificada., Por ejemplo, si planea usar otro comando en un archivo especificado, es posible que deba verificar que el archivo existe para evitar que se produzca un error.

Test-Path C:\Scripts\Archive

Si la carpeta existe, devolverá True; si no, devuelve False.

también puede funcionar con las rutas utilizadas por otros proveedores de PowerShell. Por ejemplo, si necesita saber si su computadora tiene una variable de entorno llamada username, puede usar lo siguiente:

Test-Path Env:\username

Test-Path funciona con variables, certificados, alias y funciones., Echa un vistazo a este post de TechNet para más detalles (@MS_ITPro).

34. Get-WinEvent

mira los registros de eventos de Windows usando Get-WinEvent. Para obtener una lista de registros disponibles, use:

Get-WinEvent -ListLog *

luego, para revisar los detalles de un registro específico, reemplace * por el nombre (canalice la salida a format-list para ver todos los detalles):

Get-WinEvent -ListLog $logname | fl *

También puede ver todos los eventos en un registro utilizando:

Get-WinEvent -LogName System

echa un vistazo a este tutorial para más detalles (@rakheshster).,

Invoke-TroubleshootingPack

Los paquetes de solución de problemas son colecciones de scripts y ensamblados de PowerShell que le ayudan a solucionar, diagnosticar y reparar problemas comunes del sistema (@ITNinjaSite). Buscar paquetes de solución de problemas en:

C:\Windows\Diagnostics\System

puede ejecutar este script para obtener una lista de todos los paquetes de solución de problemas disponibles en el sistema actual (@TechGenix):

Get-ChildItem C:\Windows\Diagnostic\System

luego, desde una ventana elevada de PowerShell, ejecute un paquete de solución de problemas con este comando:

Invoke-TroubleshootingPack (Get-TroubleshootingPack C:\Windows\diagnostics\system\networking)

36., Measure-Command

Si desea cronometrar las operaciones en PowerShell, Measure-Command es un cmdlet que debe conocer. Mide cuánto tiempo debe ejecutarse un script o scriptblock. Este es un ejemplo (@ToddKlindt):

Measure-Command { Mount-SPContentDatabase –Name wss_content_portal –WebApplication http://portal.contoso.com }

la salida es un objeto TimeSpan, por lo que contiene propiedades como Hora, Minuto, Segundo, etc. y es fácil adaptar la salida a tus preferencias.

Measure-Object

es posible que también desee saber qué tan grande es un objeto dado., Use Measure-Object para calcular las propiedades numéricas de cualquier objeto, incluidos caracteres, palabras y líneas en un objeto de cadena, como archivos de texto.,

simplemente especifique el nombre y el tipo de medición a realizar, junto con parámetros como (@WindowsITPro):

  • -Sum: agrega valores
  • -Average: calcula el valor promedio
  • -Minimum: encuentra el valor mínimo
  • -Maximum: encuentra el valor máximo

el siguiente comando suma los valores de propiedad VirtualMemorySize para todos los objetos de proceso:

Get-Process | measure VirtualMemorySize -Sum

new-event

new-event se utiliza para crear un nuevo evento., Un cmdlet relacionado es New-EventLog, que crea un nuevo registro de eventos, así como un nuevo origen de eventos en un equipo local o remoto. Si tiene un motor de automatización compatible con PowerShell, es una buena práctica configurar un registro de eventos (creando un tipo de Registro de eventos personalizado) que registre todos los mensajes enviados por PowerShell. Este es un ejemplo en el que puede implementar el registro personalizado en el Visor de eventos.,

comience creando un nuevo LogName de Registro de eventos (@BundaloVladimir):

New-EventLog -LogName Troubleshooting_Log -Source FalloutApp

luego, para enviar mensajes a su nuevo registro de eventos, ejecute lo siguiente utilizando el cmdlet Write-Log:

Write-EventLog -log Troubleshooting_Log -source FalloutApp -EntryType Information -eventID 10 -Message "FalloutApp has been successfully installed"

Receive-Job

Si necesita obtener los resultados en los trabajos en segundo plano de Windows PowerShell de la sesión actual, utilice Receive-Job. Esto generalmente se usa después de usar Start-Job para comenzar un trabajo cuando necesita ver los resultados específicos.,

Receive-Job -Name HighMemProcess

echa un vistazo a este útil tutorial sobre el uso de Receive-Job y qué hacer si aparentemente no hay resultados (@proxb).

40. Register-Enginevent

Este cmdlet se utiliza para suscribirse a los eventos generados por el motor de Windows PowerShell y el cmdlet New-Event. Por ejemplo, el siguiente comando se suscribe a un evento cuando la sesión actual de PowerShell sale y guarda información (como la fecha y la hora) en un archivo de registro (@jonathanmedd):

Register-EngineEvent PowerShell.Exiting-Action {"PowerShell exited at " + (Get-Date) | Out-File c:\log.txt -Append}

41., Register-ObjectEvent

Register-ObjectEvent es similar a Register-EngineEvent, pero en lugar de suscribirse a eventos generados por PowerShell engine y New-Event, se suscribe a los eventos generados por un objeto de Microsoft.NET Framework.

Este es un ejemplo (@NetworkWorld):

Hay otros cmdlets de registro que pueden resultarle útiles, entre ellos:

  • Register – PSSessionConfiguration: crea y registra una nueva configuración de sesión.
  • Register-WmiEvent: este cmdlet se suscribe a un evento WMI.

42., Remove-Event

Cuando desee quitar un evento, utilice el cmdlet Remove-Event. Si necesita eliminar un registro de eventos completo, debe usar Remove-EventLog, que elimina un registro de eventos o anula el registro de un origen de eventos.

alternativamente, Unregister-Event cancela una suscripción de evento pero no elimina un evento de la cola de eventos (@SS64).

43. Set-PSDebug

Este cmdlet activa y desactiva las funciones de depuración de scripts. También establece el nivel de seguimiento y alterna StrictMode.,

al usar Set-PSDebug en la parte superior del archivo de script justo después de la instrucción param () (si la hay), puede evitar errores con scripts sobre los que PowerShell no proporciona información adecuada para solucionar problemas. Este es un ejemplo (@r_keith_hill):

44. Start-Sleep

Si necesita suspender la actividad en un script o sesión, utilice Start-Sleep, que detiene la actividad durante un período de tiempo especificado.

Start-Sleep -Seconds xxxStart-Sleep -Milliseconds xxx

Si necesita pausar uno o más servicios en ejecución, debe usar Suspend-Service.

45., Tee-Object

Si está analizando el rendimiento o la calidad del código, es útil poder ver la salida de un comando. Tee-Object almacena la salida del comando en un archivo o variable y también la muestra en la consola si es la última variable de la canalización. Si no es la última variable de la canalización, Tee-Object la envía por la canalización.

Aquí está la sintaxis:

46. Test-AppLockerPolicy

Test-AppLockerPolicy evalúa si se permite que los archivos de entrada se ejecuten para un usuario específico en función de la directiva AppLocker especificada.,

Test-AppLockerPolicy -Path Test-AppLockerPolicy -Path 

Este tutorial ofrece más detalles sobre los parámetros disponibles y ejemplos de Test-AppLockerPolicy en acción (@powershellhelp).

Test-Computersecurecannel

Este cmdlet Prueba y repara la conexión entre un equipo local y su dominio. Sin este comando, la solución habitual era anteriormente eliminar un equipo de su dominio y luego volver a conectarlo para restablecer la relación. Test-Computersecurecannel permite restablecer la conexión en menos tiempo (@WindowsITPro).,

Cuando inicie sesión como administrador local, simplemente ejecute lo siguiente:

Test-ComputerSecureChannel –credential WINDOWSITPRO\Administrator –Repair

puede usar Test-Connection para enviar paquetes de solicitud de eco (pings) del Protocolo de mensajes de control de Internet (ICMP) a uno o más equipos.

Test-Path

Use Test-Path para determinar si existen todos los elementos de una ruta. Esencialmente, le ayuda a manejar los errores antes de que ocurran. En su forma más simple, Devuelve VERDADERO o falso (@MCPmag):

PS C:\> test-path c:\TruePS C:\> test-path z:\fooFalse

49. Trace-Command

Trace-Command configura e inicia el seguimiento de un comando o expresión especificada., Para usarlo, también necesitará usar Get-TraceSource para buscar nombres particulares usando caracteres comodín:

PS&gt; Get-TraceSource -Name *param*

puede filtrar la salida para que coincida con la descripción con el patrón que busca. Una vez que haya identificado el posible nombre de rastreo, usará Trace-Command para obtener las respuestas que necesita. Aquí hay un ejemplo:

echa un vistazo a este post para obtener más detalles sobre cómo jugar a detective con Trace-Command (@PowerShellMag).

50. Write-Debug

Write-Debug escribe un mensaje de depuración en la consola., Al escribir esto en una función o script, no hace nada de forma predeterminada, los mensajes esencialmente laico en esperar hasta que modificar su $DebugPreference o activar el debug cuando se llama a una función o script. Cuando $DebugPreference se establece en ‘inquire’ o se activa el interruptor-debug, el mensaje crea un punto de interrupción, lo que le brinda una manera fácil de entrar en el modo de depuración.

tome este ejemplo (@rjasonmorgan):

el ejemplo anterior produce lo siguiente cuando se ejecuta con-debug:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *