【问题标题】:obtaining information from xml file via power shell in an attempt to uninstall application通过 power shell 从 xml 文件中获取信息以尝试卸载应用程序
【发布时间】:2018-12-12 21:29:09
【问题描述】:

我在解析 xml 文件时遇到问题

<DisplayName>Remote_Take_Over_S1_0002</DisplayName>

我正在尝试从"C:\ProgramData\App-V\1BBEDDA5-595E-4CF7-834A-B282C4981469\0C71FE9F-F1C0-47F9-9518-E94898B6424F\AppxManifest.xml"获取以上信息

我知道如何或从哪里开始,但我已经走到了这一步。

            $ComputerName = $txb_hostname.Text

        $RemoteParentPath = Join-Path -Path "\\$ComputerName" -ChildPath 'c$\ProgramData\App-V'

        $RemoteManifestPaths = Get-ChildItem -Path $RemoteParentPath -Recurse -Filter 'AppxManifest.xml' | Select-Object -ExpandProperty FullName

        foreach ($manifestFile in $RemoteManifestPaths)
        {
             $xml = [xml](Get-Content -Path $manifestFile -Raw)
             $xml.SelectSingleNode('//*[local-name()="DisplayName"]/text()').Value 
             LogWrite $xml
        } 

有什么想法吗?

现在的错误 您不能在空值表达式上调用方法。 在 line:6 char:5

获取内容:找不到路径“H:\AppxManifest.xml”,因为它不存在。 在 line:5 char:18

设法对上述错误进行排序

【问题讨论】:

标签: xml powershell


【解决方案1】:

我假设您要查找远程计算机上 c:\ProgramData\App-V 路径下的所有 AppxManifest.xml 文件(或者在这种情况下,当前计算机使用文件的 UNC 路径),然后在某种方式;也许要获取DisplayName 值?

如果是这样,请尝试以下操作:

[string]$ComputerName = $env:COMPUTERNAME
[string]$RemoteParentPath = Join-Path -Path "\\$ComputerName" -ChildPath 'c$\ProgramData\App-V'
[string[]]$RemoteManifestPaths = Get-ChildItem -Path $RemoteParentPath -Recurse -Filter 'AppxManifest.xml' | Select-Object -ExpandProperty FullName
foreach ($manifestFile in $RemoteManifestPaths) {
    $xml = [xml](Get-Content -Path $manifestFile -Raw)
    $xml.SelectSingleNode('//DisplayName/text()').Value
}  

我已将其分解为多行,以便更容易理解正在发生的事情/尝试每一部分。注意:我没有测试过代码本身。

【讨论】:

  • 不断声明您不能在空值表达式上调用方法。在 line:6 char:5 Get-Content : 找不到路径“H:\AppxManifest.xml”,因为它不存在。在 line:5 char:18
  • 嗯,看起来我错过了 for 循环的左大括号(现已修复),但这并不能解释为什么它会使用你的 H 驱动器......你在修改这段代码吗在运行之前?
  • 啊抱歉 - 刚刚意识到我只返回文件名,而不是路径(转换为字符串...修改)
  • 我也不确定为什么它指向我的 h 驱动器脚本没有找到他们可能是因为我需要从我的 h 更改目录,当我在他们之前的东西上工作时我'明天检查,我发现大括号丢失了我明天检查代码,看看它是否运行
  • 这会自行带回文本,这正是我所寻找的。一旦它尝试使用 logwrite 将其写入文本框,它就会显示为空白。我想我现在应该调查一下,谢谢
猜你喜欢
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多