public/Invoke-SCCMAction.ps1

function Invoke-SCCMAction {

    Param (
        $ComputerName,
        [Parameter(Mandatory=$true,
                        Position=1)]
        [ValidateSet('MachinePolicyEval','SoftwareUpdateScan','SoftwareUpdateDeploymentEval','ApplicationDeploymentEval','HardwareInventory')]
        $Action,
        [System.Management.Automation.PSCredential]
        $Credential
    
    )
    
    $scriptblock = {

    switch ($using:Action)
                {
                    
                    'MachinePolicyEval' {$actionid = '{00000000-0000-0000-0000-000000000021}'}
                    'SoftwareUpdateScan' {$actionid = '{00000000-0000-0000-0000-000000000113}'}
                    'SoftwareUpdateDeploymentEval' {$actionid = '{00000000-0000-0000-0000-000000000108}'}
                    'ApplicationDeploymentEval' {$actionid = '{00000000-0000-0000-0000-000000000121}'}
                    'HardwareInventory' {$actionid = '{00000000-0000-0000-0000-000000000001}'}
                    
                }
       Write-Host "$env:computername :: Triggering $using:Action" 
       Invoke-WmiMethod -Namespace root\ccm -Class sms_client -Name TriggerSchedule -ArgumentList "$actionid" -ErrorAction Stop
        
        
    }# end script block
    
    #Execute Scriptblock on Computername(s) with set parameters.
    $params = @{
        ScriptBlock = $scriptblock
    }
    if ($ComputerName){
        $params['ComputerName'] = $ComputerName
    }
    if ($Credential){
        $params['Credential'] = $Credential
    }
    Invoke-Command @params
    

}