Functions/New-GSuiteEndpointConfiguration.ps1
<#
.SYNOPSIS This function creates a GSuite Endpoint Configuration given a GSuite application id, client secret and refresh tokens. #> function New-GSuiteEndpointConfiguration { [CmdletBinding(PositionalBinding=$true)] [OutputType([Object])] param ( # The username to be stored in the new endpoint. [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$gSuiteApplicationID, # The client secret of the GSuite application. [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$gSuiteClientSecret, # The refresh token which has a scope of 'https://www.googleapis.com/auth/admin.directory.user' [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [String]$userRefreshToken, # The refresh token which has a scope of 'https://www.googleapis.com/auth/admin.directory.group' [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [String]$groupRefreshToken, # The refresh token which has a scope of 'https://www.googleapis.com/auth/admin.directory.orgunit' [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [String]$organizationalUnitRefreshToken, # The refresh token which has a scope of 'https://www.googleapis.com/auth/admin.directory.userschema' [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [String]$userSchemaRefreshToken, # The refresh token which has a scope of 'https://www.googleapis.com/auth/admin.directory.device.mobile' [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [String]$mobileDeviceRefreshToken, # The refresh token which has a scope of 'https://www.googleapis.com/auth/admin.directory.user.security' [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [String]$securityRefreshToken, # The refresh token which has a scope of 'https://www.googleapis.com/auth/admin.directory.customer' [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [String]$customerRefreshToken, # The refresh token which has a scope of 'https://www.googleapis.com/auth/admin.directory.domain' [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [String]$domainRefreshToken ) # Initialize the password $gSuitePassword = "ClientSecret:$($gSuiteClientSecret)" # Declare the scopes for refresh tokens $refreshTokenScopes = @( "User", "Group", "OrganizationalUnit", "UserSchema", "MobileDevice", "Security", "Customer", "Domain" ) # Append the refresh tokens to the client secret foreach ($scope in $refreshTokenScopes) { $refreshToken = Invoke-Expression ("`$" + (Invoke-Expression "`$scope") + "RefreshToken") if (![String]::IsNullOrWhiteSpace($refreshToken)){ $gSuitePassword += " $($scope):$($refreshToken)" } } # Initialize a configuration for GSuite $importConfiguration = New-Object -TypeName ManagementProxy.ManagementService.GenericConfiguration -Property @{ "Url" = "https://admin.google.com"; "Username" = $gSuiteApplicationID; "Password" = $gSuitePassword; "UseAdministrativeCredentials" = $true; } return $importConfiguration } |