如何在没有异常的情况下使用PowerShell检查节点是否存在?

时间:2012-10-23 13:06:07

标签: powershell powershell-v2.0

我正在尝试检查特定节点是否存在,如下所示。

在我的配置文件中有一个名为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 个答案:

答案 0 :(得分:9)

您可以尝试使用SelectSingleNode方法:

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

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

答案 1 :(得分:4)

为什么你不能做这样的事情:

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

答案 2 :(得分:3)

你也可以使用' 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
}