首页 > 解决方案 > 具有“。”的数据库 而不是 'localhost' 没有显示

问题描述

我正在尝试从特定实例获取所有 ODBC 连接。问题是有些 ODBC 连接是用“.\foo”设置的,有些是用“localhost\foo”设置的。据我了解,这应该是相同的,但我想不是。在示例代码中,我无法定义将“.\foo”和“localhost\foo”处理为相同的选项。

无论“.\foo”还是“localhost\foo”,有没有办法获取所有内容?

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

§代表.localhost

标签: databasepowershelllocalhost

解决方案


使用 2 个比较:

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

或使用正则表达式匹配来覆盖两者:

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

推荐阅读