Public/Helpers/Add-GSUserAddress.ps1
function Add-GSUserAddress { <# .SYNOPSIS Builds a UserAddress object to use when creating or updating a User .DESCRIPTION Builds a UserAddress object to use when creating or updating a User .PARAMETER Country Country .PARAMETER CountryCode The country code. Uses the ISO 3166-1 standard: http://www.iso.org/iso/iso-3166-1_decoding_table .PARAMETER CustomType If the address type is custom, this property contains the custom value .PARAMETER ExtendedAddress For extended addresses, such as an address that includes a sub-region .PARAMETER Formatted A full and unstructured postal address. This is not synced with the structured address fields .PARAMETER Locality The town or city of the address .PARAMETER PoBox The post office box, if present .PARAMETER PostalCode The ZIP or postal code, if applicable .PARAMETER Primary If this is the user's primary address. The addresses list may contain only one primary address .PARAMETER Region The abbreviated province or state .PARAMETER SourceIsStructured Indicates if the user-supplied address was formatted. Formatted addresses are not currently supported .PARAMETER StreetAddress The street address, such as 1600 Amphitheatre Parkway. Whitespace within the string is ignored; however, newlines are significant .PARAMETER Type The address type. Acceptable values are: * "Custom" * "Home" * "Other" * "Work" .PARAMETER InputObject Used for pipeline input of an existing UserAddress object to strip the extra attributes and prevent errors .EXAMPLE $address = Add-GSUserAddress -Country USA -Locality Dallas -PostalCode 75000 Region TX -StreetAddress '123 South St' -Type Work -Primary $phone = Add-GSUserPhone -Type Work -Value "(800) 873-0923" -Primary $extId = Add-GSUserExternalId -Type Login_Id -Value jsmith2 New-GSUser -PrimaryEmail john.smith@domain.com -GivenName John -FamilyName Smith -Password (ConvertTo-SecureString -String 'Password123' -AsPlainText -Force) -ChangePasswordAtNextLogin -OrgUnitPath "/Users/New Hires" -IncludeInGlobalAddressList -Addresses $address -Phones $phone -ExternalIds $extId Creates a user named John Smith and adds their work address, work phone and login_id to the user object #> [CmdletBinding(DefaultParameterSetName = "InputObject")] Param ( [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [String] $Country, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [String] $CountryCode, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [String] $CustomType, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [String] $ExtendedAddress, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [String] $Formatted, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [Alias('Town','City')] [String] $Locality, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [String] $PoBox, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [String] $PostalCode, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [Switch] $Primary, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [Alias('State','Province')] [String] $Region, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [Switch] $SourceIsStructured, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [String] $StreetAddress, [Parameter(Mandatory = $false,ParameterSetName = "Fields")] [ValidateSet('Custom','Home','Other','Work')] [String] $Type, [Parameter(Mandatory = $false,ValueFromPipeline = $true,ParameterSetName = "InputObject")] [Google.Apis.Admin.Directory.directory_v1.Data.UserAddress[]] $InputObject ) Begin { $propsToWatch = @( 'Country' 'CountryCode' 'CustomType' 'ExtendedAddress' 'Formatted' 'Locality' 'PoBox' 'PostalCode' 'Primary' 'Region' 'SourceIsStructured' 'StreetAddress' 'Type' ) } Process { try { switch ($PSCmdlet.ParameterSetName) { Fields { $obj = New-Object 'Google.Apis.Admin.Directory.directory_v1.Data.UserAddress' foreach ($prop in $PSBoundParameters.Keys | Where-Object {$obj.PSObject.Properties.Name -contains $_}) { $obj.$prop = $PSBoundParameters[$prop] } $obj } InputObject { foreach ($iObj in $InputObject) { $obj = New-Object 'Google.Apis.Admin.Directory.directory_v1.Data.UserAddress' foreach ($prop in $iObj.PSObject.Properties.Name | Where-Object {$obj.PSObject.Properties.Name -contains $_ -and $propsToWatch -contains $_}) { $obj.$prop = $iObj.$prop } $obj } } } } catch { if ($ErrorActionPreference -eq 'Stop') { $PSCmdlet.ThrowTerminatingError($_) } else { Write-Error $_ } } } } |