在PS脚本中找不到XML元素

时间:2012-12-19 18:20:08

标签: powershell xml-parsing

我正在尝试使用这个powershell脚本[https://gist.github.com/557222]来分析我的VS解决方案参考,因为我有冲突,但我不知道在哪里。

问题是它不起作用,因为这个错误:

ForEach-Object : Property 'HintPath' cannot be found on this object. Make sure that it exists.
At C:\bsi\Projects\Bsi.ManagementConsole\Branches\Tango58\Get-VSSolutionReferences.ps1:37 char:31
+                 ForEach-Object <<<<  {
    + CategoryInfo          : InvalidOperation: (.:OperatorToken) [ForEach-Object], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFoundStrict,Microsoft.PowerShell.Commands.ForEachObjectCommand

在某些情况下,XML似乎没有任何HintPath元素。如果我删除有问题的行,脚本运行正常。但是,它不提供我需要的最相关信息:HintPath。

所以,我需要的是在可能的情况下获得该信息。我的意思是,如果XML元素具有HintPath元素,我需要它,当它没有显示任何内容时。

我问这个因为我不知道Powershell,我尝试的努力并不重要,我不能按照我的意愿去做。

请问你能帮帮我吗?

1 个答案:

答案 0 :(得分:2)

注释掉行Set-StrictMode -Version Latest,因为当您尝试访问对象上的属性HintPath并且该属性不存在时,会导致错误。或者您可以将$_.HintPath上的检查修改为:

if (($_.psobject.Properties.Match('HintPath')) -ne $null -and $_.HintPath) {
    $RefPath = $ProjectRoot | Join-Path -ChildPath $_.HintPath
}

但是从我的简单测试中,您还需要在脚本的其他部分执行此操作,例如: SpecificVersion could not be found