param( [string]$Dsn = 'AppxODBC', [System.Management.Automation.PSCredential]$Credential ) $ErrorActionPreference = 'Stop' if ([Environment]::Is64BitProcess) { throw 'Open 32-bit Windows PowerShell: C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe' } if (-not $Credential) { $Credential = Get-Credential -UserName 'appx' -Message 'APPX login for the selected ODBC data source' } if (-not $Credential) { throw 'Login cancelled' } $connectionString = New-Object System.Data.Odbc.OdbcConnectionStringBuilder $connectionString['DSN'] = $Dsn $connectionString['UID'] = $Credential.UserName $connectionString['PWD'] = $Credential.GetNetworkCredential().Password $connection = New-Object System.Data.Odbc.OdbcConnection($connectionString.ConnectionString) $connectionString.Clear() try { $connection.Open() $count = $connection.CreateCommand() $count.CommandText = 'SELECT COUNT(*) FROM DMO_DMO_COUNTRY' $count.CommandTimeout = 30 Write-Host ('COUNTRY count: ' + $count.ExecuteScalar()) $count.Dispose() $query = $connection.CreateCommand() $query.CommandText = 'SELECT * FROM DMO_DMO_COUNTRY ORDER BY name' $query.CommandTimeout = 30 $reader = $query.ExecuteReader() $table = New-Object System.Data.DataTable $table.Load($reader) $reader.Dispose() $query.Dispose() $table | Format-Table name, region_label, no_words, post_code_loc -AutoSize } finally { $connection.Dispose() $Credential = $null }