Closed
Description
Before submitting a bug report:
- Make sure you are able to repro it on the latest released version
- Perform a quick search for existing issues to check if this bug has already been reported
Steps to reproduce
I have a function that uses XMLDocument.SelectNodes to grab attribute nodes,
name them with a PSObject, and then filter them using Where-Object.
Expected behavior
# The expected behavior is for the bracket closing the ForEach-Object block to be directly under the F:
process {
$syncXml.SelectNodes('//@LDAPGroupName') |
ForEach-Object {
[PSCustomObject]@{ Group = $_.Value } |
Where-Object { $_.Group -like $Group }
}
}
Actual behavior
If we leave the pipes at the end of the lines as is standard practice, we get this:
# the close of the ForEach-Object block now appears under the bracket of the type designation
process {
$syncXml.SelectNodes('//@LDAPGroupName') |
ForEach-Object {
[PSCustomObject]@{ Group = $_.Value } |
Where-Object { $_.Group -like $Group }
}
}
However, the formatter correctly places the closing brace if we move the last pipe to the next line:
# Moving the pipe fixes the issue:
process {
$syncXml.SelectNodes('//@LDAPGroupName') |
ForEach-Object {
[PSCustomObject]@{ Group = $_.Value }
| Where-Object { $_.Group -like $Group }
}
}
If an unexpected error was thrown then please report the full error details using e.g. $error[0] | Select-Object *
Environment data
> $PSVersionTable
Name Value
---- -----
PSVersion 7.4.5
PSEdition Core
GitCommitId 7.4.5
OS Microsoft Windows 10.0.19045
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
> (Get-Module -ListAvailable PSScriptAnalyzer).Version | ForEach-Object { $_.ToString() }
1.22.0