82 lines
2.4 KiB
PowerShell
82 lines
2.4 KiB
PowerShell
|
function Get-ProvidersFromTenantDatabase {
|
||
|
|
||
|
<#
|
||
|
.SYNOPSIS
|
||
|
Queries a tenant database for provider data
|
||
|
|
||
|
.DESCRIPTION
|
||
|
Queries a tenant database for provider data. Optionally returns only valid provider configuration. Objects returned as a PSObject array contains
|
||
|
ProviderType, ProviderName, and AssemblyInfo
|
||
|
|
||
|
.PARAMETER TenantConnectionString
|
||
|
The full connection string to a tenant database
|
||
|
|
||
|
.PARAMETER ValidOnly
|
||
|
When supplied filters out providers tied to deleted Item records, or those with ProviderType Unknown
|
||
|
|
||
|
.OUTPUTS
|
||
|
Returns objects hydrated from the JSON file.
|
||
|
#>
|
||
|
|
||
|
[CmdletBinding()]
|
||
|
[OutputType([System.Object[]])]
|
||
|
param(
|
||
|
[Parameter(Mandatory=$true)]
|
||
|
[string]$TenantConnectionString,
|
||
|
|
||
|
[Parameter(Mandatory=$false)]
|
||
|
[switch]$ValidOnly
|
||
|
)
|
||
|
|
||
|
$logLead = Get-LogLeadName
|
||
|
if (-NOT (Confirm-DatabaseAccess -connectionString $TenantConnectionString -InformationAction SilentlyContinue)) {
|
||
|
|
||
|
Write-Warning "$logLead : Could not connect to Tenant with connection string [$TenantConnectionString]. Verify your access and rerun"
|
||
|
return $null
|
||
|
}
|
||
|
|
||
|
$providerQuery = @"
|
||
|
SELECT pt.Name as ProviderType, p.Name as ProviderName, p.AssemblyInfo as ProviderAssemblyInfo
|
||
|
FROM core.provider p
|
||
|
INNER JOIN core.ProviderType pt on pt.ID = p.ProviderTypeID
|
||
|
INNER JOIN core.Item i on i.ParentId = p.ID
|
||
|
WHERE i.ItemType in ('Connector', 'Processor')
|
||
|
"@
|
||
|
|
||
|
if ($ValidOnly.IsPresent) {
|
||
|
|
||
|
Write-Verbose "$logLead : Appending query with filter to eliminate invalid providers"
|
||
|
$providerQuery += "`n`tAND i.Deleted = '0' AND pt.Name != 'Unused'"
|
||
|
}
|
||
|
|
||
|
$data = @()
|
||
|
try {
|
||
|
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection $TenantConnectionString
|
||
|
$sqlConnection.Open()
|
||
|
[System.Data.SqlClient.SqlCommand]$command = $sqlConnection.CreateCommand()
|
||
|
$command.CommandText = $providerQuery
|
||
|
$reader = $command.ExecuteReader()
|
||
|
|
||
|
while ($reader.Read()) {
|
||
|
|
||
|
$data += @{
|
||
|
ProviderType = $reader[0]
|
||
|
ProviderName = $reader[1]
|
||
|
AssemblyInfo = $reader[2]
|
||
|
}
|
||
|
}
|
||
|
} catch {
|
||
|
|
||
|
Write-Warning "$logLead : An unexpected exception occurred: $($_.Exception.Message)"
|
||
|
return $null
|
||
|
} finally {
|
||
|
|
||
|
if ($null -ne $sqlConnection) {
|
||
|
|
||
|
$sqlConnection.Dispose()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $data
|
||
|
}
|