[CmdletBinding(SupportsShouldProcess)]param() $local:allAliases = @() $MyAliasScope = 0 $local:_scope = 0 $local:_done = $false do { try { $local:newAliases += Get-Alias -Scope $_scope | Where-Object { ($_.Definition -match "^$MyPSScriptRoot") -or ($_.Description -match '#MyAlias') } if( $newAliases ) { $allAliases += $newAliases $MyAliasScope = $_scope; Write-Verbose "`$MyAliasScope is now set to $MyAliasScope" } } catch { Write-Verbose "catch: $($_.Exception.Message)" $_done = $_.Exception.Message -match 'The scope .* exceeds' } $_scope += 1 } until ( $_done ) $allAliases