I just lately learn a terrific submit from Mike F. Robbins about utilizing Format-Vast to show strings. Format-Vast is a type of cmdlets that I don’t suppose will get a lot use. This can be a disgrace as a result of it definitely fulfills a necessity. However as Mike factors out, when you’ve got an inventory of strings, Format-Vast requires somewhat further work, which Mike demonstrates. I made a decision to take his thought and run with it. Wouldn’t or not it’s simpler to have a perform?
ManageEngine ADManager Plus – Obtain Free Trial
Right here’s a PowerShell perform based mostly on Mike’s notes.
Perform Out-WideString {
[cmdletbinding(DefaultParameterSetName = "autosize")]
[alias("ows")]
Param(
[Parameter(ValueFromPipeline, HelpMessage = "The strings to display in a wide format.")]
[string]$InputObject,
[Parameter(ParameterSetName = "columns", HelpMessage = "The number of columns to display the strings in. The default is 3")]
[int]$Columns = 3,
[Parameter(ParameterSetName = "autosize", HelpMessage = "Autosize the output.")]
[switch]$AutoSize
)
Start {
Write-Verbose "[$((Get-Date).TimeofDay) BEGIN ] Beginning $($myinvocation.mycommand)"
#initalize a set to carry the incoming strings
$strings = [System.Collections.Generic.list[string]]::new()
#outline a hashtable to splat to Format-Vast on the finish
$fw = @{
Pressure = $true
Property = { $_ }
}
Write-Verbose "[$((Get-Date).TimeofDay) BEGIN ] Detected parameter set $($PSCmdlet.ParameterSetName)"
if ($pscmdlet.ParameterSetName -eq 'AutoSize') {
Write-Verbose "[$((Get-Date).TimeofDay) BEGIN ] Autosizing output"
$fw.Add("Autosize", $true)
}
else {
Write-Verbose "[$((Get-Date).TimeofDay) BEGIN ] Setting column width to $Columns"
$fw.Add("Column", $Columns)
}
} #start
Course of {
Write-Verbose "[$((Get-Date).TimeofDay) PROCESS] Including $InputObject"
$strings.add($InputObject)
} #course of
Finish Format-Vast @fw
Write-Verbose "[$((Get-Date).TimeofDay) END ] Ending $($myinvocation.mycommand)"
#finish
} #shut Out-WideString
The perform assumes you’ll pipe a sequence of strings. The perform parameters mirror these of Format-Vast.
![](https://jdhitsolutions.com/blog/wp-content/uploads/2022/05/out-widestring-help-1-1024x558.png)
The default conduct is to autosize the output.
![Out-Widestring autosize default](https://jdhitsolutions.com/blog/wp-content/uploads/2022/05/out-widestring-autosize-1-1024x558.png)
Or you may specify the variety of columns.
![out-widestring columns](https://jdhitsolutions.com/blog/wp-content/uploads/2022/05/out-widestring-columns-1024x558.png)
As with the opposite Out cmdlets, you may’t do something with the output of Out-WideString aside from ship it to a file or printer.
Get-Content material C:scriptswomen.txt | Out-WideString | out-file c:worknames.txt
Thanks, Mike, for the tip. In case you have any questions on how my perform works, be at liberty to depart a remark.