Как написать сценарий PowerShell для сравнения входного CSV-файла с выходом из SQL серверного запроса и запуска почты? - PullRequest
0 голосов
/ 05 мая 2020

[Основной входной файл csv] [1]] [1] [! [Введите описание изображения здесь] [2]] [2] [Sql результат запроса, в котором не может быть больше пользователей] [1]

[! [Введите здесь описание изображения] [3]] [3]

В приведенном ниже скрипте мне нужно сравнить вывод с входным файлом CSV, и если значения не совпадают , а затем отправить письмо. Если значения равны, то отправка почты выполняться не будет.

  param(
    $emailFrom = 'Reporting.Services@accenture.com',
    $emailTo = @("aditi.m.singh@accenture.com","s.ab.balakrishnan@accenture.com","rajeshbabu.ks@accenture.com"),
    $emailSubject = 'Sending the Attachment',
    $smtp = 'AMRINT.SMTP.ACCENTURE.COM',
    $Server = (Import-Csv -Path "D:\Scripts\input.csv").ComputerName ,
    $Adgroup = (Import-Csv -Path "D:\Scripts\inputAdGroup.csv").UserName ,
    $SQLDBName = 'ReportServer',
    $SQLQuery = @"
        SELECT Distinct
            RL.RoleName,
            USR.UserName
        FROM  
            Catalog C
            INNER JOIN Policies PL 
                    ON C.PolicyID = PL.PolicyID
            INNER JOIN PolicyUserRole PUR
                    ON PUR.PolicyID = PL.PolicyID
            INNER JOIN Users USR
                    ON PUR.UserID = USR.UserID
            INNER JOIN dbo.Roles RL
                    ON RL.RoleID = PUR.RoleID    
            WHERE RoleName = 'Content Manager' 
            ORDER BY USR.UserName    
"@
)

$emailSent =  if ($SQLQuery -eq $AdGroup) {write-host "there are no changes"} else
     {'@("aditi.m.singh@accenture.com","s.ab.balakrishnan@accenture.com","rajeshbabu.ks@accenture.com")'}

# This code connects to the SQL server and retrieves the data    
$SQLConnection = New-Object System.Data.SqlClient.SqlConnection    
$SqlConnection.ConnectionString = "Server = $Server; Database = $SQLDBName; Integrated Security=true;"    
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand    
$SqlCmd.CommandText = $SqlQuery    
$SqlCmd.Connection = $SqlConnection    
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter    
$SqlAdapter.SelectCommand = $SqlCmd    
$DataSet = New-Object System.Data.DataSet    
$SqlAdapter.Fill($DataSet)    
$SqlConnection.Close()               
$Style = "
<style>
    TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
    TH{border-width: 1px;padding: 3px;border-style: solid;border-color: black;}
    TD{border-width: 1px;padding: 3px;border-style: solid;border-color: black;}
</style>
"
$data = $DataSet.Tables[0]
$html = $data `
    | Select-Object -Property RoleName, UserName `
    |  ConvertTo-HTML -head $Style  `
            | Out-String

Send-MailMessage `
    -From $emailFrom `
    -To $emailTo `
    -Subject $emailSubject `
    -BodyAsHtml $html `
    -SmtpServer $smtp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...