简体   繁体   中英

powershell out-file how to rid of extra spaces on each line

I run this command and I get all computer hostnames in the names.txt file. Each hostname in the file is on a separate line, but every hostname is followed with white spaces which cause an issue when I try to read this file. How can I output to this file without getting the white spaces on each line?

Get-ADComputer -Filter * | Select-Object -property name | Sort-Object -Property name | out-file -filepath C:\temp\names.txt  

You have the problem that you don't just have names, you have objects with the property 'name', and you also have the problem that Out-File runs complex objects through some kind of formatting before sending them to the file.

To fix both, expand the name out to just text, and generally use Set-Content instead:

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

or in short form

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

or

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

Piping it through this should work (before piping to the out-file):

EDIT : Piping through % { $_.name } should convert @{name=VALUE} to VALUE:

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

Like this:

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

expandproperty should get rid of the @()

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

Untested no AD@home

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM