MARKETING NOTICIAS

Adopte las mejores prácticas para los scripts de PowerShell

Imagen de una pantalla de computadora llena de código.
¡Escriba mejores scripts de PowerShell!

microsoft creado Modo estricto para PowerShell para hacer cumplir el uso de las mejores prácticas de codificación. Es posible componer guiones sin modo estrictopero ofrece ciertas ventajas cuando se utiliza.

En este artículo, exploro la ventajas y desventajas de usar el modo estricto. Sigue leyendo para saber más.

Trabajar con el modo estricto

El modo estricto es una herramienta que requiere que declares variables antes de usarlo en un script de PowerShell.

Por lo general, si usa una variable sin declararla primero, PowerShell tratará esa variable como nula o como si tuviera un valor de 0, según el tipo de variable. Cuando habilita el modo estricto, PowerShell no establecerá automáticamente las variables en nuloy eso causará un error si intenta usar una variable no declarada.

Si observa la figura a continuación, puede ver que no habilité el Modo estricto, por lo que estaba capaz de llamar a una variable previamente no declarada. PowerShell no devolvió ningún dato porque la variable era nula, pero tampoco produjo ningún error.

Las variables no declaradas pueden confundir a las personas que trabajan en el script. No aclaran el comportamiento previsto. Tampoco puede saber si estas variables existen o no. El modo estricto lo ayuda a eliminar/reducir las posibilidades de confusión si muchas personas están trabajando en su guión.

Captura de pantalla de una sesión de administración de Windows PowerShell.
El modo estricto está deshabilitado, por lo que PowerShell no produjo ningún error.

Cuando habilita el modo estricto, debe especificar una versión. La versión determina esencialmente qué reglas y prácticas recomendadas aplicará PowerShell. Este modo tiene actualmente tres versiones. Veámoslos, empezando por el primero, el menos restrictivo:

Artículo Recomendado:  El 74% de los consumidores prefieren enviar mensajes de texto a empresas si una persona real les responde

Versión 1.0

Como probablemente ya habrás adivinado, la Versión 1.0 fuerza a que se declaren las variables antes de poder usarlos.

Publicaciones relacionadas

Al observar la siguiente figura, puede ver que habilité el modo estricto con el cmdlet Set-StrictMode y configuré el número de versión en 1.0. Si luego intento generar el contenido de la variable $B no declarada, recibo un error.

Captura de pantalla de una sesión de PowerShell con el modo estricto v.1.0 habilitado.
El modo más estricto no le permite usar variables no declaradas.

Versión 2.0

El modo estricto versión 2.0 también impone el uso de la declaración de variables. Además, PowerShell también establece algunas reglas sobre las llamadas a funciones.

Cuando llama a una función que espera múltiples parámetros, Microsoft espera que proporcionar el nombre de la función y las variables desea pasar a la función. Si, por ejemplo, intentara pasar las variables $A y $B a una función llamada Run-MyFunction, entonces la forma «correcta» de hacerlo sería usar este comando:

Ejecutar-MiFunción $A $B

Aun así, este no es el único formato que acepta PowerShell. Si apago el Modo estricto, podría hacer la misma llamada de función usando este comando:

Ejecutar-MiFunción ($A, $B)

Sin embargo, la versión 2.0 no permitirá paréntesis ni comas en las llamadas a funciones.

Versión 3.0

La versión 3.0 agrega requisitos adicionales. Es decir, usted no puedo llamar a un fuera de límites formación posición. Tome este comando, por ejemplo:

[email protected](1,2,3,4,5)

Este comando crea una matriz de cinco posiciones llamada $A. El uno está en la posición cero de la matriz, y así sucesivamente. Dos toma la posición de uno, tres toma la posición de dos, cuatro toma la de tres y cinco toma la de cuatro.

Así que ahora, supongamos que quiero verificar la posición de una matriz para ver si es igual al contenido de $B. Por el bien de la demostración, estableceré $B=5.

Si tuviera que escribir $B -eq $A[1], PowerShell evaluaría la expresión de la forma habitual. Luego, devolverá un valor de False porque $B=5 y $A[1]=2.

Del mismo modo, si tuviera que escribir $B -eq $A[4]PowerShell devolvería un resultado de True porque ambos valores son iguales a 5. Si escribo $B -eq $A[5], PowerShell me daría un mensaje sobre un error. Me dirá que la expresión está fuera de los límites. Echa un vistazo a la figura de abajo, por ejemplo.

Captura de pantalla de una sesión de Windows PowerShell con el modo estricto V.0.3 habilitado.
Mi llamada estaba fuera de los límites de la matriz, por lo que PowerShell devolvió un error.

Probablemente te estés preguntando: ¿Es eso realmente necesario?

