我在解析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
}
有什么想法吗?
现在有错误 您不能在空值表达式上调用方法。 在第6行char:5
获取内容:找不到路径'H:\ AppxManifest.xml',因为它不存在。 在第5行char:18
设法对以上错误进行排序
答案 0 :(得分:1)
我假设您要查找远程计算机(或者在本例中,当前计算机使用文件的UNC路径)的AppxManifest.xml
路径下的所有c:\ProgramData\App-V
文件,然后进行操作该XML文件以某种方式;也许要获取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
}
我将其分解为多行,以使您更容易了解正在发生的事情/尝试每一块。注意:我尚未测试代码本身。