-
Notifications
You must be signed in to change notification settings - Fork 1
/
ScreenOS Network Groups
33 lines (29 loc) · 1.25 KB
/
ScreenOS Network Groups
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$NetObjectGroups = @()
$items = @()
(Get-Content .\SCH-NS-FW-1_TECH.txt | Select-String '^set group address\s+\".+?\"\s+\".+?\"\s+add\s+') | ForEach-Object {
$i = $_
$GroupName = $i -replace '^set\s+group\s+address\s+".+?"\s+"(.+?)".*','$1'
$GroupName = $GroupName -replace '(\/|\\)','_'
$MemberName = $i -replace '^set\s+group\s+address\s+".+?"\s+".+?"\s+add\s+"(.+?)".*','$1'
$MemberName = $MemberName -replace '(\/|\\)','_'
$item = New-Object psobject
$item | Add-Member -MemberType NoteProperty -Name GroupName -Value $GroupName
$item | Add-Member -MemberType NoteProperty -Name MemberName -Value $MemberName
$items += $item
}
$Groups = @()
$unique = $items | Select-Object GroupName -Unique
$unique | foreach {
$uGroup = $items | Where-Object -Property GroupName -EQ -Value $_.GroupName
$prefix = @()
$uGroup | foreach {
$Member = $_.MemberName
$prefix = "$prefix$Member,"
}
$prefix = $prefix -replace ',$',''
$Group = New-Object psobject
$Group | Add-Member -MemberType NoteProperty -Name Name -Value $_.GroupName
$Group | Add-Member -MemberType NoteProperty -Name Objects -Value $prefix
$Groups += $Group
}
$Groups | Export-Csv -NoClobber -NoTypeInformation -Path .\netgroups.csv