簡體   English   中英

來自變量和超鏈接的電子郵件值

[英]Email Value From Variable & Hyperlink

在PowerShell中,我知道如何發送基本電子郵件。 但是,下面我的語法,我怎么會附加到電子郵件每個體$QueryName每個$RowCount和超鏈接添加到包含在價值$FPath\\$FormattedDate\\所以電子郵件的正文是這樣的:

$QueryName - $RowCount 

(或帶有實際數據)

Santa - 14
Mickey - 12
Mars - 2

這是我當前的PS腳本

Function Execute-SQLquery {
param ($QueryName, $QueryString)

$server = "Server"
$database = "DB1"
$FPath = "C:\Testing"

#Setting additional variables
$extension = ".csv" 
$date = Get-Date -f 'MM.dd.yy'
$FormattedDate = Get-Date -f 'MM.dd.yy'

$connectionTemplate = "Data Source={0};Integrated Security=SSPI;Initial Catalog={1};"
$connectionString = [string]::Format($connectionTemplate, $server, $database)
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString

$command = New-Object System.Data.SqlClient.SqlCommand
$command.CommandText = $QueryString
$command.Connection = $connection

$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $command
$DataSet = New-Object System.Data.DataSet
$rowCount = $SqlAdapter.Fill($DataSet)

if(!(Test-Path -path "$FPath\$FormattedDate\")){New-Item "$FPath\$FormattedDate\" -type directory}

if ($rowCount -gt 0)
{
    if ($QueryName -eq "Santa")
    {
        $extractFile = "C:\Testing\TemplateFiles\Santa.csv"
        [System.IO.Directory]::CreateDirectory("$FPath\$FormattedDate\Santa\")
        Write-Host $rowCount -fore Red
        $dirName = "$FPath\$FormattedDate\Santa\"
        $filename = [IO.Path]::GetFileNameWithoutExtension($extractFile) + "_$date" + [IO.Path]::GetExtension($extractFile)
        $extractFile = Join-Path $dirname $filename
    }
    if ($QueryName -eq "Mickey")
    {
        $extractFile = "C:\Testing\TemplateFiles\Mickey.csv"
        [System.IO.Directory]::CreateDirectory("$FPath\$FormattedDate\Mickey\")
        Write-Host $rowCount -fore Red
        $dirName = "$FPath\$FormattedDate\Mickey\"
        $filename = [IO.Path]::GetFileNameWithoutExtension($extractFile) + "_$date" + [IO.Path]::GetExtension($extractFile)
        $extractFile = Join-Path $dirname $filename
    }
    if ($QueryName -eq "Mars")
    {
        $extractFile = "C:\Testing\TemplateFiles\Mickey\Mars.csv"
        [System.IO.Directory]::CreateDirectory("$FPath\$FormattedDate\Mars\")
        Write-Host $rowCount -fore Red
        $dirName = "$FPath\$FormattedDate\Mars\"
        $filename = [IO.Path]::GetFileNameWithoutExtension($extractFile) + "_$date" + [IO.Path]::GetExtension($extractFile)
        $extractFile = Join-Path $dirname $filename
    }
    $DataSet.Tables[0] | Export-Csv $extractFile -NoTypeInformation
} 
$connection.Close()
}

首先,由於基於$QueryName更改的唯一$QueryName是直接引用$QueryName$extractFile的值,所以最好不要重復整個塊。

對於郵件,可以使用Send-MailMessage

要添加到本地文件資源的鏈接,請使用file:///方案前綴,並將所有反斜杠( \\ )更改為正斜杠( / ),即。 file:///C:/Document/Path.ext ,或在您的示例中"file:///$("$FPath\\$FormattedDate" -replace '\\','/')"

Function Execute-SQLquery {
    param ($QueryName, $QueryString)

    # up to this point no change is required

    if ($rowCount -gt 0)
    {
        $extractFile = switch($QueryName){
            "Santa"  { "C:\Testing\TemplateFiles\Santa.csv" }
            "Mickey" { "C:\Testing\TemplateFiles\Mickey.csv" }
            "Mars"   { "C:\Testing\TemplateFiles\Mars\Mickey.csv" }
            default  { throw "Illegal QueryName" }
        }

        [System.IO.Directory]::CreateDirectory("$FPath\$FormattedDate\$QueryName\")
        Write-Host $rowCount -fore Red
        $dirName = "$FPath\$FormattedDate\$QueryName\"
        $filename = [IO.Path]::GetFileNameWithoutExtension($extractFile) + "_$date" + [IO.Path]::GetExtension($extractFile)
        $extractFile = Join-Path $dirname $filename

        $DataSet.Tables[0] | Export-Csv $extractFile -NoTypeInformation

        $EmailBody = @'
Here are the results:

{0} - {1}

Find the documents <a href="file:///{2}">here</a>
'@ -f $QueryName,$rowCount,$("$FPath\$FormattedDate" -replace '\','/')

        Send-MailMessage -From "me@company.example" -To "you@company.example" -Body $EmailBody -BodyAsHtml:$true -Subject "Data extracted!" -SmtpServer "your.mail.server.company.example"
    } 
    $connection.Close()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM