PSRule.Monitor.psm1
# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. # # PSRule.Monitor module # Set-StrictMode -Version latest; [PSRule.Monitor.Configuration.PSRuleOption]::UseExecutionContext($ExecutionContext); # # Localization # # # Public functions # #region Public functions # .ExternalHelp PSRule.Monitor-Help.xml function Send-PSRuleMonitorRecord { [CmdletBinding()] [OutputType([void])] param ( [Parameter(Mandatory = $False)] [String]$WorkspaceId = $Env:PSRULE_CONFIGURATION_MONITOR_WORKSPACE_ID, [Parameter(Mandatory = $False)] [PSRule.Monitor.SecureStringAttribute()] [SecureString]$SharedKey = $Env:PSRULE_CONFIGURATION_MONITOR_WORKSPACE_KEY, [Parameter(Mandatory = $False, ValueFromPipeline = $True)] [PSObject]$InputObject, [Parameter(Mandatory = $False)] [PSDefaultValue(Value = 'PSRule')] [String]$LogName ) begin { Write-Verbose -Message '[Send-PSRuleMonitorRecord] BEGIN::'; $pipelineReady = $False; try { # Build the pipeline $builder = [PSRule.Monitor.Pipeline.PipelineBuilder]::Injest($Null); $builder.WorkspaceId($WorkspaceId); $builder.SharedKey($SharedKey); if ($PSBoundParameters.ContainsKey('LogName')) { $builder.LogName($LogName); } $builder.UseCommandRuntime($PSCmdlet.CommandRuntime); $builder.UseExecutionContext($ExecutionContext); $pipeline = $builder.Build(); if ($Null -ne $pipeline) { $pipeline.Begin(); $pipelineReady = $True; } } catch { throw $_.Exception.GetBaseException(); } } process { if ($pipelineReady) { try { $pipeline.Process($InputObject); } catch { $pipeline.Dispose(); throw; } } } end { if ($pipelineReady) { try { $pipeline.End(); } finally { $pipeline.Dispose(); } } Write-Verbose -Message '[Send-PSRuleMonitorRecord] END::'; } } #endregion Public functions # # Helper functions # # # Export module # Export-ModuleMember -Function Send-PSRuleMonitorRecord; |