Private Function getAllServers() As DataTable
Dim dt As New DataTable
'' dt = SmoApplication.EnumAvailableSqlServers
Dim info As ProcessStartInfo = New ProcessStartInfo("cmd", "/c sqlcmd -L")
info.RedirectStandardOutput = True
info.UseShellExecute = False
info.CreateNoWindow = True
Dim p As Process = New Process()
p.StartInfo = info
p.Start()
Dim res As String = p.StandardOutput.ReadToEnd
Dim sqlSrvList() As String = res.Trim.Split(CChar(vbNewLine))
Dim sqlSrvrs As New List(Of String)
For i As Int32 = 1 To sqlSrvList.Length - 1
sqlSrvrs.Add(sqlSrvList(i).Replace(Chr(13), "").Trim)
Next
Dim ServerName As String = ""
Dim DatabaseName As String = ""
Dim Instance As String = ""
Dim drow As DataRow
Dim dcol As New DataColumn
dcol = New DataColumn
dcol.Caption = "Name"
dcol.ColumnName = "Name"
dt.Columns.Add(dcol)
dcol = New DataColumn
dcol.Caption = "Server"
dcol.ColumnName = "Server"
dt.Columns.Add(dcol)
dcol = New DataColumn
dcol.Caption = "Instance"
dcol.ColumnName = "Instance"
dt.Columns.Add(dcol)
For Each sqlserver As String In sqlSrvrs
ServerName = sqlserver
If sqlserver.IndexOf("\") < 1 Then
DatabaseName = sqlserver
Else
DatabaseName = sqlserver.Substring(0, sqlserver.IndexOf("\"))
End If
Instance = sqlserver.Substring(sqlserver.IndexOf("\") + 1)
drow = dt.NewRow
drow("Name") = ServerName.ToUpper
drow("Server") = DatabaseName.ToUpper
drow("Instance") = Instance.ToUpper
dt.Rows.Add(drow)
Next
Return dt
End Function