exports/Search-SysManLog.ps1

<#
.Synopsis
Will search the log for entries between start and end date matching the provided filter
.Description
Will search the log for entries between start and end date matching the provided filter
.Link
https://docs.microsoft.com/en-us/powershell/module/sysman.webapi/search-sysmanlog
#>

function Search-SysManLog {
[OutputType('SysMan.Powershell.Models.IPagedResultOfEventLogItem')]
[CmdletBinding(DefaultParameterSetName='Search', PositionalBinding=$false)]
[SysMan.Powershell.Description('Will search the log for entries between start and end date matching the provided filter')]
param(
    [Parameter(HelpMessage='The correlationId to scope the search on')]
    [SysMan.Powershell.Category('Query')]
    [System.String]
    ${CorrelationId},

    [Parameter(HelpMessage='The end date. If null the end date will be from the end of the log')]
    [SysMan.Powershell.Category('Query')]
    [System.DateTime]
    ${EndDate},

    [Parameter(HelpMessage='The filter to use when searching. No filter - all matches. The filter can contain wildcard % to simulate starts- and ends-with')]
    [SysMan.Powershell.Category('Query')]
    [System.String]
    ${Filter},

    [Parameter(HelpMessage='The number of entries to skip')]
    [SysMan.Powershell.Category('Query')]
    [System.Int32]
    ${Skip},

    [Parameter(HelpMessage='The start date. If null the start date will be from the beginning of the log')]
    [SysMan.Powershell.Category('Query')]
    [System.DateTime]
    ${StartDate},

    [Parameter(HelpMessage='The number of entries to take')]
    [SysMan.Powershell.Category('Query')]
    [System.Int32]
    ${Take},

    [Parameter(DontShow, HelpMessage='Wait for .NET debugger to attach')]
    [SysMan.Powershell.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    ${Break},

    [Parameter(DontShow, HelpMessage='SendAsync Pipeline Steps to be appended to the front of the pipeline')]
    [ValidateNotNull()]
    [SysMan.Powershell.Category('Runtime')]
    [SysMan.Powershell.Runtime.SendAsyncStep[]]
    ${HttpPipelineAppend},

    [Parameter(DontShow, HelpMessage='SendAsync Pipeline Steps to be prepended to the front of the pipeline')]
    [ValidateNotNull()]
    [SysMan.Powershell.Category('Runtime')]
    [SysMan.Powershell.Runtime.SendAsyncStep[]]
    ${HttpPipelinePrepend},

    [Parameter(DontShow, HelpMessage='The URI for the proxy server to use')]
    [SysMan.Powershell.Category('Runtime')]
    [System.Uri]
    ${Proxy},

    [Parameter(DontShow, HelpMessage='Credentials for a proxy server to use for the remote call')]
    [ValidateNotNull()]
    [SysMan.Powershell.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    ${ProxyCredential},

    [Parameter(DontShow, HelpMessage='Use the default credentials for the proxy')]
    [SysMan.Powershell.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PsCmdlet.ParameterSetName
        $mapping = @{
            Search = 'SysMan.WebApi.private\Search-SysManLog_Search';
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($myInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}