Set-Location 'C:\Users\m.nielsen\desktop\Scripts\thales' $content = Get-Content -Raw -Path commands.cfg $matches = [regex]::Matches($content, 'define command *{.*?command_name *(?.*?)\n *command_line *(?.*?)\n}', [System.Text.RegularExpressions.RegexOptions]::Singleline) $commands = foreach($m in $matches) { Write-Output ([pscustomobject]@{ CommandName = $m.Groups['command_name'].Value CommandLine = $m.Groups['command_line'].Value }) } $services = foreach($file in (Get-Item .\hostgroup_*.cfg, .\serviceTemplates.cfg)) { $content = Get-Content -Raw $file $matches = [regex]::Matches($content, '{(?.*?)}', [System.Text.RegularExpressions.RegexOptions]::Singleline) foreach($m in $matches) { $hostgroup = [regex]::Match($m.Groups['content'].Value, 'hostgroup_name *(.*)').Groups[1].Value $hostname = [regex]::Match($m.Groups['content'].Value, 'host_name *(.*)').Groups[1].Value $servicedescription = [regex]::Match($m.Groups['content'].Value, 'service_description *(.*)').Groups[1].Value $servicename = [regex]::Match($m.Groups['content'].Value, 'service_name *(.*)').Groups[1].Value $checkcommand = [regex]::Match($m.Groups['content'].Value, 'check_command *(.*)').Groups[1].Value $use = [regex]::Match($m.Groups['content'].Value, 'use *(.*)').Groups[1].Value Write-Output ([pscustomobject]@{ Hostgroup = $hostgroup Hostname = $hostname CheckCommand = $checkcommand Use = $use ServiceName = $servicename ServiceDescription = $servicedescription File = $file.Name Content = $m.Groups['content'].Value }) } }