Public/Add-UnattendedSynchronousCommand.ps1

function Add-UnattendedSynchronousCommand
{
    [CmdletBinding(DefaultParameterSetName = 'Windows')]
    param (
        [Parameter(ParameterSetName='Windows', Mandatory = $true)]
        [Parameter(ParameterSetName='Kickstart', Mandatory = $true)]
        [Parameter(ParameterSetName='Yast', Mandatory = $true)]
        [Parameter(ParameterSetName='CloudInit', Mandatory = $true)]
        [string]$Command,

        [Parameter(ParameterSetName='Windows', Mandatory = $true)]
        [Parameter(ParameterSetName='Kickstart', Mandatory = $true)]
        [Parameter(ParameterSetName='Yast', Mandatory = $true)]
        [Parameter(ParameterSetName='CloudInit', Mandatory = $true)]
        [string]$Description,

        [Parameter(ParameterSetName='Kickstart')]
        [switch]
        $IsKickstart,

        [Parameter(ParameterSetName='Yast')]
        [switch]
        $IsAutoYast,

        [Parameter(ParameterSetName='CloudInit')]
        [switch]
        $IsCloudInit
    )

    if (-not $script:un)
    {
        Write-Error 'No unattended file imported. Please use Import-UnattendedFile first'
        return
    }

    $commandObject = Get-Command -Name $PSCmdlet.MyInvocation.MyCommand.Name.Replace('Unattended', "Unattended$($PSCmdlet.ParameterSetName)")
    $parameters = Sync-Parameter $commandObject -Parameters $PSBoundParameters
    & $commandObject @parameters
}