如何从XML属性

时间:2016-07-26 01:56:36

标签: xml powershell

如果标题有点含糊,我道歉。我不确定我正在寻找的术语是什么。我目前正在将信息从XML导入PowerShell脚本。我尝试了两种方法,一种不返回任何数据,另一种方式带有额外的字符。它需要在Windows 7中使用PS v2。

如果我尝试以这种方式将信息放入变量中,则变量为空:

$applist = $UninstallXML.Uninstall.HP.App.Search

如果我尝试这种方式,我会得到正确的列表,但它带有额外的字符

$applist = $UninstallXML.Uninstall.HP.App | Select Search

回来......

@(Search=*Bing*)
@(Search=*Evernote*)
@(Search=*Energy*Star*)
etc...

如何删除其他所有内容,以便它只是搜索值列表?

更新:

如果它对任何事情都有帮助,那么这里就是我正在做的事情的全貌。

[xml]$UninstallXML = Get-Content "$dir\Files\Uninstall.xml"

$applist = $UninstallXML.Uninstall.HP.App | Select Search

ForEach ($prog in $applist) {

    $app = Get-WmiObject -Class Win32_Product | where { $_.Name -like "$prog" }

    If ($app.IdentifyingNumber -ne $null) {

        $index = [array]::IndexOf($applist,$prog)

        $name = $UninstallXML.Uninstall.HP.App[$index] | Select Name

        $logbox.Items.Add(" Uninstalled $($name)")
        start-process -filepath "msiexec.exe" -ArgumentList "/x $($app.IdentifyingNumber) /passive /norestart" -wait
        "   Uninstalled $($name)" >> $logfile

    } # End If

} # End ForEach

Get-WmiObject行没有找到任何内容,因为它有额外的信息,没有匹配的程序名,或者没有要检查的列表。

感谢。

2 个答案:

答案 0 :(得分:1)

看起来我得到了它... ...

$ applist = $ UninstallXML.Uninstall.HP.App |选择-expandproperty搜索

答案 1 :(得分:0)

$applist = ($UninstallXML.Uninstall.HP.App | Select Search).search