Powershell自动使用新线

时间:2016-01-11 12:30:46

标签: xml powershell output autosize

我的剧本出现问题。

我从XML文件中抓取需要修改的路径。

$file = [xml](Get-Content "PATH\TO\XML.xml")

$file.here.is.my.attribute  | Format-Table -Wrap -AutoSize | out-file -filepath ".\PATHS.txt" -append 

Powershell在我的路径中间插入换行符,因为它很长(只需阅读有关buffersize的内容)。我试图将它保存为.XML文件而不是.TXT文件,但这对我没用。

任何解决方法的想法?

文件应如下所示:

Path1\Path\Path\path  
Path2\Path\Path\path  
Path3\Path\Path\path 

但看起来像是:

Path1\Path\Path\  
path  
Path1\Path\Path\  
path  
Path1\Path\Path\  
path

XML-Example:

<?xml version="1.0" encoding="utf-8"?>
<unattend>
  <servicing>
    <package>
      <assemblyIdentity/>
      <source location="HERE\IS\MY\PATH"/>
    </package>
    <package>
      <assemblyIdentity/>
      <source location="HERE\IS\ANOTHER\PATH"/>
    </package>
    <package>
      <assemblyIdentity/>
      <source location="HERE\IS\ANOTHER\PATH"/>
    </package>
  </servicing>
</unattend>

1 个答案:

答案 0 :(得分:1)

首先Format-Table仅用于控制台输出。试图使用除此之外的任何东西都会导致问题。给定样本XML,您可以使用点表示法来获取所有location

在您的示例中,您尝试输出具有location属性的对象数组。使用点表示法调用属性会从输出中删除该图层。

$xmlFile = [xml](Get-Content "PATH\TO\XML.xml")
$xmlFile.unattend.servicing.package.source.location | Set-Content ".\PATHS.txt" 

在这种情况下,我认为你实际上并不需要附加到文件中。但是,如果您确实在构建更大的文件,那么您可以在我的示例中使用Add-Content代替Set-Content

示例输出

HERE\IS\MY\PATH
HERE\IS\ANOTHER\PATH
HERE\IS\ANOTHER\PATH