我试图使用第一个方法从文件中拆分数据:冒号。这不是一个问题,除了我的文件有一个数据字段的部分,其中包含xml数据,这使得拆分不起作用,因为它试图拆分作为xml数据一部分的每一行。我如何拆分这一行,使其将所有xml数据保留在Value对象中?
mcData.txt样本数据
mcDatQFC:Service Disc Cache
mcConfigFolder:C:\Configs
mcDatQFC:Service Disc Cache2
mcDatQFCProv:Simple Service Registry
mcDatQFCProviderName:Simple Service Registry Name
queuethreadsxml:<?xml version='1.0' standalone='yes'?>
<mcQueueThreads
xmlns='http://xxxx.org/mcQueueThreads.xsd'>
<QUEUE_THREADS>
<THREAD_ID>1</THREAD_ID>
<ENVIRONMENT_INFO_INDEX>3</ENVIRONMENT_INFO_INDEX>
<DESCRIPTION>GPC</DESCRIPTION>
<CHANNEL>CM.D.2</CHANNEL>
<HOST_NAME>myhostname.xxx-cert-ibm-mq.mydomain.com</HOST_NAME>
<PORT_NUMBER>2</PORT_NUMBER>
</QUEUE_THREADS>
</mcQueueThreads>
以下是我的当前代码:
$mcContent = Get-Content "C:\Temp\mcData.txt"
$FinalMcObj = $mcContent | % {
$Delimited = $_ -split -split ':',2
[PSCustomObject]@{
Name = $Delimited[0]
Value = $Delimited[1]
}
}
return $FinalConsulObj
1条答案
按热度按时间kyxcudwk1#
queuethreadsxml
的XML值跨越了 * 多个 * 行。Get-Content
的-Raw
开关读取输入文件 * 作为一个整体 *,作为一个 * 单个,多行字符串 *。(...)
)作为传递给-split
运算符的regex的一部分,会导致它捕获的任何内容都 * 包含 * 在输出标记数组中。:
分隔的名称-值对的 value(该值可能跨越多行),输出标记的 pairs 分别构成名称和值。注意事项:
<
开头的行结束了一个XML文档,该文档的开头在字段名后的:
之后的前一行。:
沿着关联值)。