2017-10-14 66 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);