Skip to content

formatting partial / dot sourced ps1 dsc scripts #1583

@sfcmgr

Description

@sfcmgr

Issue Description

I'm currently creating DSC Resource modules to apply settings in our environment, I'm breaking down the actual settings to individual files to make managing the settings easier and to have an easy structure of those settings.

The issue is that the formatter is not performing the align dsc resource / hash table function on the files to import.

It's not really relevant but i'm using the following code in my policy.schema.psm1 file

Configuration Win10CustomComputerPolicy
{
    Param(
        [Parameter(Mandatory = $false)]
        [array]
        $excludeImports = @()
    )
    
    Import-DscResource -ModuleName PSDesiredStateConfiguration

    $importParams = @{
        Path        = $PSScriptRoot
        Exclude     = $excludeImports
        Filter      = '*.ps1'
        ErrorAction = 'SilentlyContinue'
        Recurse     = $true
    }
    $imports = @(Get-ChildItem @importParams)

    #Dot source the files
    Foreach ($import in $imports) {
        Try {
            . $import.fullname
        }
        Catch {
            Write-Error -Message "Failed to import function $($import.fullname): $_"
        }
    }
}

each individual file then looks like this:

DisableLocalMachineRunOnce.ps1

#\System\Logon\Do not process the run once list
Registry DisableLocalMachineRunOnce {
    Ensure = "Present"
    Key = "HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
    Force     = $true
    ValueName = "DisableLocalMachineRunOnce"
    ValueType = "DWord"
    ValueData = "1"
}

most of the formatting works, but not the alignment, if I add a configuration section around the code it works, but that would break my import.

#\System\Logon\Do not process the run once list
configuration test {
    Registry DisableLocalMachineRunOnce {
        Ensure    = "Present"
        Key       = "HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
        Force     = $true
        ValueName = "DisableLocalMachineRunOnce"
        ValueType = "DWord"
        ValueData = "1"
    }
}

You can easily see the difference by creating a new .ps1 file, using the above code, the second example will auto-format the alignment in the dsc resource, the first won't.

If you need anything else, I'm happy to provide it!

Attached Logs

I've not attached logs - problem seems easily reproducible, can add later if really needed.

Environment Information

Visual Studio Code

Name Version
Operating System Windows_NT x64 10.0.17134
VSCode 1.28.1
PowerShell Extension Version 1.9.0

PowerShell Information

Name Value
PSVersion 5.1.17134.228
PSEdition Desktop
PSCompatibleVersions 1.0 2.0 3.0 4.0 5.0 5.1.17134.228
BuildVersion 10.0.17134.228
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

Visual Studio Code Extensions

Visual Studio Code Extensions(Click to Expand)
Extension Author Version
asciidoctor-vscode joaompinto 0.15.1
better-comments aaron-bond 2.0.2
code-settings-sync Shan 3.1.2
code-spell-checker streetsidesoftware 1.6.10
dark-plus-material vangware 1.4.3
gitconfig sidneys1 2.0.0
markdown-all-in-one yzhang 1.6.0
markdown-checkbox PKief 1.3.0
material-icon-theme PKief 3.6.0
mssql ms-mssql 1.4.0
PowerShell ms-vscode 1.9.0
theme-bluloco-light uloco 2.6.4
theme-monokai-pro-vscode monokai 1.1.8
theme-panda tinkertrain 1.3.0
vsc-material-theme Equinusocio 2.4.2
vscode-markdownlint DavidAnson 0.20.0
vscode-mysql formulahendry 0.3.0
vscode-theme-onelight akamud 2.1.0

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions