2016-10-31 3 views
2

Ich habe Probleme mit Regex in Powershell. Ich möchte, dass es die Datei liest und eine Variable mit einem Zähler daneben auf den Wert des Ortes setzt. Die Anzahl danach ist wie lange es dauert, bis das Programm geöffnet wird.Powershell und Regex Variablen

Wenn Sie eine bessere Idee dafür haben, lassen Sie es mich bitte wissen.

hier ist der Abschnitt, der nicht funktioniert:

$count = 1 
Get-Content programs.txt | ForEach-Object{ 
    Set-Variable -Name raw_program -Value $_  
    if ($raw_program -match '.+?(?=,)'){ 
     Set-Variable -Name $program_$count -Value $matches[1] 
     write-host "Result : $program_$count" 
     $count += 1 
    } 
} 

und programs.txt:

C:\Program Files (x86)\Telephony\CTI\bin\desktop.exe,7 
C:\Program Files (x86)\Cisco Systems\Cisco IP Communicator\communicatork9.exe,6 
C:\Program Files\Microsoft Office 15\root\office15\OUTLOOK.EXE,7 
~\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\CaseTemplateWPF,9 
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe,3 
C:\Program Files (x86)\Internet Explorer\iexplore.exe,6 

Antwort

3

Ihre Datei ist im Wesentlichen eine CSV ohne Header, also warum nicht sie als solche behandeln?

$programs = Import-Csv -Path programs.txt -Header Program,ProgramCount 

Jetzt $programs ist ein Array von Objekten, die jeweils mit einem .Program Eigentum und .ProgramCount Eigenschaft.