Use-NullCoalescing.psm1
<#PSScriptInfo
.VERSION 3.0.1 .GUID 3dbe34cb-6c77-4df2-a983-14fac15b78ce .AUTHOR Anthony J. Raymond .COMPANYNAME .COPYRIGHT (c) 2022 Anthony J. Raymond .TAGS operators null-coalescing ?? .LICENSEURI https://github.com/CodeAJGit/posh/blob/master/LICENSE .PROJECTURI https://github.com/CodeAJGit/posh .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES 20220908-AJR: 3.0.0 - Initial Release 20220921-AJR: 3.0.1 - Fix for External Help .PRIVATEDATA #> function Use-NullCoalescing { [CmdletBinding()] [OutputType([object])] ## PARAMETERS ############################################################# param ( [Parameter( Mandatory, ValueFromPipeline )] [AllowNull()] [AllowEmptyString()] [AllowEmptyCollection()] [object] $InputObject, [Parameter( Position = 0, Mandatory )] [scriptblock] $IfNull ) ## PROCESS ################################################################ process { try { # wrapping in an array to handle $null as input :Main foreach ($Object in @($InputObject)) { if ($null -eq $Object) { . $IfNull } else { Write-Output $Object } } } catch { $PSCmdlet.WriteError($_) continue Main } } } Set-Alias -Name ?? -Value Use-NullCoalescing Export-ModuleMember -Function Use-NullCoalescing -Alias ?? |