Maneje los errores de PowerShell como un jefe con estos consejos
La primera vez que inicie los scripts en PowerShell, puede ser tentador empaquetar una serie de comandos Cmdlets de Powershell que mejorarán sus habilidades de administración de Windows Cmdlets de Powershell que mejorarán sus habilidades de administración de Windows Powershell es una herramienta de línea de comandos de partes iguales y lenguaje de scripts. Le brinda la capacidad de automatizar su computadora a través de los mismos comandos que usa para administrarla. Lee mas . Sin embargo, si su secuencia de comandos 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 consta de cuatro partes: el parámetro Acción de error, los bloques Probar / Atrapar, el parámetro Variable de error y el registro.
Error de PowerShell en el manejo de la manera fácil
La primera vez que quiere manejar los errores es cuando algo detiene su secuencia de comandos en sus pistas. Si la falla no afecta sus pasos posteriores, podría ser mejor simplemente omitirla y seguir adelante..
Por otro lado, no siempre está claro cuando un cmdlet dado produce un error de terminación. Algunos cmdlets devuelven un error pero no detienen su script. Luego, puede terminar esperando que su script se complete mientras da salida a un disparate..
Aquí es donde el -ErrorAction el parámetro entra. Se usa para forzar un cmdlet para manejar el error de la forma 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 potente shell Bash. PowerShell es un terminal igualmente potente para Windows. Leer más, se 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 búsquedas múltiples, cambie el parámetro de Detener a SilencioContinuar, por lo que la secuencia de comandos continúa si falla una búsqueda. Si quieres ver cuál es el error, puedes 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 encuentra un obstáculo, le da opciones: Sí, Sí para todos, Detener comando, Suspender o Ayuda.
Esta opción es un poco más flexible pero significa que los errores causan que su script espere su entrada. Puede que no sea algo que quieras cuando estás ejecutando un proceso largo durante la noche..
Error al manejar la forma de programación
los ErrorAction 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. Va a ejecutar su código normal en esta sección. Todavía vas a utilizar el -ErrorAction parámetro, pero solo se puede configurar como Detener. Esta bandera asegura que su cmdlet active el Captura-incluso si no tiene un error de terminación.
Pruebe Get-Process "Cortana" -ErrorAction Stop
Try también puede evitar que se ejecuten otros cmdlets si falla la búsqueda. En este caso, si estuviera enviando el Proceso de obtención resultados a Proceso de parada, una búsqueda fallida evita que el segundo cmdlet se ejecute.
Entonces, ahora que ha creado un bloque de prueba de cmdlets, ¿qué desea hacer cuando falla? Utilizando la Captura La mitad, vas a definir esto..
Captura 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 ofrece un nuevo PowerShell, esencialmente el símbolo del sistema de esteroides. Este artículo le muestra cómo hacer lo imposible con PowerShell. ¡Y es más fácil de lo que piensas! Lee mas Captura Será útil para más que dar un fallo en un lenguaje sencillo. (En el ejemplo anterior, la falla se fuerza al usar el nombre de la aplicación y no el nombre del proceso). Así que asegúrate de jugar con el Tratar bloque para crear una búsqueda / acción que necesita. Puedes usar el Captura Bloquee su script para que le envíe 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, puedes usar el Finalmente bloquear. Agregue esto después de probar y capturar y registrar 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 scripts por lotes 5 razones por las que debe usar PowerShell en lugar de por lotes PowerShell es lo que obtendría si cruzó el símbolo del sistema con secuencias de comandos por lotes, introdujo algunas características adicionales y lo elevó varias muescas. Aquí hay varias razones por las que debe intentarlo. Lee mas . Sin embargo, ¿cómo se puede investigar un script fallido? Con el -Errorvariable parametrice los errores de su cmdlet escribiendo en una variable personalizada. Esta es una alternativa al sistema. $ Error Variable, que contiene todos los errores de la sesión actual..
Tu cmdlet necesita ser un poco más largo. Primero, define una variable, algo como $ SearchError Lo haré por el ejemplo. Cuando usted llama SearchError en el Errorvariable Parámetro, usted no usa el signo de dólar. A pesar de que 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 Continue -ErrorVariable SearchError
Si agrega un + delante del nombre de la variable, puede agregarla a la variable en lugar de reemplazarla por completo. Eso le da el mismo comportamiento que la variable de error global. En su lugar, puede utilizar esta salida y Trata de atraparlo para escribir la salida personalizada, y la marca de tiempo.
Para hacer que esto funcione, cree un archivo de texto justo después de configurar 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 cmdlet falla.
$ SearchLog = Nuevo elemento "~ \ SearchLog.txt" -type file -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-yy- hh_mm_ss) Los archivos no encontrados devolvieron un error: $ SearchError "
Repítalo 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 de sistemas. Hemos compilado 15 tareas, algunas simples, otras complejas, que se benefician de la magia de PowerShell. Lee más, y ahora tienes un buen registro de errores. Si desea realizar un seguimiento de las cosas que se ejecutan correctamente, puede agregar un similar Agregar contenido al final de Tratar bloquear. Este registro solo se ejecuta cuando su Tratar cmdlet tiene éxito. A continuación, puede registrar sus errores y éxitos con sellos de tiempo. El registro ahora le permite saber todo lo que ha hecho su script, el éxito o el fracaso.
El poder del codigo
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 arreglárselas sin usar el símbolo del sistema o PowerShell. Pero con Windows 10 y las nuevas funciones a la vuelta de la esquina, quizás sea hora de que aprendamos. Leer más es una forma poderosa de administrar su sistema. Puede encadenar esos mismos comandos de una manera que permita una automatización potente. El manejo adecuado de los errores es necesario para garantizar que sus scripts solo hagan lo que usted desea. Registrar todo puede ahorrarle tiempo en la resolución de problemas.
¿Hay alguna vez que el manejo de errores guardó tu tocino? ¿Hay algún script de PowerShell que pueda usar un mejor manejo de errores? ¿Cuál es tu próximo proyecto de PowerShell? Háganos saber en los comentarios..
Explorar más sobre: PowerShell.