powershell out-file如何摆脱每一行的额外空间

时间:2016-11-24 00:54:54

标签: powershell file-io removing-whitespace

我运行此命令,我在names.txt文件中获取所有计算机主机名。 文件中的每个主机名都在一个单独的行上,但每个主机名后面都有空格,这在我尝试读取此文件时会导致问题。如何在不获取每行空格的情况下输出到此文件?

{"param1":"aaa","param2":"bbb","param3":"ccc"}

3 个答案:

答案 0 :(得分:6)

您遇到的问题是,您不仅拥有名称,还有包含属性' name'的对象,而且您还遇到Out-File运行复杂对象的问题在将它们发送到文件之前进行格式化。

要解决这两个问题,请将名称扩展为仅文字,通常使用Set-Content代替:

Get-ADComputer -filter * | Select-Object -ExpandProperty Name | Sort-Object | Set-Content C:\temp\names.txt 

或简称

Get-ADComputer -filter * | Select -Expand Name | Sort | sc C:\temp\names.txt 

(Get-ADComputer -filter *).Name | sort | sc C:\temp\names.txt 

答案 1 :(得分:0)

管道通过它应该工作(在管道到外部文件之前):

编辑:管道% { $_.name }应将@ {name = VALUE}转换为VALUE:

 % { $_ -replace ' +$','' } | % { $_.name }

像这样:

Get-ADComputer -Filter * | Select-Object -property name | Sort-Object -Property name | % { $_ -replace ' +$','' } | % { $_.name } | out-file -filepath C:\temp\names.txt

答案 2 :(得分:0)

expandproperty应该摆脱@()

Get-ADComputer -Filter * | sort Name | Select -expandproperty Name | %{ $_.TrimEnd(" ") } | out-file -filepath C:\temp\names

未经测试没有AD @ home