Public/New-Check.ps1

function New-Check {
    [CmdletBinding()]
    Param (
        # Name of the rule
        [Parameter(
            Mandatory = $true,
            Position = 1
        )]
        [ValidateNotNullOrEmpty()]
        [System.String] $Name,
        # ScriptBlock to generate input objects
        [Parameter(
            Mandatory = $true,
            Position = 2
        )]
        [Alias('This')]
        [ValidateNotNullOrEmpty()]
        [ScriptBlock] $InputScript,
        # Set of rules to check
        [Parameter(
            Mandatory = $true,
            Position = 3
        )]
        [Alias('Against')]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({
            $_ | Foreach-Object {
                $_.GetType().Name -like 'IAComplianceRule'
            }
        })]
        [System.Object[]] $Rules
    )
    Begin {
    }
    Process {
        [IAComplianceCheck]::New($Name,$InputScript,$Rules)
    }
    End {
    }
}