¿Realmente necesita usar el modo estricto?

¿Necesita usar el modo estricto en sus scripts de PowerShell? Depende de tu respuesta a estas dos preguntas:

  1. ¿Qué tan probable es que tendrás que modificar el código ¿en el futuro?
  2. ¿Cuáles son las probabilidades de otra persona tiene que modificar el código?

Si está tratando de crear un script único con el que nadie más se meta, probablemente esté bien sin el modo estricto. Si, por el contrario, usted u otra persona va a realizar cambios en el guión en el futuro, entonces probablemente tenga sentido adherirse a las buenas prácticas de codificación.

Consejos profesionales

  • Use el cmdlet Set-StrictMode para habilitar este modo en su sesión de PowerShell.
  • Busque el parámetro Versión para seleccionar qué reglas aplicar.

La línea de fondo

Cuando se trata de desarrollar scripts (o cualquier código), los autores de códigos tienen una lista de mejores prácticas que deben seguir. En muchos casos, nada te obliga a utilizar estas pautas. Usted está libre de codificar como veas conveniente en la mayor parte.

En este artículo, expliqué cómo podría usar el modo estricto para forzar la adopción de mejores prácticas de codificación dentro de PowerShell.

Te mostré cómo, en términos prácticos, activar el modo estricto te obliga a declarar tus variables por adelantado y cómo las versiones 2.0 y 3.0 también agregan funcionalidad adicional. Si bien el requisito de declarar variables antes de su uso puede parecer insignificante, puede hacer un script más fácil de depurar.

Tiendo a pensar en Modo estricto como punto de partida en lugar de un punto final porque generalmente significa que Los desarrolladores de PowerShell adoptan algunos adicionales prácticas de codificación.

¿Tienes más preguntas sobre el modo estricto? Leer el Preguntas más frecuentes y Recursos ¡abajo!

Preguntas más frecuentes

¿Puedo desactivar el modo estricto una vez que lo enciendo?

Al activar el modo estricto, debe usar el cmdlet Set-StrictMode con el parámetro -Version y el número de versión deseado. Si desea desactivar el modo estricto, use el cmdlet Set-StrictMode, pero reemplace el parámetro -Version con -Off (no necesita un número de versión).

¿Qué ámbitos se ven afectados cuando activa el modo estricto?

Cuando habilita el modo estricto, solo se aplica al ámbito actual y a los ámbitos secundarios. Además, el modo estricto solo se ejecuta durante las sesiones actuales. Si abre una ventana diferente de PowerShell, el modo estricto no funcionará a menos que lo active.

¿Cuáles son algunas de las mejores prácticas de PowerShell?

Las secuencias de comandos de PowerShell tienen muchas prácticas recomendadas. En pocas palabras, haga todo lo posible para que el código sea fácil de leer. Esto significa usar variables significativas y nombres de funciones y hacer uso de comentarios. Habilitar el modo estricto en algunas sesiones de PowerShell también puede ayudarlo a cumplir con estas pautas. Te obligará a usar solo variables declaradas.

¿Puede el modo estricto hacer que sea más difícil desarrollar scripts de PowerShell?

Aquellos que son nuevos en PowerShell pueden encontrar que el modo estricto requiere más esfuerzo, especialmente al resolver errores. Una vez que adquiere un poco de experiencia, se vuelve mucho más fácil reconocer un error causado por una violación del modo estricto.

¿El modo estricto tendrá alguna vez una versión 4.0?

Solo Microsoft lo sabe con certeza, pero parece probable que el modo estricto se extienda en el futuro. Microsoft crea nuevas versiones de PowerShell regularmente, por lo que Microsoft puede actualizar el modo estricto a medida que evoluciona PowerShell.

Recursos

TechGenix: Seguimiento de su camino a través de secuencias de comandos de PowerShell

Aprenda a rastrear su camino a través de un script complejo de PowerShell aquí.

TechGenix: PowerShell Wet vs. Dry Scripting

Obtenga más información sobre las técnicas de secuencias de comandos húmedas y secas de PowerShell aquí.

TechGenix: recursos de secuencias de comandos de PowerShell

Descubra cómo encontrar más recursos de secuencias de comandos en la Galería de PowerShell aquí.

Microsoft: cmdlet Set-StrictMode

Encuentre la documentación para el cmdlet Set-StrictMode aquí.

Microsoft: mejores prácticas de secuencias de comandos

Obtenga más información sobre el uso del modo estricto para aplicar mejores prácticas de secuencias de comandos aquí.

Microsoft: averiguar si el modo estricto está activado

Aprenda a averiguar mediante programación si el modo estricto está habilitado aquí.

Artículo Recomendado:  Atlassian está sufriendo un montón de terribles problemas de seguridad

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba