Maneje los errores de PowerShell como un jefe con estos consejos

  • Lesley Fowler
  • 0
  • 4367
  • 772
Anuncio

Cuando comienza a crear secuencias de comandos por primera vez en PowerShell, puede ser tentador agrupar una serie de comandos Cmdlets de Powershell que mejorarán sus habilidades de administrador de Windows Cmdlets de Powershell que mejorarán sus habilidades de administrador de Windows Powershell es una herramienta de línea de comandos y lenguaje de secuencias de comandos en partes iguales. Le brinda la capacidad de automatizar su computadora a través de los mismos comandos que usa para administrarla. . Sin embargo, si su script falla, no sabrá dónde comenzar la solución de problemas. Para evitar perder tiempo tratando de adivinar por qué falló su script, debe usar el manejo de errores.

El manejo de errores de PowerShell tiene cuatro partes: el parámetro Acción de error, los bloques Try / Catch, el parámetro Variable de error y el registro.

Error de PowerShell al manejar la manera fácil

La primera vez que desea manejar errores es cuando algo detiene su secuencia de comandos. Si la falla no afecta sus pasos posteriores, podría ser mejor simplemente omitirla y seguir adelante.

Por otro lado, no siempre está claro cuándo un cmdlet determinado arroja un error de terminación. Algunos cmdlets devuelven un error pero no detienen el script. Luego, puede terminar esperando que su script se complete mientras produce tonterías.

Aquí es donde el -ErrorAction entra el parámetro. Se usa para forzar a un cmdlet a manejar el error de la manera que desee. Si está modificando un script existente Aumente su productividad con los scripts de Windows PowerShell Aumente su productividad con los scripts de Windows PowerShell ¿Qué pasaría si pudiera llevar la productividad de Linux a Windows? La mayoría de las distribuciones de Linux vienen empaquetadas con el poderoso shell Bash. PowerShell es un terminal igualmente poderoso para Windows. , lo agrega al final de la línea de cmdlet.

Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Stop

Obviamente, si está utilizando el Get-ChildItem cmdlet por sí solo, el error no hace mucho por ti. Sin embargo, si desea hacer algo con los datos, sería bueno detener el script, para que sepa que la búsqueda falló y por qué. Alternativamente, si está haciendo múltiples búsquedas, cambie el parámetro de Detener a Silenciosamente Continuar, entonces el script continúa si falla una búsqueda. Si desea ver cuál es el error, puede usar Continuar como el parámetro en su lugar.

Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction SilentlyContinue

Si prefiere tener la opción de controlar lo que sucede cada vez que se ejecuta su script, puede cambiarlo a Preguntar. Cuando su cmdlet golpea un inconveniente, le da opciones: Sí, sí para todos, detener comando, suspender o ayudar.

Esta opción es un poco más flexible, pero significa que los errores hacen que su script espere su entrada. Es posible que eso no sea algo que desee cuando ejecuta un proceso largo durante la noche.

Error al manejar la forma de programación

los ErrorAction El parámetro aborda sus errores de una manera sencilla. Sin embargo, si está buscando un poco más de control sobre los errores, PowerShell aún lo tiene cubierto. Utilizando Trata de atraparlo, ahora podemos ramificar el script cuando los cmdlets devuelven un error.

Como el nombre sugiere, Trata de atraparlo Se compone de dos partes. (Técnicamente hay un tercero, pero llegaremos a eso en un minuto). El primero es el Tratar sección. Vas a ejecutar tu código normal en esta sección. Todavía vas a usar el -ErrorAction parámetro, pero solo se puede establecer como Detener. Esta marca garantiza que su cmdlet active el Captura-incluso si no tiene un error de terminación.

Pruebe Get-Process "Cortana" -ErrorAction Stop

Intentar también puede evitar que otros cmdlets se ejecuten si la búsqueda falla. En este caso, si estaba enviando el Get-Process resultados a Detener el proceso, una búsqueda fallida evita que se ejecute el segundo cmdlet.

Entonces, ahora que ha creado un bloque de prueba de cmdlets, ¿qué desea hacer cuando falla? Utilizando la Captura mitad, vas a definir esto.

Catch Write-Host "Proceso no encontrado"

Como con el ErrorAction parámetro, cuando está haciendo algo un poco más complejo 3 Funciones inteligentes de PowerShell después de actualizar a Windows 10 3 Funciones inteligentes de PowerShell después de actualizar a Windows 10 Windows 10 nos trae un nuevo PowerShell, esencialmente el símbolo del sistema con esteroides. Este artículo le muestra cómo hacer lo que de otro modo sería imposible con PowerShell. Y es más fácil de lo que piensas.! Captura será útil para algo más que dar una falla de lenguaje simple. (En el ejemplo anterior, el error se ve forzado al usar el nombre de la aplicación y no el nombre del proceso). Asegúrese de jugar con el Tratar bloque para crear una búsqueda / acción que necesita. Puedes usar el Captura bloquee su script para enviarle un correo electrónico si falla.

