Windows Management Framework 5.0 Preview February 2015 incluye la adición de un nuevo módulo de Windows PowerShell llamado PSScriptAnalyzer.
Se trata de un corrector de código estático para los módulos de Windows PowerShell y scripts y se instala en $env:ProgramFiles/WindowsPowerShell/Modules.
PSScriptAnalyzer comprueba la calidad del código de Windows PowerShell mediante la ejecución de un conjunto de reglas basadas en las mejores prácticas de PowerShell identificadas por el equipo de PowerShell y la comunidad. PSScriptAnalyzer genera resultados del diagnóstico (errores y advertencias) para informar a los clientes sobre los defectos de código potenciales y sugiere posibles soluciones para mejoras.
Instalando el PSScriptAnalyzer
Para aprovechar esta funcionalidad, primero debemos instalarla.
En el Module Browser de nuestro Windows PowerShell ISE podemos localizar el PSScriptAnalyzer aprovechando el uso del buscador
O podemos ejecutar el comando
- Get-Command -module PSScriptAnalyzer
Con el cual dispondremos de la versión 1.0 del PSScriptAnalyzer.
Sin embargo, como podremos ver en el Module Browser de nuestro Windows PowerShell ISE, ya hay disponible una nueva versión PSSCriptAnalyzer 1.0.1
Así que será mejor no ejecutar el comando, ya que si lo hacemos, al intentar instalar la versión más reciente del PSSCriptAnalyzer 1.0.1 obtendremos el siguiente error
Si hemos ido muy de prisa, tendremos que desinstalar la versión 1.0.0 para poder realizar la instalación de la nueva versión.
En caso de que no podamos hacer la desinstalación, podremos cerrar el Windows PowerShell ISE, abrir un Explorador de Windows, ir a la ruta: C:\Program Files (x86)\WindowsPowerShell\Modules
y eliminar la carpeta PSScriptAnalyzer
Luego podremos abrir nuevamente el Windows PowerShell ISE
Y ejecutar el comando:
- Install-Module -Name ‘PSScriptAnalyzer’ -Force -Scope AllUsers -Verbose -RequiredVersion 1.0.1
Observaremos como se instala la versión 1.0.1 del PSScriptAnalyzer
Cerramos entonces el Windows PowerShell ISE y al volver a ejecutarlo podremos ver en nuestra colección de módulos instalados que ya contamos con el PSScriptAnalyzer 1.0.1
Conociendo el PSScriptAnalyzer
El PSScriptAnalyzer ofrece dos comandos:
- Get-ScriptAnalyzerRule
- Invoke-ScriptAnalyzer
Para conocer el detalle de estos, podemos ejecutar los comandos
- get-help Get-ScriptAnalyzerRule
- get-help Invoke-ScriptAnalyzer
Sin embargo, es posible que observemos poca información.
Si es el caso, recomendamos ejecutar el comando
- Update-Help
Para obtener el mejor detalle de los comandos
Utilizando el PSScriptAnalyzer
Ver reglas instaladas
Podemos ver las reglas instaladas ejecutando el comando
- Get-ScriptAnalyzerRule
Ejecutar análisis de un script
Ejecutando PSScriptAnalyzer por consola
Para ejecutar el análisis de un script, nos colocamos en el directorio que contiene el script de PowerShell que deseamos analizar (en nuestro caso HelloWorld.ps1)
Y ejecutamos el comando
- Invoke-ScriptAnalyzer .\HelloWorld.ps1
Podemos enviar el resultado del análisis a un archivo, por ejemplo
- Invoke-ScriptAnalyzer .\HelloWorld.ps1 > HelloWorld.log
Ejecutando PSScriptAnalyzer por el panel
También podemos abrir el script en el editor del Windows PowerShell ISE y en la pestaña ScriptAnalyzer pulsar el botón [Scan Script]
Aunque, si observamos con cuidado, notaremos que las reglas ejecutadas por esta vía solo serán:
- Invoke-Expression use should be carefully considered
- Cmdlet alias use should be avoided
- Empty catch blocks should be avoided
- Positional arguments should be avoided
- Advanced Functions names should follow standard verb-noun naming convention
Referencias:
- Microsoft Script Analyzer
http://scriptanalyzer.codeplex.com/ - PowerShell Script Analyzer: Static Code analysis for Windows PowerShell scripts & modules http://blogs.msdn.com/b/powershell/archive/2015/02/24/powershell-script-analyzer-static-code-analysis-for-windows-powershell-scripts-amp-modules.aspx
- Feedback and Contact:
https://connect.microsoft.com/PowerShell/Feedback