2016-04-29 12 views
3

Ich bin ein Anfänger bei Powershell und versuche immer noch, Skripting zu lernen, stolpert aber über die Grundlagen. Ich habe eine Textdatei, die eine Liste von WebsitesPowerShell - Leerzeichen zwischen Wörtern aus der txt-Datei entfernen

Default Websites 
Power Shell 
Hello World 

ich die weißen Zwischenräume zwischen den Wörtern entfernen, müssen enthält, damit ich das Ergebnis unten bekommen

DefaultWebsites 
PowerShell 
HelloWorld 

Ich habe versucht, die Trim mit (‘ ') Befehl, aber es entfernt nicht die Leerstellen.

Hier ist mein Original-Skript, das alle weißen Leerzeichen am Anfang und Ende und alle Leerzeilen entfernt. Was muss ich dem Skript hinzufügen, um die Leerzeichen zwischen den Wörtern zu entfernen?

Get-WmiObject -Class IIsWebServerSetting -Namespace "root\microsoftiisv2" | Select ServerComment | Format-Table -HideTableHeaders | out-file c:\website.txt 
$b = Get-Content -Path C:\website.txt 
$b | ForEach {$_.TrimEnd()} | ? {$_.trim() -ne '' } > C:\website.txt 

Vielen Dank im Voraus. Ich schätze jede Hilfe.

Antwort

2

Ich würde mit diesem Ansatz gehen (wo der Held Replace-Funktion ist):

Get-WmiObject -Class IIsWebServerSetting -Namespace "root\microsoftiisv2" | Select ServerComment | Format-Table -HideTableHeaders | out-file c:\website.txt 
$b = Get-Content -Path C:\website.txt 
@(ForEach ($a in $b) {$a.Replace(' ', '')}) > C:\Website2.txt 
2

Sie können den -replace Befehl mit einem einfachen regulären Ausdruck:

-replace '\s' 

\ s alle Leerzeichen Zeichen übereinstimmen [\ r \ n \ t \ f]

Try this:

[System.IO.File]::WriteAllText(
     'C:\website.txt', 
     ([System.IO.File]::ReadAllText('C:\website.txt') -replace '\s') 
    ) 
+0

Vielen Dank für Ihre Antwort, aber Eduard Uta Lösung ist weniger kompliziert und besser für mein Skript, da es ein kleiner Teil eines größeren Skript ist. –