Skip to content

Unable to run rules with settings file that run fine with hashtable #1160

@rjmholt

Description

@rjmholt

I've got a script with some compatibility bugs in it. I can run the compatibility rules on it like this:

$settings = @{
    Rules = @{
        PSUseCompatibleCommands = @{
            Enable = $true
            TargetProfiles = @(
                'win-8_x64_10.0.17763.0_5.1.17763.316_x64_4.0.30319.42000_framework' # Server 2019 - PS 5.1 (the platform it already runs on)
                'win-8_x64_6.2.9200.0_3.0_x64_4.0.30319.42000_framework' # Server 2012 - PS 3
                'ubuntu_x64_18.04_6.1.3_x64_4.0.30319.42000_core' # Ubuntu 18.04 - PS 6.1
            )
        }
        PSUseCompatibleTypes = @{
            Enable = $true
            TargetProfiles = @(
                'win-8_x64_10.0.17763.0_5.1.17763.316_x64_4.0.30319.42000_framework'
                'win-8_x64_6.2.9200.0_3.0_x64_4.0.30319.42000_framework'
                'ubuntu_x64_18.04_6.1.3_x64_4.0.30319.42000_core'
            )
        }
        PSUseCompatibleSyntax = @{
            Enable = $true
            TargetVersions = @('3.0', '5.1', '6.1')
        }
    }
}

Invoke-ScriptAnalyzer -Settings $settings -Path ./script.ps1

And get:


RuleName                            Severity     ScriptName Line  Message                                                     
--------                            --------     ---------- ----  -------                                                     
PSUseCompatibleCommands             Warning      blogBad.ps 9     The parameter 'FullyQualifiedName' is not available for     
                                                 1                command 'Import-Module' by default in PowerShell version    
                                                                  '3.0' on platform 'Microsoft Windows Server 2012 Datacenter'
PSUseCompatibleCommands             Warning      blogBad.ps 13    The parameter 'Depth' is not available for command          
                                                 1                'Get-ChildItem' by default in PowerShell version '3.0' on   
                                                                  platform 'Microsoft Windows Server 2012 Datacenter'         
PSUseCompatibleCommands             Warning      blogBad.ps 22    The command 'Get-AuthenticodeSignature' is not available by 
                                                 1                default in PowerShell version '6.1.3' on platform 'Ubuntu   
                                                                  18.04.2 LTS'                                                
PSUseCompatibleCommands             Warning      blogBad.ps 30    The command 'Compress-Archive' is not available by default  
                                                 1                in PowerShell version '3.0' on platform 'Microsoft Windows  
                                                                  Server 2012 Datacenter'                                     
PSUseCompatibleTypes                Warning      blogBad.ps 12    The method 'Get' is not available on type                   
                                                 1                'System.Management.Automation.WildcardPattern' by default   
                                                                  in PowerShell version '3.0' on platform 'Microsoft Windows  
                                                                  Server 2012 Datacenter'                                     
PSUseCompatibleSyntax               Warning      blogBad.ps 11    The constructor syntax '[System.Collections.Generic.List[Sys
                                                 1                tem.Management.Automation.Signature]]::new()' is not        
                                                                  available by default in PowerShell versions 3,4             
                                                                             

But when I put the settings in a psd1 file and run the same with:

Invoke-ScriptAnalyzer -Settings ./mysettings.psd1 -Path ./script.ps1

I get no output.

Is this expected behaviour -- is there something I need to add to a settings file to make this work? Or is this something I should be fixing in the engine?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions