tharasr

PowerShell Script: Ausgabe soll keinen Pfad angeben

Hallo liebe Leute,
ich bin noch sehr neu im Umgang mit PowerShell und habe ein kleines Problem bzw. eine kleine Anpassung vorzunehmen.
Ich schreibe ein Script, welches eine bestimmte .txt Datei falls vorhanden löschen soll.
Anschließend eine ausführbare Datei starten soll, welche dann eine neue .txt Datei erzeugt mit Inhalten (logischerweise haha).
Ich möchte jetzt nur bestimmte Zeilen aus dieser neu erzeugten .txt Datei Ausgeben.
Es sollen alle Zeilen, die mit einem 'S' anfangen und worauf hinten dran noch eine Zahlenfolge folgt, ausgegeben werden.
Die Zahlenfolge steht immer in "".
Die Information mit der Zahlenfolge ist wichtig, da in der Datei auch Zeilen mit S anfangen die unwichtig sind hinter denen keine Zahlenfolge steht.

Der Inhalt dieser neu erzeugten .txt sieht zum Beispiel folgendermaßen aus:

Y
S
X
S "Zahlenfolge1"

Y
S
X
S "Zahlenfolge2"

Y
S
X
S "Zahlengolge3"

Ich möchte jetzt eben in meiner Ausgabe nur drei Zeilen haben, die mit 'S' anfangen und hinten dran noch eine "Zahlenfolge" haben.
Bisher habe ich das hier.

Write-Host (Select-String -Path $txt_Datei -Pattern 'S "')  

Das klappt auch, allerdings wird jedes Mal der Pfad vorher noch mit angegeben, der nicht gerade kurz ist und ich würde es gerne so haben, dass jede Zeile die ausgegeben wird alleine in einer Zeile steht. Also die Formatierung habe ich auch noch nicht ganz hinbekommen.

Insgesamt sieht mein Script so aus, falls das relevant sein sollte:
$txt_Datei = "Absoluter Pfad"  
#löschen der möglicherweise vorhandenen txt Datei
IF (Test-Path $txt_Datei) 
{
Remove-Item -Path $txt_Datei
Write-Host "Vorhandene Datei wurde gelöscht."  
}

#aufrufen der ausführbaren Datei, die wiederum neue txt Datei erstellt
Start-Process -FilePath "Ist in absoluten Pfad angegeben"  

#Zeilen aus neuer txt Datei ausgeben
Write-Host (Select-String -Path $txt_Datei -Pattern 'S "')  

Kann mir jemand sagen, wie ich in meiner Ausgabe nicht wiederholt meinen Pfad mit ausgebe?
Und ich es am besten noch formatieren kann, weil "| Format-Table" hat nicht funktioniert.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 2935252448

Url: https://administrator.de/forum/powershell-script-ausgabe-soll-keinen-pfad-angeben-2935252448.html

Ausgedruckt am: 19.05.2025 um 19:05 Uhr

em-pie
em-pie 30.05.2022 um 08:52:29 Uhr
Goto Top
Moin,

so wird es klappen:
$file = 'C:\test\123.txt'  
write-Host @(Get-Content -Path $file | Where-Object { $_ -like 'S "*' })  

Inhalt meiner 123.txt:
Y
S
X
S "001122"

Y
S
X
S "112233"

Y
S
X
S "998877"

Ergebnis:
S "001122" S "112233" S "998877"  
colinardo
Lösung colinardo 30.05.2022 aktualisiert um 09:50:31 Uhr
Goto Top
Servus @THaRaSR, willkommen auf Administrator.de!

Und wenn du bei Select-String bleiben willst einfach die "Line" Property expandieren, denn Select-String liefert wie so oft in Powershell ein Object und keinen String als Ergebnis.
Select-String $txt_Datei -Pattern '^S "' | select -Expand Line  
Mittels Get-Content lässt sich das auch ohne ein where-object noch etwas vereinfachen
(Get-Content $txt_Datei) -match '^S "'  

Grüße Uwe
THaRaSR
THaRaSR 30.05.2022 um 10:46:10 Uhr
Goto Top
Vielen lieben Dank, ich habe viel zu kompliziert gedacht merke ich gerade ^^
THaRaSR
THaRaSR 30.05.2022 um 10:47:59 Uhr
Goto Top
Dankeschön, war schon Mal ein Anfang für mich, allerdings hat mir die Formatierung noch nicht ganz gefallen, deshalb dann doch einen Anderen Vorschlag als Lösung genommen. Aber danke nochmal face-smile