Private/Powershell/PsDbUtil.ps1
<############################################################################ # Get connection to MSSQL database ############################################################################> Function Get-DbConnection($connStr) { # Open SQL connection (you have to change these variables) $conn = New-Object System.Data.SqlClient.SqlConnection $conn.ConnectionString = $connStr $conn.Open() # Quit if the SQL connection did not open properly. if ($conn.State -ne [Data.ConnectionState]::Open) { "Connection to DB is not open." Exit } return $conn } <############################################################################ # Close SQL connection ############################################################################> Function Close-DbConnection($conn) { # Close the connection. try { if ($conn.State -eq [Data.ConnectionState]::Open) { $conn.Close() } } catch { # ignore } } <############################################################################ # Execute a sql statement. Parameters are allowed. # Input parameters should be a dictionary of parameter names and values. # Return value will usually be a list of datarows. # https://powershellstation.com/2009/09/15/executing-sql-the-right-way-in-powershell/ ############################################################################> Function Invoke-DbQuery ([Data.SqlClient.SqlConnection] $conn, [string]$sql, $parameters=@{}) { [OutputType([System.Data.DataTable])] $ds=New-Object system.Data.DataSet try { $cmd = new-object system.Data.SqlClient.SqlCommand $cmd.Connection = $conn $cmd.CommandText = $sql foreach($p in $parameters.Keys){ [Void] $cmd.Parameters.AddWithValue("@$p",$parameters[$p]) } $da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd) $da.fill($ds) | Out-Null $success = $TRUE; } catch { $error = "error in sql $sql $_" } return $ds; } |