Homer123 Geschrieben 20. Januar 2011 Geschrieben 20. Januar 2011 Hallo zusammen, ich habe folgendes Problem. Ich habe eine txt-Datei, in welcher in jeder Zeile title=' ip-adresse' und host= Servername steht. In jeder Zeile ist dann natürlich eine unterschiedliche Ip-adresse und ein unterschiedlicher Servername. Zusätzlich dazu stehen in jeder Zeile noch weitere andere Informationen, die nicht benötigt werden. Ist es mit Hilfe der Powershell möglich nur bestimmte Passagen eines Strings ausgeben zu lassen? Also den Rest quasi auszuschneiden ( habe select-string ausprobiert, ohne jedoch das gewünschte Ergebnis erzielen zu können). Vielen danke schonmal. Lg homer123 Zitieren
elyon Geschrieben 20. Januar 2011 Geschrieben 20. Januar 2011 Eventuell über [system.String]::Substring(intStart, intChars). Zitieren
Homer123 Geschrieben 20. Januar 2011 Autor Geschrieben 20. Januar 2011 könntest du das vielleicht ein bisschen ausführen? das hilft mir so nicht wirklich weiter... Zitieren
elyon Geschrieben 20. Januar 2011 Geschrieben 20. Januar 2011 Hallo Homer123, angenommen man hat diese Textdatei: title=' 10.204.12.31' host= SERVER001 title=' 10.204.12.32' host= SERVER002 title=' 10.204.12.33' host= SERVER003 Dann könnte man die IP und den Servernamen über folgenden Schnipsel auslesen: $txtFile = "C:\test.txt" #Definiere den Speicherort der Textdatei $txtContent = Get-Content $txtFile #Lese den Inhalt der Textdatei ein Foreach($row in $txtContent) { #Gehe jede Zeile durch $ip = $row.Substring(8,12) #IP steht an 8. Position und hat 12 Zeichen $servername = $row.Substring(32) #Servername steht ab 32. Position bis zum Ende } Voraussetzung hierbei ist, dass die Felder immer die gleiche Anzahl an Zeichen haben. Wenn dem nicht so ist, müsste man vorher z.B. über IndexOf die Position eines Trennzeichens ermitteln. Hilft dir das etwas weiter? Zitieren
Homer123 Geschrieben 21. Januar 2011 Autor Geschrieben 21. Januar 2011 danke schonmal für deine Antwort. Das ist schonmal ein Anfang. Allerdings habe ich genau das Problem , dass die Anzahl der Zeichen und die Stelle in der Zeile unterschiedlich ist. kannst du das vllt mit IndexOf näher erläutern? Zitieren
elyon Geschrieben 21. Januar 2011 Geschrieben 21. Januar 2011 (bearbeitet) Hallo Homer123, ich versuchs: Foreach($row in $txtContent) { #Gehe jede Zeile durch #$row: "title='10.2.12.31' host= SERVER01" $firstIndex = $row.IndexOf("'") #Gibt die Position des ersten Hochkommata zurück - hier: 6 $secondIndex = $row.IndexOf("'",$firstIndex + 1) #Gibt die Position des ZWEITEN Hochkommata zurück, da erst "ab hinter dem ersten Hochkommata" gesucht wird. - hier auch: 20 $ip = $row.Substring($firstIndex, $secondIndex) #Schneide den Text zwischen den beiden Hochkommata aus. } Diese Methode ist zwar vielleicht nicht die Beste, erfüllte jedoch stets meine Zwecke. Am besten probierst Du es einfach nochmal aus und gibst die Werte $firstIndex und $secondIndex aus. Wenn Dir das immer noch nicht weiterhilft, wäre es vielleicht sinnvoll, wenn du einen Ausschnitt deiner Textdatei (sinngemäß) postest. Bearbeitet 21. Januar 2011 von elyon Substring vergessen Zitieren
Homer123 Geschrieben 26. Januar 2011 Autor Geschrieben 26. Januar 2011 Hat mir sehr weitergeholfen , vielen Dank Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.