public/scripts/New-Script.ps1

Function New-Script {
    <#
    .DESCRIPTION
        Creates a new script. The -Body payload parameters determine what type of script is created.
        Types of script include online/offline kscript and online/offline shell script.
 
    .PARAMETER Server
        The fully qualified name (FQDN) of the SMA Appliance.
        Example: https://kace.example.com
 
    .PARAMETER Org
        The SMA Organization you want to retrieve information from. If not provided, 'Default' is used.
     
    .PARAMETER Credential
        A credential for the kace appliance that has permissions to interact with the API.
        To run interactively, use -Credential (Get-Credential)
 
    .PARAMETER Body
        A hashtable-formatted payload with parameters for the new script.
 
    .INPUTS
 
    .OUTPUTS
        PSCustomObject
 
    .EXAMPLE
    $scriptparams = @{
        'name' = 'xMy New Script'
        'description' = 'This script is amazing.'
        'enabled' = $False
        'status' = 'Draft'
        'notes'='These are the notes'
        'scheduleType'='online-kscript'
        'alertEnabled' = $False
    }
        New-SmaScript -Server https://kace.example.com -Org Default -Credential (Get-Credential) -ScriptID 1234 -Body $scriptparams
 
        Creates a new script ID 1234, gives it 2 attempts with a break on failure. On remediation failure, it logs a status message.
 
    .NOTES
        
    #>

    [cmdletBinding(
        SupportsShouldProcess = $true,
        ConfirmImpact = 'medium'
    )]
    param(
        [Parameter(Mandatory = $true)]
        [string]
        $Server,

        [Parameter()]
        [string]
        $Org = 'Default',

        [Parameter(Mandatory = $true)]
        [PSCredential]
        $Credential,

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [hashtable]
        $Body

    )
    Begin {
        $Endpoint = "/api/script" # Not Working yet, so not exposed
    }
    Process {
        If ($PSCmdlet.ShouldProcess($Server,"POST $Endpoint")) {
            New-ApiPOSTRequest -Server $Server -Endpoint $Endpoint -Org $Org -Credential $Credential -Body $Body
        }
    }
    End {}
}