#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
}