Guest User

tmg access rules parsing

a guest
Sep 3rd, 2013
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. cls
  2. $file = Get-Content "access.txt" | Out-String
  3.  
  4. #$regexStr = "Options for Scope (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):\r\n\r\n\tDHCP Standard Options :\r\n\tGeneral Option Values:\r\n\t(OptionId : (\d+) \r\n\tOption Value: \r\n\t\tNumber of Option Elements = \d+\r\t\tOption Element Type = \w\r\n\t\tOption Element Value = ([\r\n]+)\r\n)+"
  5. $regexStr = "\d+\) Name = [^\r\n]+\r\n +General\r\n +Name +=([^\r\n]+)\r\n +Description \(optional\) +=([^\r\n]*)\r\n +Type +=([^\r\n]+)\r\n +Evaluation order +=([^\r\n]+)\r\n" +
  6.     " +Enabled +=([^\r\n]+)\r\n +From\r\n +This rule applies to traffice from these sources +=([^\r\n]+)\r\n" +
  7.     " +To\r\n( +([^\r\n]+)\r\n){5}" +
  8.     " +Users\r\n[^\r\n=]+=([^\r\n]+)\r\n" +
  9.     " +Content Types\r\n( +([^\r\n]+)\r\n){2}" +
  10.     " +Protocols\r\n( +([^\r\n]+)\r\n){5}" +
  11.     " +Action\r\n( +([^\r\n]+)\r\n){4}" +
  12.     " +Schedule\r\n( +([^\r\n]+)\r\n){2}"
  13.    
  14.    
  15. $regex = [regex]::Matches($file, $regexStr, [System.Text.RegularExpressions.RegexOptions]::Multiline -bor [System.Text.RegularExpressions.RegexOptions]::IgnoreCase)
  16.  
  17. $objArr = @()
  18.  
  19. $regex | foreach {
  20.  
  21.     $To = [string]::Join(", ", ($_.Groups[7].Captures | where { $_ -match " +[^\r\n=]+=[^\r\n]+" } | foreach {$_.Value.Trim()}))
  22.     $ContType = [string]::Join(", ", ($_.Groups[10].Captures | where { $_ -match " +[^\r\n=]+=[^\r\n]+" } | foreach {$_.Value.Trim()}))
  23.     $Protocols = [string]::Join(", ", ($_.Groups[12].Captures | where { $_ -match " +[^\r\n=]+=[^\r\n]+" } | foreach {$_.Value.Trim()}))
  24.     $Action = [string]::Join(", ", ($_.Groups[14].Captures | where { $_ -match " +[^\r\n=]+=[^\r\n]+" } | foreach {$_.Value.Trim()}))
  25.     $Schedule = [string]::Join(", ", ($_.Groups[16].Captures | where { $_ -match " +[^\r\n=]+=[^\r\n]+" } | foreach {$_.Value.Trim()}))
  26.    
  27.     $obj = New-Object System.Object
  28.     $obj | Add-Member -Name "Name" -MemberType NoteProperty -Value $_.Groups[1].Value
  29.     $obj | Add-Member -Name "Description" -MemberType NoteProperty -Value $_.Groups[2].Value
  30.     $obj | Add-Member -Name "Type" -MemberType NoteProperty -Value $_.Groups[3].Value
  31.     $obj | Add-Member -Name "Order" -MemberType NoteProperty -Value $_.Groups[4].Value
  32.     $obj | Add-Member -Name "Enabled" -MemberType NoteProperty -Value $_.Groups[5].Value
  33.     $obj | Add-Member -Name "From" -MemberType NoteProperty -Value $_.Groups[6].Value
  34.     $obj | Add-Member -Name "To" -MemberType NoteProperty -Value $To
  35.     $obj | Add-Member -Name "Users" -MemberType NoteProperty -Value $_.Groups[9].Value
  36.     $obj | Add-Member -Name "ContType" -MemberType NoteProperty -Value $ContType
  37.     $obj | Add-Member -Name "Protocols" -MemberType NoteProperty -Value $Protocols
  38.     $obj | Add-Member -Name "Action" -MemberType NoteProperty -Value $Action
  39.     $obj | Add-Member -Name "$Schedule" -MemberType NoteProperty -Value $Action
  40.    
  41.     $objArr += $obj
  42.      
  43. }
  44. #$objArr | ft DiskAllocation
  45. $objArr | Export-Csv "TMG_Rules.csv" -Encoding UTF8 -Delimiter ";" -NoTypeInformation
Advertisement
Add Comment
Please, Sign In to add comment