Powershell: zoeken in bepaald gedeelte van een bestand

Status
Niet open voor verdere reacties.

Wim1976

Nieuwe gebruiker
Lid geworden
20 jan 2012
Berichten
4
Ik zit met het volgende probleem. Ik wil uit een bestand dat ruwweg de volgende indeling heeft de naam van de computer achterhalen. Via select-string lukt dat niet goed, want dan krijg ik altijd alle namen te zien (ook die van de grafische kaart). Nu kan ik natuurlijk wel zeggen dat ik alleen de eerste, tweede of derde etc. wil. Maar vaak is niet bekend op welke positie de naam van de computer staat. Soms staat het bovenaan, maar het komt ook voor dat er eerst één of meerdere rubrieken aan voorafgaan. Wel staat het altijd onder de rubriek Computer. Ik heb geprobeerd door te werken met de toevoeging -context (waarbij ik eerst de regelnummers van Computer en Grafische kaart heb achterhaald). Maar dan kan ik vervolgens alleen maar een resultaat vinden in de regel dat als basis geldt voor -context (in dat geval de regel Computer). Weet iemand een oplossing(srichting)?

Computer
ID
Naam
Omschrijving
.....

Grafische kaart
Naam
Omschrijving
Driver
 
Heb het inmiddels opgelost met de volgende code:

- Via Get-Content eerst het bestand in een array geplaatst met elke regel opgeslagen in een afzonderlijk index-nummer.
- Vervolgens eerst de kop zoeken met Select-String
- de regelnummer hiervan achterhalen
- vervolgens de array die via Get-Content is verkregen regel voor regel aflopen
- de eerste match is het nummer van de array-index die ik zocht.
- Vervolgens het verkregen nummer gebruiken om de string uit de array in te lezen, want deze is dan gelijk aan het indexnummer van de array waar mijn resultaat staat.

Code:
$gpuz_data = Get-Content E:\Performance\info.txt
$start = Select-String -Path E:\Performance\info.txt -Pattern "Processors Information"
[int32]$i = $start.linenumber
do{
  $i += 1
  if ($gpuz_data[$i] -ne $null){
    $t = $gpuz_data[$i] -match "Name"
  }
}
while (!$t)
$processor = $gpuz_data[$i]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan