functions/Graph/Connect-C365Graph.ps1
function Connect-C365Graph { <# .ForwardHelpTargetName Microsoft.Graph.Authentication\Connect-Graph .ForwardHelpCategory Cmdlet #> [CmdletBinding(DefaultParameterSetName = 'UserParameterSet')] param ( [Parameter(Mandatory = $true, ParameterSetName = 'UserParameterSet', Position = 1)] [string[]] $Scopes, [Parameter(Mandatory = $true, ParameterSetName = 'UserPresetParameterSet')] [string[]] $Workflow, [Parameter(ParameterSetName = 'AppParameterSet', Mandatory = $true, Position = 1)] [string] $ClientId, [Parameter(ParameterSetName = 'AppParameterSet', Position = 2)] [string] $CertificateName, [Parameter(ParameterSetName = 'AppParameterSet', Position = 3)] [string] $CertificateThumbprint, [Parameter(ParameterSetName = 'UserParameterSet')] [Parameter(ParameterSetName = 'UserPresetParameterSet')] [Parameter(Mandatory = $true, ParameterSetName = 'AppParameterSet')] [string] $TenantId ) begin { try { $parameters = $PSBoundParameters | ConvertTo-PSFHashtable -Exclude Workflow $parameters['ForceRefresh'] = $true if ($ClientId -and -not ($CertificateName -or $CertificateThumbprint)) { throw 'Must specify either certificate thumbprint or name to authenticate as application!' } if ($CertificateName -and -not $CertificateThumbprint) { $parameters['CertificateThumbprint'] = 'XXX' } if ($CertificateThumbprint -and -not $CertificateName) { $parameters['CertificateName'] = 'XXX' } if ($Workflow) { $parameters['Scopes'] = $script:workflow_definitions[$Workflow].Scopes } elseif (-not $parameters.ClientID) { $parameters['Scopes'] = $Scopes } $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('Microsoft.Graph.Authentication\Connect-Graph', [System.Management.Automation.CommandTypes]::Cmdlet) $scriptCmd = { & $wrappedCmd @parameters } $steppablePipeline = $scriptCmd.GetSteppablePipeline($myInvocation.CommandOrigin) $steppablePipeline.Begin($false) } catch { throw } } process { try { $steppablePipeline.Process($_) } catch { throw } } end { try { $steppablePipeline.End() } catch { throw } } } |