61 lines
2.2 KiB
PowerShell
61 lines
2.2 KiB
PowerShell
function Get-ConnectionStringInventory {
|
|
<#
|
|
.SYNOPSIS
|
|
Returns an OrderedDictionary that Represents the Connection String Inventory.
|
|
#>
|
|
|
|
[CmdletBinding()]
|
|
Param()
|
|
|
|
$logLead = (Get-LogLeadName);
|
|
$providerStopWatch = [System.Diagnostics.StopWatch]::StartNew()
|
|
|
|
$connectionStringDictionary = New-Object System.Collections.Specialized.OrderedDictionary
|
|
$connectionStringDetails = New-Object System.Collections.Specialized.OrderedDictionary
|
|
|
|
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Getting Machine Config Data"
|
|
|
|
[xml]$machineConfigRaw = Read-MachineConfig
|
|
$connectionStrings = $machineConfigRaw.SelectSingleNode("//connectionStrings")
|
|
|
|
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Machine Config Data Retrieved"
|
|
|
|
try {
|
|
|
|
foreach ($connectionString in $connectionStrings.ChildNodes) {
|
|
|
|
try {
|
|
|
|
$conn = New-Object System.Data.SqlClient.SqlConnectionStringBuilder($connectionString.connectionString) -ErrorAction SilentlyContinue
|
|
}
|
|
catch {
|
|
|
|
# Non-SQL Connection Strings, like Redis, will error here. And that's OK
|
|
Write-Host "$logLead : Non-SQL Connection Strings, like Redis, will error here. And that's OK."
|
|
}
|
|
|
|
if ($null -ne $conn -and !([String]::IsNullOrEmpty($conn.Password))) {
|
|
|
|
$cleansedConnectionString = $conn.ToString().Replace($conn.Password, "HIDDEN")
|
|
}
|
|
else {
|
|
|
|
$cleansedConnectionString = ($connectionString.connectionString -replace "password\=[^;]+", "password=HIDDEN")
|
|
}
|
|
|
|
$connectionStringDetails[$connectionString.name] = New-Object System.Collections.Specialized.OrderedDictionary
|
|
$connectionStringDetails[$connectionString.name]["ConnectionString"] = $cleansedConnectionString
|
|
}
|
|
}
|
|
catch {
|
|
|
|
$connectionStringDetails["Error"] = $_.Exception.ToString()
|
|
}
|
|
|
|
$connectionStringDictionary.Add("ConnectionStrings", $connectionStringDetails)
|
|
|
|
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Provider Complete"
|
|
$providerStopWatch.Stop()
|
|
|
|
return $connectionStringDictionary
|
|
} |