Get-SNSUserEmail.ps1
function Get-SNSUserEmail { <# .SYNOPSIS Fetches all e-mail addresses for all users from from scoutnet based on the credential. .DESCRIPTION Scoutnet API api/group/memberlist returns a JSON with info about all members. This function fetches this json list and creates a hashtable with the members mailaddresses. This hashtable can be used to generate maillists. .INPUTS None. You cannot pipe objects to Get-SNSUserEmail. .OUTPUTS Two parts is returned. The first part is the hastable. The second part is a hashcode that can be used to check if scoutnet is updated. .PARAMETER CredentialMemberlist Credentials for api/group/memberlist .PARAMETER UriApiMemberList Url for the API. Defaults to https://www.scoutnet.se/api/group/memberlist .LINK https://www.scoutnet.se .EXAMPLE Get-SNSUserEmail -CredentialMemberlist $CredentialMemberlist -UriApiMemberList "https://www.scoutnet.se/api/group/memberlist" #> [OutputType([System.Collections.Hashtable], [string])] param ( [Parameter(Mandatory=$True, HelpMessage="Credentials for api/group/memberlist")] [ValidateNotNull()] [Alias("Credential")] [pscredential]$CredentialMemberlist, [Parameter(Mandatory=$False, HelpMessage="Url for api/group/memberlist.")] [ValidateNotNull()] [Alias("Uri")] [string]$UriApiMemberList = "https://www.scoutnet.se/api/group/memberlist" ) # Fetch all mail addresses from Scoutnet. $allUsers = Get-SNSApiGroupMemberlist -Uri $UriApiMemberList -Credential $CredentialMemberlist $allMailAddresses = @{} foreach ($member in $allUsers.data.values) { $memberData = @{} $memberData.Add("first_name", $member.first_name.value) $memberData.Add("last_name", $member.last_name.value) $mailaddresses = @() $contacts_addresses = @() # Parents... if (![string]::IsNullOrWhiteSpace($member.email.value)) { $memberData.Add("primary_email", $member.email.value) $mailaddresses += $member.email.value } if (![string]::IsNullOrWhiteSpace($member.contact_email_mum.value)) { $mailaddresses += $member.contact_email_mum.value $contacts_addresses += $member.contact_email_mum.value } if (![string]::IsNullOrWhiteSpace($member.contact_email_dad.value)) { $mailaddresses += $member.contact_email_dad.value $contacts_addresses += $member.contact_email_dad.value } if (![string]::IsNullOrWhiteSpace($member.contact_alt_email.value)) { $mailaddresses += $member.contact_alt_email.value $memberData.Add("alt_email", $member.contact_alt_email.value) } $mailaddresses = $mailaddresses | Sort-Object -Unique $memberData.Add("mailaddresses", $mailaddresses) $contacts_addresses = $contacts_addresses | Sort-Object -Unique $memberData.Add("contacts_addresses", $contacts_addresses) $allMailAddresses.Add($member.member_no.value, $memberData) } $str = $allMailAddresses | ConvertTo-Json return $allMailAddresses, ("{0:X8}" -f ($str.GetHashCode())) } |