library/PoshWSUS/2.3.1.6/Scripts/Start-PSWSUSInstallApprovalRule.ps1

Function Start-PSWSUSInstallApprovalRule {
    <#
    .SYNOPSIS
        Starts a given rule to process approvals
    .DESCRIPTION
        Starts a given rule to process approvals
    .PARAMETER Name
        Name of the Install Approval Rule to run
    .PARAMETER InputObject
        Rule object to run
    .NOTES
        Name: Start-PSWSUSInstallApprovalRule
        Author: Boe Prox
        DateCreated: 24JAN2011
                
    .LINK
        https://learn-powershell.net
    .EXAMPLE
    Start-PSWSUSInstallApprovalRule -Name "Rule1"
 
    Description
    -----------
    Rule1 will begin approving updates based on its configuration
 
    .EXAMPLE
    $rule = Get-PSWSUSInstallApprovalRules | Where {$_.Name -eq "Rule1"}
    $rule | Start-PSWSUSInstallApprovalRule
 
    Description
    -----------
    Rule1 will begin approving updates based on its configuration
    #>
 
    [cmdletbinding(
        DefaultParameterSetName = '',
        ConfirmImpact = 'low',
        SupportsShouldProcess = $True    
    )]
        Param(
            [Parameter(
                Mandatory = $True,
                Position = 0,
                ParameterSetName = 'name',
                ValueFromPipeline = $True)]
                [string]$Name,
            [Parameter(
                Mandatory = $True,
                Position = 0,
                ParameterSetName = 'object',
                ValueFromPipeline = $True)]
                [system.object]$InputObject                                                                                                                                
                )
    
    Process {
        Switch ($pscmdlet.parametersetname) {
            Name {
                if ($wsus) {
                    #Locate rule by name
                    Write-Verbose "Locating Rule by name"
                    $rule = $wsus.GetInstallApprovalRules() | Where {
                        $_.Name -eq $name
                    }
                    If ($rule -eq $Null) {
                        Write-Warning "No rules found by given name"
                        Continue
                    } Else {
                        If ($pscmdlet.ShouldProcess("$($rule.name)")) {
                            #Running approval rule
                            Write-Verbose "Running approval rule"
                            $rule.ApplyRule()
                        }                
                    }
                }
                else {
                    Write-Warning "Use Connect-PSWSUSServer to establish connection with your Windows Update Server"
                    Break
                }               
            }
            Object {
                #Rule is an object
                Write-Verbose "Rule is an object"
                If ($pscmdlet.ShouldProcess("$($rule.name)")) {
                    #Running approval rule
                    Write-Verbose "Running approval rule"
                    $rule.ApplyRule()
                }
            }
        }
    }
}