2016-11-24 1 views
0

Ich führe diesen Befehl und ich bekomme alle Computer-Hostnamen in der Datei names.txt. Jeder Hostname in der Datei befindet sich in einer separaten Zeile, aber auf jeden Hostnamen folgen Leerzeichen, die ein Problem verursachen, wenn ich versuche, diese Datei zu lesen. Wie kann ich in diese Datei ausgeben, ohne die Leerstellen in jeder Zeile zu erhalten?Powershell-out-Datei, wie zusätzliche Leerzeichen in jeder Zeile loszuwerden

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

Antwort

0

es durch diese Rohrleitungen funktionieren sollte (vor Rohrleitungen an die out-Datei):

EDIT: Piping durch % { $_.name } sollte @ umwandeln {name = WERT} VALUE:

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

So:

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

nicht funktioniert. .get etwas wie @ {Name = AWS-TESTSERVER1} anstelle von AWS-TESTSEVER1 – ikask

+0

Ich denke, das sollte d o der Trick. Es gibt eine Hashtabelle zurück, wo 'name = VALUE' ist, also kannst du foreach machen und den Schlüssel auswählen:'% {$ _. Name} ' – anthonybell

+0

Ich denke, die Regex ist falsch. Probieren Sie stattdessen '\ s + $'. – Moerwald

0

expandprop erty sollte

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

des @() loszuwerden Ungeprüfte Hause kein AD @

3

Sie haben das Problem, dass Sie gerade keine Namen haben, können Sie Objekte mit der Eigenschaft ‚Name‘, und Sie haben auch das Problem, dass Out-File komplexe Objekte durch eine Art von Formatierung vor dem Senden an die Datei ausgeführt wird.

beide zu beheben, erweitern Sie den Namen nur Text aus, und Set-Content Regel statt:

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

oder in Kurzform

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

oder

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

Danke für die Aufteilung der Kurzformen. Ich wusste nicht, dass der Punktoperator der selbe ist wie select-object! – LavaHot

Verwandte Themen