Powershell和正则表达式变量

时间:2016-10-31 14:32:10

标签: regex powershell

我在powershell中遇到了正则表达式的问题。我希望它读取文件并将一个带有计数器的变量设置为该位置的值。之后的数字是程序打开所需的时间。

如果你对此有更好的了解,请告诉我。

这里是没有工作的部分:

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

和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 个答案:

答案 0 :(得分:3)

您的文件本质上是一个没有标题的CSV,为什么不这样处理呢?

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

现在$programs是一个对象数组,每个对象都有.Program属性和.ProgramCount属性。