2017-10-14 38 views
1

我想要寫在PowerShell中查詢這叫做(xml_multiple)的XML列檢查的屬性值,如果它存在(否則爲0)返回布爾值1,並將其傳遞給變量和調用sendemail功能。 根據變量電子郵件的價值將被髮送。 1-爲成功 0-爲失敗PowerShell腳本來查詢XML標籤屬性數據庫

我是新來的PowerShell和不太擅長它。我接受建議,只要它works.Thanks提前。檢查下面的代碼和XML

$dataSource = "DB.abc.com" 
$connectionString = "Server=$dataSource;uid=$user; pwd=$pwd;Database=$database;Integrated Security=False;" 
$connection = New-Object System.Data.SqlClient.SqlConnection 
$connection.ConnectionString = $connectionString 
$connection.Open() 
$query = 「 」 <#here i want to write my query#> 
$command = $connection.CreateCommand() 
$command.CommandText = $query 
$result = $command.ExecuteReader() 
$table = new-object 「System.Data.DataTable」 
$table.Load($result) 
$connection.Close() 

function sendemail() 
{ 

$Outlook = New-Object -ComObject Outlook.Application 
$Mail = $Outlook.CreateItem(0) 
$Mail.To = "[email protected]" 
if ($send -eq 1) <#here i want to pass value from db#> 
    { 
    $Mail.Subject = "Process Successful" 
    $Mail.Body ="Success`n`nThank you" 
    } 
else 
    { 
    $Mail.Subject = "Process Unsuccessful" 
    $Mail.Body ="Unsuccess`n`nPlease look into it" 
    } 
$Mail.Send() 
} 

注:這是XML,如果任何XML有一個屬性開始的某一天=「1」返回1,否則爲0(會有一天只有一條記錄這將有這樣的屬性,所以我們可以使用過濾器在查詢中爲)

<jobparameters start="1"> 
<work>1 
</work> 
</jobparameters> 

P 

租賃給點建議

回答

1

它可以直接獲取所需的結果從SQL Server:

DECLARE @x XML = ' 
<jobparameters start="1"> 
<work>1 
</work> 
</jobparameters>'; 
DECLARE @t TABLE (xml_multiple XML); 
INSERT @t(xml_multiple) VALUES(@x); 
SELECT c.value('@start','INT') send 
FROM @t 
OUTER APPLY xml_multiple.nodes('/jobparameters')x(c);