Usage
Command Line Usage
py-psscriptanalyzer provides PowerShell static analysis and formatting from the command line.
Basic Commands
# Analyze a single file
py-psscriptanalyzer script.ps1
# Analyze multiple files
py-psscriptanalyzer script1.ps1 module.psm1 manifest.psd1
# Analyze all PowerShell files recursively
py-psscriptanalyzer --recursive
# Format a PowerShell file
py-psscriptanalyzer --format script.ps1
Command Line Options
Option |
Description |
Example |
|---|---|---|
|
Set severity level (Error, Warning, Information) |
|
|
Find PowerShell files recursively |
|
|
Format files instead of analyzing |
|
|
Output format (text, json, sarif) |
|
|
Write output to file |
|
|
Show only security issues |
|
|
Show only style issues |
|
|
Show only performance issues |
|
|
Show only best practice issues |
|
|
Show only DSC issues |
|
|
Show only compatibility issues |
|
|
Include only specific rules |
|
|
Exclude specific rules |
|
Severity Levels
py-psscriptanalyzer uses hierarchical severity filtering:
Error: Only critical errors that must be fixedWarning: Warnings and errors (default)Information: All issues including informational messages
# Show only critical errors
py-psscriptanalyzer --severity Error script.ps1
# Show warnings and errors (default)
py-psscriptanalyzer --severity Warning script.ps1
# Show all issues
py-psscriptanalyzer --severity Information script.ps1
Environment Variables
Set the SEVERITY_LEVEL environment variable to change the default:
# Set default severity
export SEVERITY_LEVEL=Error
py-psscriptanalyzer script.ps1 # Uses Error level
# Command line always overrides environment variables
export SEVERITY_LEVEL=Error
py-psscriptanalyzer --severity Warning script.ps1 # Uses Warning level
Rule Filtering
By Category
Filter by PSScriptAnalyzer rule categories:
# Security-focused analysis
py-psscriptanalyzer --security-only script.ps1
# Style and formatting issues
py-psscriptanalyzer --style-only script.ps1
# Performance-related issues
py-psscriptanalyzer --performance-only script.ps1
# Best practice violations
py-psscriptanalyzer --best-practices-only script.ps1
# DSC-specific issues
py-psscriptanalyzer --dsc-only script.ps1
# Compatibility issues
py-psscriptanalyzer --compatibility-only script.ps1
By Specific Rules
Include or exclude specific PSScriptAnalyzer rules:
# Include only specific rules
py-psscriptanalyzer --include-rules PSAvoidUsingPlainTextForPassword,PSAvoidUsingConvertToSecureStringWithPlainText script.ps1
# Exclude specific rules
py-psscriptanalyzer --exclude-rules PSAvoidUsingWriteHost,PSAvoidUsingPositionalParameters script.ps1
# Combine with other filters
py-psscriptanalyzer --severity Error --security-only --exclude-rules PSAvoidDefaultValueSwitchParameter script.ps1
Output Formats
Text Output (Default)
Standard console output with color coding:
py-psscriptanalyzer script.ps1
JSON Output
Machine-readable JSON format:
# Output to console
py-psscriptanalyzer --output-format json script.ps1
# Save to file
py-psscriptanalyzer --output-format json --output-file results.json script.ps1
SARIF Output
Static Analysis Results Interchange Format for GitHub Code Scanning:
# Generate SARIF file for GitHub integration
py-psscriptanalyzer --output-format sarif --output-file powershell-analysis.sarif --recursive
Formatting
Format PowerShell files using Invoke-Formatter:
# Format a single file
py-psscriptanalyzer --format script.ps1
# Format multiple files
py-psscriptanalyzer --format script1.ps1 script2.ps1
# Format all PowerShell files recursively
py-psscriptanalyzer --format --recursive
Recursive Processing
Process all PowerShell files in the current directory and subdirectories:
# Analyze all PowerShell files
py-psscriptanalyzer --recursive
# Format all PowerShell files
py-psscriptanalyzer --format --recursive
# Combine with other options
py-psscriptanalyzer --recursive --severity Error --security-only
Exit Codes
py-psscriptanalyzer returns standard exit codes:
0: Success (no issues found or formatting completed)1: Issues found or errors occurred2: Invalid arguments or configuration
Examples
Basic Analysis
# Quick check with default settings
py-psscriptanalyzer MyScript.ps1
# Comprehensive analysis
py-psscriptanalyzer --recursive --severity Information
# Security audit
py-psscriptanalyzer --recursive --security-only --severity Error
Output to Files
# JSON report for CI/CD
py-psscriptanalyzer --recursive --output-format json --output-file analysis.json
# SARIF for GitHub Code Scanning
py-psscriptanalyzer --security-only --recursive --output-format sarif --output-file security.sarif
Custom Rule Sets
# Focus on critical security rules only
py-psscriptanalyzer --include-rules PSAvoidUsingPlainTextForPassword,PSAvoidUsingConvertToSecureStringWithPlainText --severity Error script.ps1
# Exclude noisy style rules
py-psscriptanalyzer --exclude-rules PSAvoidUsingWriteHost,PSAvoidSemicolonsAsLineTerminators script.ps1
Pre-commit Hook Usage
For pre-commit hook configuration, see the Configuration documentation.
Integration with IDEs
VS Code
py-psscriptanalyzer can be integrated with VS Code through tasks or extensions that support external linters.
Other Editors
Any editor that supports external command execution can integrate py-psscriptanalyzer for PowerShell analysis.