2012-10-23 6 views
6

Ich versuche zu überprüfen, ob ein bestimmter Knoten existiert oder nicht wie folgt.Wie überprüft man, ob ein Knoten existiert oder nicht Powershell verwendet, ohne eine Ausnahme zu bekommen?

In meiner Konfigurationsdatei gibt es einen Knoten mit dem Namen client, möglicherweise oder nicht verfügbar.

Wenn es nicht verfügbar ist, muss ich es hinzufügen.

$xmldata = [xml](Get-Content $webConfig)  

     $xpath="//configuration/system.serviceModel"  
     $FullSearchStr= Select-XML -XML $xmldata -XPath $xpath 

If ($FullSearchStr -ne $null) { 

     #Add client node 
     $client = $xmldata.CreateElement('Client') 
     $client.set_InnerXML("$ClientNode") 
     $xmldata.configuration."system.serviceModel".AppendChild($client) 
     $xmldata.Save($webConfig) 

    } 

Die Bedingung, die ich überprüfe, kann Array zurückgeben.

ich möchte überprüfen, ob der Client-Knoten vor oder nicht verfügbar?

Antwort

4

Warum kann man nicht einfach so etwas wie:

$xmldata = [xml](Get-Content $webConfig)  
$FullSearchStr = $xmldata.configuration.'system.serviceModel'  
8

können Sie die SelectSingleNode Methode versuchen:

$client = $xmldata.SelectSingleNode('//configuration/system.serviceModel/Client') 

if(-not $client) 
{ 
    $client = $xmldata.CreateElement('Client') 
    ... 
} 
+0

Die Bedingung ist auch dann erfolgreich, wenn der Knoten 'client' bereits vorhanden ist – Samselvaprabu

+0

Wenn der xpath als Variable übergeben wird $ xpath = '// co nfiguration/system.serviceModel/client '\t \t $ client = $ xmldata.SelectSingleNode ($ xpath) es schlägt fehl, aber wenn ich den xpath direkt überlasse, dann funktioniert es gut. Sonderlogik !!! Was vermisse ich MVP? – Samselvaprabu

2

Sie auch 'count' wie ein boolean

verwenden können
if ($xmldata.SelectSingleNode('//configuration/system.serviceModel/Client').Count) 
{ 
The count is 1 or more, so it exists 
} 
else 
{ 
The count is 0, so it doesn't exists 
} 
+0

Das muss verpackt werden, um die Zählung zu erhalten. 'if (@ ($ xmldata.SelectSingleNode ('// configuration/system.serviceModel/Client')). Count -gt 0)' – StingyJack

Verwandte Themen