2

I am having issues with regex in powershell. I want it to read the file and set a variable with a counter next to it to the value of the location. the number afterwards is how long it takes for the program to open.

If you have a better idea for this, please let me know.

here's the section that isn't working:

$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
    }
}

and 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

1 Answer 1

3

Your file is essentially a CSV with no headers, so why not treat it as such?

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

Now $programs is an array of objects, each with a .Program property and .ProgramCount property.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.