Как проверить, существует ли узел или нет с помощью powershell без получения исключения?

Я пытаюсь проверить, существует ли конкретный узел или нет, как показано ниже.

в моем файле конфигурации есть узел с именем client, он может быть доступен или недоступен.

если он недоступен, я должен добавить его.

    $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) 

    }

условие, которое я проверяю, может возвращать массив.

Я хотел бы проверить, доступен ли клиентский узел раньше или нет?

3 ответов


почему вы не можете просто сделать что-то вроде:

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

вы можете попробовать метод SelectSingleNode:

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

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

вы также можете использовать 'count' как логическое

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
}