通过命令行获取 Windows 7 个 ODBC 数据源的列表
Get list of Windows 7 ODBC Data Sources through Command Line
我需要从我的计算机中检索信息,我可以通过 PHP 脚本获取它,但如果可能的话最好使用 Perl 脚本。基本上,我需要用户定义的 ODBC 数据源列表及其 server URLS(如果已定义)。
我看到 this answer 如何使用 PHP 从注册表中提取它,但我还需要服务器 URL。
我非常非常快地将这个 Perl 脚本组合在一起,但它似乎可以满足您的需要。它将连接名称作为键放入散列中,然后将服务器字符串作为其值。请注意,根据您的问题,这只会获取用户定义的来源(尽管适应收集系统 DSN 是微不足道的):
use warnings;
use strict;
use Win32::TieRegistry;
my $odbc_key = $Registry->{'CUser\Software\ODBC\ODBC.INI'};
my %sources;
for (keys %$odbc_key) {
next if /ODBC Data Sources/;
s/\//g;
$sources{$_} = $odbc_key->{"$_\Server"};
}
for my $dsn (keys %sources) {
print "dsn: $dsn, server: $sources{$dsn}\n";
}
输出:
dsn: Test, server: localhost
dsn: Blah, server: yay.blah.com
我需要从我的计算机中检索信息,我可以通过 PHP 脚本获取它,但如果可能的话最好使用 Perl 脚本。基本上,我需要用户定义的 ODBC 数据源列表及其 server URLS(如果已定义)。
我看到 this answer 如何使用 PHP 从注册表中提取它,但我还需要服务器 URL。
我非常非常快地将这个 Perl 脚本组合在一起,但它似乎可以满足您的需要。它将连接名称作为键放入散列中,然后将服务器字符串作为其值。请注意,根据您的问题,这只会获取用户定义的来源(尽管适应收集系统 DSN 是微不足道的):
use warnings;
use strict;
use Win32::TieRegistry;
my $odbc_key = $Registry->{'CUser\Software\ODBC\ODBC.INI'};
my %sources;
for (keys %$odbc_key) {
next if /ODBC Data Sources/;
s/\//g;
$sources{$_} = $odbc_key->{"$_\Server"};
}
for my $dsn (keys %sources) {
print "dsn: $dsn, server: $sources{$dsn}\n";
}
输出:
dsn: Test, server: localhost
dsn: Blah, server: yay.blah.com