SQL-запрос с использованием столбца CSV и электронной почты из другого столбца

#sql #powershell #csv

#sql #powershell #csv

Вопрос:

То, что я пытаюсь сделать, это запросить базу данных SQL Server с помощью нескольких запросов, а затем отправить результаты по электронной почте нужным людям.

До сих пор мне удавалось создать достаточно скрипта, который будет запрашивать базу данных, создавать новый csv с результатами и отправлять все результаты по электронной почте на одну учетную запись. Но я не понимаю, как вставить запросы из столбца A основного csv и отправить результаты этих запросов по электронной почте в столбец B в той же строке.

Вот что у меня есть до сих пор:

 # Database info
$script:dataSource = 'serverSQLEXPRESS'
$script:database = 'DBName'

# Function to get data from SQL Server
function Get-SQLData {
    param($Query)
    $connectionString = "Server=$dataSource;Database=$database;Integrated Security=SSPI;"
    $connection = New-Object –TypeName System.Data.SqlClient.SqlConnection
    $connection.ConnectionString = $connectionString
    $connection.Open()
    
    $command = $connection.CreateCommand()
    $command.CommandText = $Query
    $reader = $command.ExecuteReader()
    $table = New-Object –TypeName 'System.Data.DataTable'
    $table.Load($reader)
    
    $connection.Close()
    
    return $Table
}

# Define the SQL query
$Query = @'
select Phones.ContactName,Phones.PhoneNumber,PhoneListNames.ItemName
from Phones
join PhoneLists on Phones.PhoneNumber = PhoneLists.ItemName
join PhoneListNames on PhoneLists.ListID = PhoneListNames.ListID
'@

# Run the SQL query
$Results = Get-SQLData $Query

# Export to Csv
$Results | Export-Csv -Path .testaudit.csv -NoTypeInformation
    
# Email params
$EmailParams = @{
    To         = 'email'
    From       = 'email'
    Smtpserver = 'smtp'
    Subject    = "Audit"
}

# Html CSS style
$Style = @"
<style>
table { 
    border-collapse: collapse;
}
td, th { 
    border: 1px solid #ddd;
    padding: 8px;
}
th {
    padding-top: 12px;
    padding-bottom: 12px;
    text-align: left;
    background-color: #4286f4;
    color: white;
}
</style>
"@

# If results are returned
If ($Results.count -ne 0) {

    # Convert results into html format
    $Html = $Results |
        ConvertTo-Html –Property 'ContactName','PhoneNumber','Itemname' –Head $style –Body "<h2>Phone numbers in list</h2>" –CssUri "http://www.w3schools.com/lib/w3.css"  | 
        Out-String

    # Send the email
    Send-MailMessage @EmailParams –Body $Html –BodyAsHtml
}