Warning, /sdk/codevis/thirdparty/soci/scripts/windows/Get-ODBCList.ps1 is written in an unsupported language. File is not indexed.
0001 Function Get-ODBCList 0002 { 0003 <# 0004 .SYNOPSIS 0005 Get ODBC list. 0006 0007 .DESCRIPTION 0008 The Get-ODBCList cmdlet to Get ODBC connectors list on specific machine. 0009 0010 .PARAMETER ComputerName 0011 Specifies a computer name. 0012 0013 .EXAMPLE 0014 PS C:\> Get-ODBCList -ComputerName "g1","g2","g3" 0015 0016 ODBC ComputerName 0017 ---- ------------ 0018 SQL Server g1 0019 Microsoft Access Driver (*.mdb, *.accdb) g1 0020 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) g1 0021 Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx) g1 0022 Microsoft Access Text Driver (*.txt, *.csv) g1 0023 SQL Server Native Client 10.0 g1 0024 SQL Native Client g1 0025 SQL Server g2 0026 SQL Server g3 0027 0028 .NOTES 0029 Author: Michal Gajda 0030 Blog : http://commandlinegeeks.com/ 0031 #> 0032 [CmdletBinding( 0033 SupportsShouldProcess=$True, 0034 ConfirmImpact="Low" 0035 )] 0036 Param 0037 ( 0038 [parameter(ValueFromPipeline=$true, 0039 ValueFromPipelineByPropertyName=$true)] 0040 [String[]]$ComputerName = $env:COMPUTERNAME 0041 ) 0042 0043 Begin 0044 { 0045 $Key = "SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers" 0046 $KeyWow64 = "SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBC Drivers" 0047 $Type = [Microsoft.Win32.RegistryHive]::LocalMachine 0048 } #End Begin 0049 0050 Process 0051 { 0052 Foreach($Computer in $ComputerName) 0053 { 0054 If(Test-Connection $Computer -Quiet) 0055 { 0056 Try 0057 { 0058 $regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($Type, $Computer) 0059 $regSubKey = $regKey.OpenSubKey($Key) 0060 $regSubKeyWow64 = $regKey.OpenSubKey($KeyWow64) 0061 } 0062 Catch 0063 { 0064 Write-Error $_.Exception.Message -ErrorAction Stop 0065 } 0066 0067 if($regSubKey -and $regSubKeyWow64) 0068 { 0069 $Bits = 64 0070 } #End if $regSubKey -and $regSubKeyWow64 0071 else 0072 { 0073 $Bits = 32 0074 } #End Else $regSubKey -and $regSubKeyWow64 0075 0076 Foreach($val in $regSubKey.GetValueNames()) 0077 { 0078 $log = New-Object PSObject -Property @{ 0079 ComputerName = $Computer 0080 ODBC = $val 0081 Bits = $Bits 0082 } #End New-Object PSObject 0083 0084 $log 0085 } #End ForEach $val in $regSubKey.GetValueNames() 0086 0087 if($Bits -eq 64) 0088 { 0089 Foreach($val in $regSubKeyWow64.GetValueNames()) 0090 { 0091 $log = New-Object PSObject -Property @{ 0092 ComputerName = $Computer 0093 ODBC = $val 0094 Bits = 32 0095 } #End New-Object PSObject 0096 0097 $log 0098 } #End ForEach $val in $regSubKeyWow64.GetValueNames() 0099 } #End If $Bits -eq 64 0100 } #End If Test-Connection $Computer -Quiet 0101 } #End Foreach $Computer in $ComputerName 0102 } #End Process 0103 0104 End{} 0105 } #In The End :)