您好我正在尝试使用powershell
在XML文件中查询Displayname<DeploymentConfiguration PackageId="dce78f0d-d8d4-4a89-9f5d-c37fbf95ee7a" DisplayName="Beyond-Compare-3-3-8" IgnorableNamespaces="" xmlns="http://schemas.microsoft.com/appv/2010/deploymentconfiguration">
我确实尝试了
$Xml = Select-Xml -Path "C:\temp\Beyond-Compare-3-3-8_DeploymentConfig.xml" -Namespace $Namespace -XPath "DisplayName="
我收到错误
Select-Xml:无法验证参数&#39;命名空间&#39;的参数。参数为null或空。提供一个参数 不为null或为空,然后再次尝试该命令。 在行:1字符:191 + ... l&#34; -Namespace $ Namespace -XPath&#34; DisplayName =&#34; + ~~~~~~~~~~ + CategoryInfo:InvalidData:(:) [Select-Xml],ParameterBindingValidationException + FullyQualifiedErrorId:ParameterArgumentValidationError,Microsoft.PowerShell.Commands.SelectXmlCommand
答案 0 :(得分:1)
首先,由于节点未关闭,因此您的xml无效。这是一个有效的版本:
<DeploymentConfiguration PackageId="dce78f0d-d8d4-4a89-9f5d-c37fbf95ee7a" DisplayName="Beyond-Compare-3-3-8" IgnorableNamespaces="" xmlns="http://schemas.microsoft.com/appv/2010/deploymentconfiguration"/>
现在在powershell中:
[xml]$xml = Get-content c:\path\xmlFile.xml
$DisplayName= $xml.DeploymentConfiguration.Displayname
答案 1 :(得分:0)
使用相同的方法,您需要注册映射到默认命名空间URI的前缀,将映射作为-Namespace
参数传递,并在XPath中使用此示例中的已注册前缀 - ns
。您尝试的XPath表达式也无效:
$Namespace = @{ ns = 'http://schemas.microsoft.com/appv/2010/deploymentconfiguration'; };
$Xml = Select-Xml -Path "C:\temp\Beyond-Compare-3-3-8_DeploymentConfig.xml" -Namespace $Namespace -XPath "//ns:DeploymentConfiguration/@DisplayName"