La tercera parte es útil si desea que se ejecute algo independientemente de si su cmdlet tiene éxito o no. Para esto, puede usar el Finalmente bloquear. Agregue esto después de Try and Catch e inicie sesión cuando finalice una sección de su script.

La variable de error y el registro

Su script ahora controla cómo maneja los errores y cómo responde a ellos. Puede usarlo como una tarea programada, o al menos ejecutarlo cuando no esté en su escritorio 5 razones por las que debe usar PowerShell en lugar de Batch Scripting 5 razones por las que debe usar PowerShell en lugar de Batch Scripting PowerShell es lo que obtendría si cruzó el símbolo del sistema con Batch Scripting, agregó algunas características adicionales y lo pateó todo varias veces. Aquí hay varias razones por las que deberías probarlo. . Sin embargo, ¿cómo puede investigar un script fallido? Con el -Error Variable Los parámetros de los errores de su cmdlet escriben en una variable personalizada. Esta es una alternativa al sistema. $ Error variable, que contiene todos los errores de la sesión actual.

Su cmdlet necesita ser un poco más largo. Primero, defina una variable, algo como $ SearchError hará por el ejemplo. Cuando usted llama SearchError en el Error Variable parámetro, no usas el signo de dólar. Aunque esté llamando a una variable que creó, debido a la forma en que funciona el parámetro, lo llama sin el signo de dólar. Luego agregue eso al final de la línea.

Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Continuar -Error SearchErrorVariable

Si agrega un + delante del nombre de la variable, puede agregar a la variable en lugar de reemplazarla directamente. Eso le da el mismo comportamiento que la variable de error global. En su lugar, puede usar esta salida y Trata de atraparlo para escribir una salida personalizada y sellarla en el tiempo.

Para que esto funcione, cree un archivo de texto justo después de establecer la variable de error. Haz esto con el Nuevo artículo cmdlet Es posible que desee utilizar el Preguntar opción para el ErrorAction parámetro. Esto le permite agregar a un registro existente cuando el Nuevo artículo el cmdlet falla.

$ SearchLog = New-Item "~ \ SearchLog.txt" -tipo de archivo -ErrorAction Inquire

Ahora cuando construyes tu Trata de atraparlo bloque, puedes usar el Captura para iniciar sesión en un archivo de texto. Tu usas Obtener la fecha para crear la marca de tiempo. El formato puede ser complicado, así que asegúrese de copiarlo del ejemplo.

Pruebe Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Stop -ErrorVariable SearchError Catch Add-Content -Path $ SearchLog -Value "$ (Get-Date -Format dd-MM-aa- hh_mm_ss) Los archivos no encontrados devolvieron el error: $ SearchError "

Repita eso según sea necesario para todos sus cmdlets 15 Tareas avanzadas que PowerShell puede manejar en Windows 10 15 Tareas avanzadas que PowerShell puede manejar en Windows 10 PowerShell es similar al símbolo del sistema, pero mejor. Es una poderosa herramienta de administración del sistema. Hemos compilado 15 tareas, algunas simples, otras complejas, que se benefician de la magia de PowerShell. , y ahora tiene un buen registro de cualquier error. Si desea realizar un seguimiento de las cosas que se ejecutan correctamente, puede agregar una similar Agregar contenido al final de Tratar bloquear. Este registro solo se ejecuta cuando su Tratar El cmdlet tiene éxito. Luego puede registrar sus errores y éxitos con marcas de tiempo. El registro ahora le permite saber todo lo que ha hecho su script, éxito o fracaso.

El poder del código

Uso de PowerShell en la línea de comandos Símbolo del sistema frente a Windows PowerShell: ¿Cuál es la diferencia? Símbolo del sistema frente a Windows PowerShell: ¿cuál es la diferencia? Los usuarios de Windows pueden pasar sin usar el símbolo del sistema o PowerShell. Pero con Windows 10 y las nuevas características a la vuelta de la esquina, tal vez sea hora de que aprendamos. es una forma poderosa de administrar su sistema. Puede encadenar esos mismos comandos de una manera que permita una automatización poderosa. El manejo adecuado de errores es necesario para garantizar que sus scripts solo hagan lo que usted desea. Registrar todo puede ahorrarle tiempo al solucionar problemas.

¿Hay algún momento en que el manejo de errores salvó su tocino? ¿Existe una secuencia de comandos de PowerShell que pueda utilizar un mejor manejo de errores? ¿Cuál es tu próximo proyecto de PowerShell? Háganos saber en los comentarios.




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.