Src/Private/Get-AbrFgtUser.ps1
function Get-AbrFgtUser { <# .SYNOPSIS Used by As Built Report to returns User settings. .DESCRIPTION Documents the configuration of Fortinet FortiGate in Word/HTML/Text formats using PScribo. .NOTES Version: 0.1.0 Author: Alexis La Goutte Twitter: @alagoutte Github: alagoutte Credits: Iain Brighton (@iainbrighton) - PScribo module .LINK https://github.com/AsBuiltReport/AsBuiltReport.Fortinet.FortiGate #> [CmdletBinding()] param ( ) begin { Write-PScriboMessage "Discovering user settings information from $System." } process { Section -Style Heading2 'User' { Paragraph "The following section details user settings configured on FortiGate." BlankLine $Users = Get-FGTUserLocal $Groups = Get-FGTUserGroup $LDAPS = Get-FGTUserLDAP $RADIUS = Get-FGTUserRADIUS if ($DefaultFGTConnection.version -ge "6.2.0") { $SAML = Get-FGTUserSAML } if ($InfoLevel.User -ge 1) { Section -Style Heading3 'Summary' { Paragraph "The following section provides a summary of user settings." BlankLine $OutObj = [pscustomobject]@{ "User" = @($Users).count "Group" = @($Groups).count "LDAP" = @($LDAPS).count "RADIUS" = @($RADIUS).count "SAML" = @($SAML).count } $TableParams = @{ Name = "Summary" List = $true ColumnWidths = 50, 50 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } if ($Users -and $InfoLevel.User -ge 1) { Section -Style Heading3 'User Local' { $OutObj = @() foreach ($user in $Users) { $OutObj += [pscustomobject]@{ "Name" = $user.name "Type" = $user.type "Status" = $user.status "Password Time" = $user.'passwd-time' } } $TableParams = @{ Name = "User" List = $false ColumnWidths = 25, 25, 25, 25 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } if ($Groups -and $InfoLevel.User -ge 1) { Section -Style Heading3 'User Group' { $OutObj = @() foreach ($grp in $Groups) { $OutObj += [pscustomobject]@{ "Name" = $grp.name "Type" = $grp.'group-type' "Member" = $grp.member.name -join ", " "Match" = $grp.match.'group-name' -join ", " } } $TableParams = @{ Name = "User Group" List = $false ColumnWidths = 25, 25, 25, 25 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } if ($LDAPS -and $InfoLevel.User -ge 1) { Section -Style Heading3 'LDAP' { $OutObj = @() foreach ($ldap in $LDAPS) { $server = $ldap.server if ($ldap.'secondary-server') { $server += "/" + $ldap.'secondary-server' } if ($ldap.'tertiary-server') { $server += "/" + $ldap.'tertiary-server' } $OutObj += [pscustomobject]@{ "Name" = $ldap.name "Server(s)" = $server "Port" = $ldap.port "CN" = $ldap.cnid "DN" = $ldap.dn "Type" = $ldap.type "User" = $ldap.username } } $TableParams = @{ Name = "LDAP" List = $false ColumnWidths = 14, 26, 12, 12, 12, 12, 12 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams if ($InfoLevel.User -ge 2) { foreach ($ldap in $LDAPS) { Section -Style NOTOCHeading4 -ExcludeFromTOC "LDAP: $($ldap.name)" { BlankLine $OutObj = [pscustomobject]@{ "Name" = $ldap.name "Server" = $ldap.server "Secondary Server" = $ldap.'secondary-server' "Tertiary Server" = $ldap.'tertiary-server' "Port" = $ldap.port "Secure" = $ldap.secure "Source IP" = $ldap.'source-ip' "Interface" = $ldap.interface "Cnid" = $ldap.cnid "DN" = $ldap.dn "Type" = $ldap.type "Username" = $ldap.username "Group Member Check" = $ldap.'group-member-check' "Group Search Base" = $ldap.'group-search-base' "Group Object Filter" = $ldap.'group-object-filter' } $TableParams = @{ Name = "LDAP $($ldap.name)" List = $true ColumnWidths = 25, 75 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } } } } if ($RADIUS -and $InfoLevel.User -ge 1) { Section -Style Heading3 'RADIUS' { $OutObj = @() foreach ($rad in $RADIUS) { $server = $rad.server if ($rad.'secondary-server') { $server += "/" + $rad.'secondary-server' } if ($rad.'tertiary-server') { $server += "/" + $rad.'tertiary-server' } $OutObj += [pscustomobject]@{ "Name" = $rad.name "Server(s)" = $server "Auth Type" = $rad.'auth-type' "NAS-IP" = $rad.'nas-ip' } } $TableParams = @{ Name = "RADIUS" List = $false ColumnWidths = 20, 40, 20, 20 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams if ($InfoLevel.User -ge 2) { foreach ($rad in $RADIUS) { Section -Style NOTOCHeading4 -ExcludeFromTOC "RADIUS: $($rad.name)" { BlankLine $OutObj = [pscustomobject]@{ "Name" = $rad.name "Server" = $rad.server "Secondary Server" = $rad.'secondary-server' "Tertiary Server" = $rad.'tertiary-server' "Port" = $rad.'radius-port' "Timeout" = $rad.timeout "Source IP" = $rad.'source-ip' "Interface" = $rad.interface "Interface Select Method" = $rad.'interface-select-method' "Use Management VDOM" = $rad.'use-management-vdom' "All Usergroup" = $rad.'all-usergroup' "NAS IP" = $rad.'nas-ip' "NAS ID Type" = $rad.'nas-id-type' "NAS ID" = $rad.'nas-id' "Acct Interim Interval" = $rad.'acct-interim-interval' "RADIUS CoA" = $rad.'radius-coa' "Auth Type" = $rad.'auth-type' "Username Case Sensitive" = $rad.'username-case-sensitive' "Accounting Server" = $rad.'accounting-server' "RSSO" = $rad.rsso "Class" = $rad.class "Password Renewal" = $rad.'password-renewal' "MAC Username Delimiter" = $rad.'mac-username-delimiter' "MAC Password Delimiter" = $rad.'mac-password-delimiter"' "MAC Case" = $rad.'mac-case' "Delimiter" = $rad.delimiter } $TableParams = @{ Name = "RADIUS $($rad.name)" List = $true ColumnWidths = 25, 75 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } } } } if ($SAML -and $InfoLevel.User -ge 1) { Section -Style Heading3 'SAML' { $OutObj = @() foreach ($sml in $SAML) { $OutObj += [pscustomobject]@{ "Name" = $sml.name "Certificate" = $sml.cert "IdP Entity-ID" = $sml.'idp-entity-id' "IdP Certificat" = $sml.'idp-cert' } } $TableParams = @{ Name = "SAML" List = $false ColumnWidths = 20, 20, 40, 20 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams if ($SAML -and $InfoLevel.User -ge 2) { foreach ($sml in $SAML) { Section -Style NOTOCHeading4 -ExcludeFromTOC "SAML: $($sml.name)" { BlankLine $OutObj = [pscustomobject]@{ "Name" = $sml.name "Certificate" = $sml.cert "Entity Id" = $sml.'entity-id' "Single Sign On URL" = $sml.'single-sign-on-url' "Single Logout URL" = $sml.'single-logout-url' "IdP Single Sign On URM" = $sml.'idp-single-sign-on-url' "IdP Single Logout URL" = $sml.'idp-single-logout-url' "IdP Certificate" = $sml.'idp-cert' "User Name" = $sml.'user-name' "Group Name" = $sml.'group-name' } $TableParams = @{ Name = "SAML $($sml.name)" List = $true ColumnWidths = 25, 75 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } } } } } } end { } } |