Cmdlets/Get-SqlMessage.ps1

<#
.Synopsis
    Returns any available informational messages.
 
.Description
    Get-SqlMessage returns any informational messages generated by
    Invoke-SqlScalar, Invoke-SqlQuery, or Invoke-SqlUpdate. Not all providers
    support informational messages.
 
    SQL Server, if you use Print or Raiserror without the "NoWait", then messages
    will be batched to 8kb and then sent. To get messages immediately sent, your
    query needs to use
         
        RAISERROR('your message', 10,1) WITH NOWAIT
 
.Parameter ConnectionName
    User defined name for connection.
 
#>

Function Get-SqlMessage {
    [cmdletBinding()]
    Param([Parameter(Position=0)][Alias("cn")][string]$ConnectionName = "default")

    If(TestConnectionName -ConnectionName $ConnectionName) {
        Try {
            While ($Script:Connections.$ConnectionName.HasMessages()) {
                Write-Output $Script:Connections.$ConnectionName.GetMessage()
            }
        }
        Catch [System.NotSupportedException] {
            Write-Warning ("[{0}] {1}" -f $Script:Connections.$ConnectionName.ProviderType(), $_.exception.message)
        }
    }
}

Export-ModuleMember -Function Get-SqlMessage