PowerShellPracticeAndStyle
PowerShellPracticeAndStyle copied to clipboard
New line after pipeline?
What do you think about the pipeline and newlines.
Get-PSSession |
Where-Object { $_.computername -like "*.outlook.com" } |
Remove-PSSession
Get-PSSession | Where-Object { $_.computername -like "*.outlook.com" } | Remove-PSSession
I personally do it like this:
Get-Process |
Sort-Object -Property Name |
Out-GridView
When I'm writing scripts anyway. I don't do that when I'm using the shell.
Reability is more important and having it all on one line makes it more difficult to understand at a quick glance. If your code is more readable over multiple lines then break it up.
If we care about readability, we sure might want to chime in on a very relevant PowerShell issue:
- https://github.com/PowerShell/PowerShell/issues/3020
When it comes to style, clarity, and readability, the options below are organized from best to worst:
# Doesn't work, but it _should_
Get-PSSession
| Where-Object { $_.computername -like "*.outlook.com" }
| Remove-PSSession
Get-PSSession |
Where-Object { $_.computername -like "*.outlook.com" } |
Remove-PSSession
Get-PSSession `
| Where-Object { $_.computername -like "*.outlook.com" } `
| Remove-PSSession
Get-PSSession |
Where-Object { $_.computername -like "*.outlook.com" } |
Remove-PSSession
Get-PSSession | Where-Object { $_.computername -like "*.outlook.com" } | Remove-PSSession
Get-PSSession |
Where-Object { $_.computername -like "*.outlook.com" } |
Remove-PSSession
The version with backticks is better than the pyramid indent but worse than the single indent because it is slightly harder to maintain, but it remains easier to read and understand especially with long or complex pipelines.
That first option is very F#-like. I approve.
let f1 str server =
str
|> parseUserName
|> getUserByName server
|> validateLogin <| DateTime.Now
Getting that to work, though, would be a fairly big task, I think. It goes against a few established behaviours. Currently my go to is option 2.