我正在解析一個配置任務,並且需要獲取沒有「發送失敗的電子郵件」部分的所有任務。以下是xml任務的部分。讀取幾個相同類型的特定XML節點
<Settings>
<Tasks>
<Task ID="916360623" Name="name1" Active="0" NextEID="21" CacheNames="random">
<Schedules/>
<NextActions>
<NextAction DoIfSuccess="1" DoIfFailure="0" DoIfNoAction="0" DoAfter="Task" Type="Task" TaskID="545310265"/>
<NextAction DoIfSuccess="0" DoIfFailure="1" DoIfNoAction="0" DoAfter="Task" Type="Email" HostID="385322183" AddressTo="[email protected], [email protected]" Subject="[TaskName] - [TaskStatus]" Message="emailMessageFail"/>
<NextAction DoIfSuccess="1" DoIfFailure="0" DoIfNoAction="0" DoAfter="Task" Type="Email" HostID="385322183" AddressTo="[email protected], [email protected]" Subject="[TaskName] - [TaskStatus]" Message="emailMessageSuccess"/>
</NextActions>
</Task>
<Task ID="701754236" Name="Task2" Active="0" NextEID="21" CacheNames="random">
<NextActions>
<NextAction DoIfSuccess="1" DoIfFailure="0" DoIfNoAction="0" DoAfter="Task" Type="Task" TaskID="840519929"/>
<NextAction DoIfSuccess="0" DoIfFailure="1" DoIfNoAction="0" DoAfter="Task" Type="Email" HostID="385322183" AddressTo="[email protected], [email protected]" Subject="[TaskName] - [TaskStatus]" Message="emailMessage"/>
</NextActions>
</Task>
</Tasks>
</Settings>
我有一個PowerShell腳本,循環完成每項任務,每個<NextAction>
但是,它似乎並沒有成功地只取我想要的任務。得到沒有DoIfFailue="1"
和Type="Email"
的任務報告的最佳方式是什麼?
set-executionpolicy unrestricted
[xml]$config = Get-Content c:\path\config.xml
$allTasks = @()
foreach($task in $config.Settings.Tasks.task){
$taskID = $task.name
foreach($nextAction in $task.NextActions.NextAction){
if(($nextAction.DoIfFailure = "1") -AND ($nextAction.type = "Email")){
$address = $nextAction.addressto
$subject = $nextAction.subject
$message = $nextAction.message
$allTasks += @(New-Object -TypeName psobject -Property @{'ID' = $taskID; 'emailAddress' = $address; 'emailSubject' = $subject; 'emailMessage' = $message})
}
}
}
$allTasks | Export-Csv -Path c:\path\output.csv -notype
啊織補它。自從我開始工作以來已經有一段時間了。就是這樣。謝謝! – mhopkins321 2013-05-13 15:42:02
有相同的測試曾經'='在所有?我以爲他們總是'==':-) – 2013-05-13 16:16:07
@Graimer:當然,嘗試VB(或VB.NET)。 – Neolisk 2013-05-13 16:34:32