Add-DbOpen.ps1
<#
.SYNOPSIS .DESCRIPTION .PARAMETER ServerInstance .INPUTS .OUTPUTS .EXAMPLE #> function Add-DbOpen { [CmdletBinding()] param ( [Parameter(Mandatory = $true, Position = 0)] $SqlConnection # System.Data.SqlClient.SqlConnection ) begin { } process { Add-Member -InputObject $SqlConnection -MemberType ScriptMethod -Name Open -Force -Value { $task = $this.OpenAsync() $result = $null $exception = $null do { try { $result = $task.Wait($this.ConnectionTimeout * 1000) # It can take a little bit to mark completion if (-not $task.IsCompleted) { Start-Sleep -Milliseconds 500 } } catch { $exception = $_ } # Pass on most detailed task exception available if ($task.Exception) { if ($task.Exception.psobject.Properties["InnerException"] -and $task.Exception.InnerException) { throw $task.Exception.InnerException } else { throw $task.Exception } } elseif ($exception) { throw $exception } } until ($result -or $exception) } } end { } } |