我运行此命令,我在names.txt文件中获取所有计算机主机名。 文件中的每个主机名都在一个单独的行上,但每个主机名后面都有空格,这在我尝试读取此文件时会导致问题。如何在不获取每行空格的情况下输出到此文件?
{"param1":"aaa","param2":"bbb","param3":"ccc"}
答案 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