PowerShell / PowerShell/PSScriptAnalyzer
formatting partial / dot sourced ps1 dsc scripts
Personne n'a encore pris cette issue.
- Langage dominant
- C#
- Étoiles
- 2.2k
- Forks
- 414
- Merge moyen
- 13 h 1 min
- PR mergées (30 j)
- 2
Description
Steps to reproduce
I originally opened this on the vscode-powershell#1583 project, but I've been directed to open an issue here directly.
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"
}
}
I can provide a bit more information when I'm back in the office tomorrow if any is needed, but I wanted to make sure I'd opened the issue since I was aware.
Expected behavior
Registry DisableLocalMachineRunOnce {
Ensure = "Present"
Key = "HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
Force = $true
ValueName = "DisableLocalMachineRunOnce"
ValueType = "DWord"
ValueData = "1"
}
Actual behavior
Registry DisableLocalMachineRunOnce {
Ensure = "Present"
Key = "HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
Force = $true
ValueName = "DisableLocalMachineRunOnce"
ValueType = "DWord"
ValueData = "1"
}
Environment data
| 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 |
(Get-Module -ListAvailable PSScriptAnalyzer).Version | ForEach-Object { $_.ToString() }
I'm using PSScriptAnalyzer as part of vscode-powershell using the current version.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduisez le comportement du formateur dans PSScriptAnalyzer avec la ressource autonome DisableLocalMachineRunOnce.ps1 et comparez-le à celui de la même ressource dans l’exemple de configuration fourni. Commencez par suivre la manière dont le formateur reconnaît les ressources DSC dans les fichiers dot-sourced ; le travail est terminé lorsque la ressource autonome aligne Ensure et les autres affectations comme indiqué dans le comportement attendu.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- powershell
- Domaine
- tooling
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100