Базы данных, которые имеют ‘.’ вместо ‘localhost’, не отображаются

#database #powershell #localhost

#База данных #powershell #localhost

Вопрос:

Я пытаюсь получить все ODBC-соединения из определенного экземпляра. Проблема в том, что для некоторых ODBC-соединений задается «. foo», а для некоторых — «localhost foo». В моем понимании это должно быть то же самое, но я думаю, что это не так. В примере кода я не могу определить параметр для обработки «.foo» и «localhost foo» как один и тот же.

Есть ли способ получить все, независимо от того, «. foo» или «localhost foo»?

 Get-OdbcDsn -DsnType System -DriverName "SQL Server" | ? {
    ($_.Attribute["Server"] -eq "§SQLServer2012")
}
  

§ представляет либо . , либо localhost .

Ответ №1:

Используйте 2 сравнения:

 Get-OdbcDsn -DsnType System -DriverName 'SQL Server' | ? {
    $_.Attribute['Server'] -eq '.SQLServer2012' -or
    $_.Attribute['Server'] -eq 'localhostSQLServer2012'
}
  

или используйте соответствие регулярному выражению, чтобы охватить оба:

 Get-OdbcDsn -DsnType System -DriverName 'SQL Server' | ? {
    $_.Attribute['Server'] -match '^(.|localhost)\SQLServer2012$'
}
  

Комментарии:

1. Спасибо. Оба решения были очень полезны!