MSOnlineExt.psm1
$ErrorActionPreference = 'Stop' try { $script:module_config_path = Join-Path -Path $PSScriptRoot -ChildPath 'MSOnlineExt.config.json' $script:module_config = Get-Content -Path $script:module_config_path -Raw | ConvertFrom-Json $app_settings = [Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration]::new() # If disabled no telemetry will be sent $app_settings.DisableTelemetry = $script:module_config.ApplicationInsights.TelemetryDisable # Load application insights $script:app = [Microsoft.ApplicationInsights.TelemetryClient]::new($app_settings) # Gather session data $script:app.InstrumentationKey = 'c7587407-2b8a-4ebe-8c9f-3586e05f302d' $script:app.TrackEvent('Execution Context: {0}' -f $ExecutionContext.Host.Name) $script:app.TrackEvent('PowerShell Version: {0}' -f $PSVersionTable.PSVersion.ToString()) $script:app.TrackEvent('PowerShell Edition: {0}' -f $PSEdition) $script:app.TrackEvent('Is 64 Bit Operating System: {0}' -f [System.Environment]::Is64BitOperatingSystem) $script:app.TrackEvent('Is 64 Bit Process: {0}' -f [System.Environment]::Is64BitProcess) $script:app.Flush() } catch { Write-Error -Message "Failed to set telemetry options: $PSItem" } # Get all module file paths. $completers_path = Join-Path -Path $PSScriptRoot -ChildPath 'Completers' $public_path = Join-Path -Path $PSScriptRoot -ChildPath 'Public' $private_path = Join-Path -Path $PSScriptRoot -ChildPath 'Private' # Get all module files. $public = @( Get-ChildItem -Path $public_path -Filter '*.ps1' ) $private = @( Get-ChildItem -Path $private_path -Filter '*.ps1' ) $completers = Get-ChildItem -Path $completers_path -Filter '*.Completer.ps1' # Load all completers. foreach($item in $completers) { $message = 'Importing Completer: {0}' -f $item.FullName Write-Verbose -Message $message & $item.FullName } # Load all functions. foreach($cmdlet in @($public + $private)) { try { . $cmdlet.FullName } catch { Write-Error -Message "Failed to import cmdlet $($cmdlet.FullName): $PSItem" } } if($script:module_config.ApplicationInsights.TelemetryPrompt){ Write-TelemetryPrompt } # Present public functions to user Export-ModuleMember -Function $public.BaseName # This code will run when the module is removed and # will be sure that the TenantId default is removed $MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = { $global:PSDefaultParameterValues.Remove('*-Msol*:TenantId') } |