Snippet Name: Get_ODBC_DSNs_Providers
Tags:
Created Date: 2025-06-16 13:12:49
Last Modified Date: 2025-05-31 10:32:08
Dependencies:
DBA Notes:
Sample Output:
Title: Get ODBC DSNs Providers
Author: user
Via PowerShell, how can I get a list of ODBC server DSNs, as well as a list of installed providers
Author: ChatGPT
You can retrieve ODBC **System DSNs** and **User DSNs** along with installed ODBC **drivers** and **providers** using PowerShell.
### **Get ODBC DSNs (System & User)**
Use the `Get-ItemProperty` cmdlet to retrieve DSNs from the Windows registry:
```powershell
# Get System DSNs
$systemDSNs = Get-ItemProperty -Path "HKLM:\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
# Get User DSNs (for current user)
$userDSNs = Get-ItemProperty -Path "HKCU:\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
# Display results
Write-Host "`nSystem DSNs:"
$systemDSNs.PSObject.Properties | ForEach-Object { Write-Host "$($_.Name) - $($_.Value)" }
Write-Host "`nUser DSNs:"
$userDSNs.PSObject.Properties | ForEach-Object { Write-Host "$($_.Name) - $($_.Value)" }
```
---
### **Get Installed ODBC Drivers**
To list installed ODBC drivers:
```powershell
# Get Installed ODBC Drivers
$drivers = Get-ItemProperty -Path "HKLM:\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers"
Write-Host "`nInstalled ODBC Drivers:"
$drivers.PSObject.Properties | ForEach-Object { Write-Host "$($_.Name) - $($_.Value)" }
```
---
### **Get Installed OLE DB Providers**
For a list of installed **OLE DB providers**, query the COM objects:
```powershell
# Get Installed OLE DB Providers
$providers = New-Object -ComObject "ADOX.Catalog"
$providersList = $providers.ActiveConnection.ProviderNames
Write-Host "`nInstalled OLE DB Providers:"
$providersList | ForEach-Object { Write-Host $_ }
```
---
### **Alternative: Use `odbcconf.exe` to List DSNs**
If you want a command-line approach:
```powershell
cmd /c "odbcconf.exe /S /L"
```
This will return system DSNs and drivers.
Would you like a version that outputs structured data like JSON or CSV for easy manipulation?