cmoerbe
asked on
Authentication failing when using Powershell to connect to DB2 database
I have a PowerShell script that am using to connect to a DB2 database.
The script has the credentials hard coded at this point, and everything works fine.
I am trying to encrypt the password and call the encrypted password from a file, using get-content in PowerShell and converting to a secure string. Then sending the secure string to the database.
When I try with the encrypted method it gives me an authentication error.
"ERROR [08001] [IBM][CLI Driver] SQL30082N Security processing failed
ith reason "24" ("USERNAME AND/OR PASSWORD INVALID"). SQLSTATE=08001"
Can someone please advise how to properly authenticate to a database using this or a similar method to call the plain text encrypted password, to a secure string, and then to the database.
---------EXAMPLE---------- ----------
Before with plain text password, which works.
$datasource = "database server"
$user = "username"
$pwd = "plaintextpassword"
$connectionString = "Server=$dataSource;uid=$u ser; pwd=$pwd;Database=$databas e;Integrat ed Security=False;"
$query = "random database query"
$connection = New-Object System.Data.odbc.odbcconne ction
$connection.ConnectionStri ng = "DSN=$dataSource;Uid=$user ;Pwd=$pwd"
$connection.Open()
$command = $connection.CreateCommand( )
$command.CommandText = $query
$result = $command.ExecuteReader()
$table = new-object "System.Data.DataTable"
$table.Load($result)
$format = @{Expression={random table data}
}
$table | Export-CSV C:\folder\output.csv -notype
$connection.Close()
After using encrypted password, which does not work.
$datasource = "database server"
$user = "username"
$pwd = Get-Content "C:\folder\encrypted.txt | ConvertTo-SecureString
$database = "Database_name"
$connectionString = "Server=$dataSource;uid=$u ser; pwd=$pwd;Database=$databas e;Integrat ed Security=False;"
$query = "random database query"
$connection = New-Object System.Data.odbc.odbcconne ction
$connection.ConnectionStri ng = "DSN=$dataSource;Uid=$user ;Pwd=$pwd"
$connection.Open()
$command = $connection.CreateCommand( )
$command.CommandText = $query
$result = $command.ExecuteReader()
$table = new-object "System.Data.DataTable"
$table.Load($result)
$format = @{Expression=random table data}
$table | Export-CSV C:\folder\output.csv -notype
$connection.Close()
The script has the credentials hard coded at this point, and everything works fine.
I am trying to encrypt the password and call the encrypted password from a file, using get-content in PowerShell and converting to a secure string. Then sending the secure string to the database.
When I try with the encrypted method it gives me an authentication error.
"ERROR [08001] [IBM][CLI Driver] SQL30082N Security processing failed
ith reason "24" ("USERNAME AND/OR PASSWORD INVALID"). SQLSTATE=08001"
Can someone please advise how to properly authenticate to a database using this or a similar method to call the plain text encrypted password, to a secure string, and then to the database.
---------EXAMPLE----------
Before with plain text password, which works.
$datasource = "database server"
$user = "username"
$pwd = "plaintextpassword"
$connectionString = "Server=$dataSource;uid=$u
$query = "random database query"
$connection = New-Object System.Data.odbc.odbcconne
$connection.ConnectionStri
$connection.Open()
$command = $connection.CreateCommand(
$command.CommandText = $query
$result = $command.ExecuteReader()
$table = new-object "System.Data.DataTable"
$table.Load($result)
$format = @{Expression={random table data}
}
$table | Export-CSV C:\folder\output.csv -notype
$connection.Close()
After using encrypted password, which does not work.
$datasource = "database server"
$user = "username"
$pwd = Get-Content "C:\folder\encrypted.txt | ConvertTo-SecureString
$database = "Database_name"
$connectionString = "Server=$dataSource;uid=$u
$query = "random database query"
$connection = New-Object System.Data.odbc.odbcconne
$connection.ConnectionStri
$connection.Open()
$command = $connection.CreateCommand(
$command.CommandText = $query
$result = $command.ExecuteReader()
$table = new-object "System.Data.DataTable"
$table.Load($result)
$format = @{Expression=random table data}
$table | Export-CSV C:\folder\output.csv -notype
$connection.Close()
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I tried commenting everything out below line 44 to just test storing and retrieving the credentials.
It prompts for the credentials and exits, but does not display them back before exit. No errors generated either. Unable to determine if it saved them or not. It is NTFS and only using notepad to work with the file before .ps1.
Any thoughts?
It prompts for the credentials and exits, but does not display them back before exit. No errors generated either. Unable to determine if it saved them or not. It is NTFS and only using notepad to work with the file before .ps1.
Any thoughts?
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Works like a champ! Thanks for providing this alternate solution. I do prefer it to my original plan.
Best regards
Best regards
ASKER
Thank you again for the assistance
ASKER
Please allow me a moment to test this out.