pspulumiyaml.azurenative.automation.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionAutomationGetHybridRunbookWorker
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The hybrid runbook worker group name)')]
        [string]
        $hybridRunbookWorkerGroupName,
        [parameter(mandatory=$False,HelpMessage='The hybrid runbook worker id)')]
        [string]
        $hybridRunbookWorkerId
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["hybridRunbookWorkerGroupName"] = $hybridRunbookWorkerGroupName
        $arguments["hybridRunbookWorkerId"] = $hybridRunbookWorkerId
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getHybridRunbookWorker -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetCertificate
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of certificate.)')]
        [string]
        $certificateName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["certificateName"] = $certificateName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getCertificate -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetPython2Package
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The python package name.)')]
        [string]
        $packageName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["packageName"] = $packageName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getPython2Package -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetCredential
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='The name of credential.)')]
        [string]
        $credentialName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["credentialName"] = $credentialName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getCredential -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationListKeyByAutomationAccount
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:listKeyByAutomationAccount -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The schedule name.)')]
        [string]
        $scheduleName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["scheduleName"] = $scheduleName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getSchedule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetAutomationAccount
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getAutomationAccount -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetHybridRunbookWorkerGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The hybrid runbook worker group name)')]
        [string]
        $hybridRunbookWorkerGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["hybridRunbookWorkerGroupName"] = $hybridRunbookWorkerGroupName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getHybridRunbookWorkerGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetJobSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The job schedule name.)')]
        [string]
        $jobScheduleId
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["jobScheduleId"] = $jobScheduleId
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getJobSchedule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetConnectionType
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of connection type.)')]
        [string]
        $connectionTypeName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["connectionTypeName"] = $connectionTypeName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getConnectionType -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetVariable
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of variable.)')]
        [string]
        $variableName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["variableName"] = $variableName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getVariable -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetDscConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The configuration name.)')]
        [string]
        $configurationName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["configurationName"] = $configurationName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getDscConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetRunbook
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The runbook name.)')]
        [string]
        $runbookName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["runbookName"] = $runbookName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getRunbook -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["privateEndpointConnectionName"] = $privateEndpointConnectionName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of connection.)')]
        [string]
        $connectionName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["connectionName"] = $connectionName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetSoftwareUpdateConfigurationByName
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='The name of the software update configuration to be created.)')]
        [string]
        $softwareUpdateConfigurationName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["softwareUpdateConfigurationName"] = $softwareUpdateConfigurationName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getSoftwareUpdateConfigurationByName -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetSourceControl
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of source control.)')]
        [string]
        $sourceControlName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["sourceControlName"] = $sourceControlName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getSourceControl -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetModule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The module name.)')]
        [string]
        $moduleName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["moduleName"] = $moduleName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getModule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetWatcher
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='The watcher name.)')]
        [string]
        $watcherName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["watcherName"] = $watcherName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getWatcher -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetWebhook
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The webhook name.)')]
        [string]
        $webhookName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["webhookName"] = $webhookName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getWebhook -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAutomationGetDscNodeConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Dsc node configuration name.)')]
        [string]
        $nodeConfigurationName
    )

    process
    {
        $arguments = @{}
        $arguments["automationAccountName"] = $automationAccountName
        $arguments["nodeConfigurationName"] = $nodeConfigurationName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:automation:getDscNodeConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class DscConfigurationParameter
{
    [string] $defaultValue
    [int] $position
    [string] $type
    [bool] $isMandatory
}
function New-AzureNativeTypeAutomationDscConfigurationParameter
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the default value of parameter.)')]
        [string]
        $defaultValue,
        [parameter(mandatory=$False,HelpMessage='Get or sets the position of the parameter.)')]
        [int]
        $position,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the type of the parameter.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a Boolean value to indicate whether the parameter is mandatory or not.)')]
        [bool]
        $isMandatory
    )

    process
    {
        return $([DscConfigurationParameter]$PSBoundParameters)
    }
}
class ContentHash
{
    [ValidateSet('embeddedContent', 'uri')]
    [string] $value
    [ValidateSet('embeddedContent', 'uri')]
    [string] $algorithm
}
function New-AzureNativeTypeAutomationContentHash
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets expected hash value of the content.)')]
        [string]
        $value,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the content hash algorithm used to hash the content.)')]
        [string]
        $algorithm
    )

    process
    {
        return $([ContentHash]$PSBoundParameters)
    }
}
class ContentSource
{
    [string] $version
    [ValidateSet('embeddedContent', 'uri')]
    [string] $type
    [ValidateSet('embeddedContent', 'uri')]
    [string] $value
    [ValidateSet('embeddedContent', 'uri')]
    [ContentHash] $hash
}
function New-AzureNativeTypeAutomationContentSource
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the version of the content.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the content source type.)')]
        [string]
        [ValidateSet('embeddedContent', 'uri')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the value of the content. This is based on the content source type.)')]
        [string]
        $value,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the hash.)')]
        [ContentHash]
        $hash
    )

    process
    {
        return $([ContentSource]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationDscConfiguration
{
    [Alias('azure_native_automation_dscconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets progress log option.)')]
        [bool]
        $logProgress,
        [parameter(mandatory=$False,HelpMessage='Gets or sets verbose log option.)')]
        [bool]
        $logVerbose,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the configuration parameters.)')]
        [DscConfigurationParameter]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the source.)')]
        [ContentSource]
        $source,
        [parameter(mandatory=$False,HelpMessage='The create or update parameters for configuration.)')]
        [string]
        $configurationName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tags attached to the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the description of the configuration.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Gets or sets name of the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:DscConfiguration")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["source"] = $source

        if($PSBoundParameters.Keys -icontains 'logProgress')
        {
            $resource.properties["logProgress"] = $logProgress
        }

        if($PSBoundParameters.Keys -icontains 'logVerbose')
        {
            $resource.properties["logVerbose"] = $logVerbose
        }

        if($PSBoundParameters.Keys -icontains 'parameters')
        {
            $resource.properties["parameters"] = $parameters
        }

        if($PSBoundParameters.Keys -icontains 'configurationName')
        {
            $resource.properties["configurationName"] = $configurationName
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'description')
        {
            $resource.properties["description"] = $description
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeAutomationWatcher
{
    [Alias('azure_native_automation_watcher')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the script the watcher is attached to, i.e. the name of an existing runbook.)')]
        [string]
        $scriptName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the frequency at which the watcher is invoked.)')]
        [int]
        $executionFrequencyInSeconds,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the hybrid worker group the watcher will run on.)')]
        [string]
        $scriptRunOn,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the description.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the parameters of the script.)')]
        [hashtable]
        $scriptParameters,
        [parameter(mandatory=$False,HelpMessage='The watcher name.)')]
        [string]
        $watcherName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:Watcher")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'scriptName')
        {
            $resource.properties["scriptName"] = $scriptName
        }

        if($PSBoundParameters.Keys -icontains 'executionFrequencyInSeconds')
        {
            $resource.properties["executionFrequencyInSeconds"] = $executionFrequencyInSeconds
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'scriptRunOn')
        {
            $resource.properties["scriptRunOn"] = $scriptRunOn
        }

        if($PSBoundParameters.Keys -icontains 'description')
        {
            $resource.properties["description"] = $description
        }

        if($PSBoundParameters.Keys -icontains 'scriptParameters')
        {
            $resource.properties["scriptParameters"] = $scriptParameters
        }

        if($PSBoundParameters.Keys -icontains 'watcherName')
        {
            $resource.properties["watcherName"] = $watcherName
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class AdvancedScheduleMonthlyOccurrence
{
    [ValidateSet('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')]
    [string] $day
    [ValidateSet('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')]
    [int] $occurrence
}
function New-AzureNativeTypeAutomationAdvancedScheduleMonthlyOccurrence
{
    param (
        [parameter(mandatory=$False,HelpMessage='Day of the occurrence. Must be one of monday, tuesday, wednesday, thursday, friday, saturday, sunday.)')]
        [string]
        [ValidateSet('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')]
        $day,
        [parameter(mandatory=$False,HelpMessage='Occurrence of the week within the month. Must be between 1 and 5)')]
        [int]
        $occurrence
    )

    process
    {
        return $([AdvancedScheduleMonthlyOccurrence]$PSBoundParameters)
    }
}
class AdvancedSchedule
{
    [int[]] $monthDays
    [AdvancedScheduleMonthlyOccurrence[]] $monthlyOccurrences
    [string[]] $weekDays
}
function New-AzureNativeTypeAutomationAdvancedSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Days of the month that the job should execute on. Must be between 1 and 31.)')]
        [int[]]
        $monthDays,
        [parameter(mandatory=$False,HelpMessage='Occurrences of days within a month.)')]
        $monthlyOccurrences,
        [parameter(mandatory=$False,HelpMessage='Days of the week that the job should execute on.)')]
        [string[]]
        $weekDays
    )

    process
    {
        return $([AdvancedSchedule]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationSchedule
{
    [Alias('azure_native_automation_schedule')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the end time of the schedule.)')]
        [string]
        $expiryTime,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the AdvancedSchedule.)')]
        [AdvancedSchedule]
        $advancedSchedule,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the time zone of the schedule.)')]
        [string]
        $timeZone,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the start time of the schedule.)')]
        [string]
        $startTime,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the interval of the schedule.)')]
        $interval,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the frequency of the schedule.)')]
        [string]
        [ValidateSet('OneTime', 'Day', 'Hour', 'Week', 'Month', 'Minute')]
        $frequency,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the description of the schedule.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the Schedule.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The schedule name.)')]
        [string]
        $scheduleName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:Schedule")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["frequency"] = $frequency
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["startTime"] = $startTime

        if($PSBoundParameters.Keys -icontains 'expiryTime')
        {
            $resource.properties["expiryTime"] = $expiryTime
        }

        if($PSBoundParameters.Keys -icontains 'advancedSchedule')
        {
            $resource.properties["advancedSchedule"] = $advancedSchedule
        }

        if($PSBoundParameters.Keys -icontains 'timeZone')
        {
            $resource.properties["timeZone"] = $timeZone
        }

        if($PSBoundParameters.Keys -icontains 'interval')
        {
            $resource.properties["interval"] = $interval
        }

        if($PSBoundParameters.Keys -icontains 'description')
        {
            $resource.properties["description"] = $description
        }

        if($PSBoundParameters.Keys -icontains 'scheduleName')
        {
            $resource.properties["scheduleName"] = $scheduleName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateEndpointProperty
{
    [string] $id
}
function New-AzureNativeTypeAutomationPrivateEndpointProperty
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource id of the private endpoint.)')]
        [string]
        $id
    )

    process
    {
        return $([PrivateEndpointProperty]$PSBoundParameters)
    }
}
class PrivateLinkServiceConnectionStateProperty
{
    [string] $status
    [string] $description
}
function New-AzureNativeTypeAutomationPrivateLinkServiceConnectionStateProperty
{
    param (
        [parameter(mandatory=$False,HelpMessage='The private link service connection status.)')]
        [string]
        $status,
        [parameter(mandatory=$False,HelpMessage='The private link service connection description.)')]
        [string]
        $description
    )

    process
    {
        return $([PrivateLinkServiceConnectionStateProperty]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationPrivateEndpointConnection
{
    [Alias('azure_native_automation_privateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='Gets the groupIds.)')]
        [string[]]
        $groupIds,
        [parameter(mandatory=$False,HelpMessage='Private endpoint which the connection belongs to.)')]
        [PrivateEndpointProperty]
        $privateEndpoint,
        [parameter(mandatory=$False,HelpMessage='Connection State of the Private Endpoint Connection.)')]
        [PrivateLinkServiceConnectionStateProperty]
        $privateLinkServiceConnectionState,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:PrivateEndpointConnection")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'privateEndpointConnectionName')
        {
            $resource.properties["privateEndpointConnectionName"] = $privateEndpointConnectionName
        }

        if($PSBoundParameters.Keys -icontains 'groupIds')
        {
            $resource.properties["groupIds"] = $groupIds
        }

        if($PSBoundParameters.Keys -icontains 'privateEndpoint')
        {
            $resource.properties["privateEndpoint"] = $privateEndpoint
        }

        if($PSBoundParameters.Keys -icontains 'privateLinkServiceConnectionState')
        {
            $resource.properties["privateLinkServiceConnectionState"] = $privateLinkServiceConnectionState
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeAutomationHybridRunbookWorker
{
    [Alias('azure_native_automation_hybridrunbookworker')]
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Azure Resource Manager Id for a virtual machine.)')]
        [string]
        $vmResourceId,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The hybrid runbook worker id)')]
        [string]
        $hybridRunbookWorkerId,
        [parameter(mandatory=$False,HelpMessage='The hybrid runbook worker group name)')]
        [string]
        $hybridRunbookWorkerGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:HybridRunbookWorker")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["hybridRunbookWorkerGroupName"] = $hybridRunbookWorkerGroupName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'vmResourceId')
        {
            $resource.properties["vmResourceId"] = $vmResourceId
        }

        if($PSBoundParameters.Keys -icontains 'hybridRunbookWorkerId')
        {
            $resource.properties["hybridRunbookWorkerId"] = $hybridRunbookWorkerId
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class DscConfigurationAssociationProperty
{
    [string] $name
}
function New-AzureNativeTypeAutomationDscConfigurationAssociationProperty
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the Dsc configuration.)')]
        [string]
        $name
    )

    process
    {
        return $([DscConfigurationAssociationProperty]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationDscNodeConfiguration
{
    [Alias('azure_native_automation_dscnodeconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tags attached to the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='If a new build version of NodeConfiguration is required.)')]
        [bool]
        $incrementNodeConfigurationBuild,
        [parameter(mandatory=$False,HelpMessage='The Dsc node configuration name.)')]
        [string]
        $nodeConfigurationName,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of the node configuration.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the configuration of the node.)')]
        [DscConfigurationAssociationProperty]
        $configuration,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the source.)')]
        [ContentSource]
        $source,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:DscNodeConfiguration")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["configuration"] = $configuration
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["source"] = $source

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'incrementNodeConfigurationBuild')
        {
            $resource.properties["incrementNodeConfigurationBuild"] = $incrementNodeConfigurationBuild
        }

        if($PSBoundParameters.Keys -icontains 'nodeConfigurationName')
        {
            $resource.properties["nodeConfigurationName"] = $nodeConfigurationName
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class LinuxProperties
{
    [ValidateSet('Unclassified', 'Critical', 'Security', 'Other')]
    [string] $includedPackageClassifications
    [ValidateSet('Unclassified', 'Critical', 'Security', 'Other')]
    [string] $rebootSetting
    [ValidateSet('Unclassified', 'Critical', 'Security', 'Other')]
    [string[]] $includedPackageNameMasks
    [ValidateSet('Unclassified', 'Critical', 'Security', 'Other')]
    [string[]] $excludedPackageNameMasks
}
function New-AzureNativeTypeAutomationLinuxProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Update classifications included in the software update configuration.)')]
        [string]
        [ValidateSet('Unclassified', 'Critical', 'Security', 'Other')]
        $includedPackageClassifications,
        [parameter(mandatory=$False,HelpMessage='Reboot setting for the software update configuration.)')]
        [string]
        $rebootSetting,
        [parameter(mandatory=$False,HelpMessage='packages included from the software update configuration.)')]
        [string[]]
        $includedPackageNameMasks,
        [parameter(mandatory=$False,HelpMessage='packages excluded from the software update configuration.)')]
        [string[]]
        $excludedPackageNameMasks
    )

    process
    {
        return $([LinuxProperties]$PSBoundParameters)
    }
}
class TagSettingsProperties
{
    [ValidateSet('Windows', 'Linux')]
    [object] $tags
    [ValidateSet('All', 'Any')]
    [object] $filterOperator
}
function New-AzureNativeTypeAutomationTagSettingsProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Dictionary of tags with its list of values.)')]
        [object]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Filter VMs by Any or All specified tags.)')]
        $filterOperator
    )

    process
    {
        return $([TagSettingsProperties]$PSBoundParameters)
    }
}
class AzureQueryProperties
{
    [ValidateSet('Windows', 'Linux')]
    [string[]] $locations
    [ValidateSet('Windows', 'Linux')]
    [string[]] $scope
    [ValidateSet('Windows', 'Linux')]
    [TagSettingsProperties] $tagSettings
}
function New-AzureNativeTypeAutomationAzureQueryProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of locations to scope the query to.)')]
        [string[]]
        $locations,
        [parameter(mandatory=$False,HelpMessage='List of Subscription or Resource Group ARM Ids.)')]
        [string[]]
        $scope,
        [parameter(mandatory=$False,HelpMessage='Tag settings for the VM.)')]
        [TagSettingsProperties]
        $tagSettings
    )

    process
    {
        return $([AzureQueryProperties]$PSBoundParameters)
    }
}
class NonAzureQueryProperties
{
    [ValidateSet('Windows', 'Linux')]
    [string] $workspaceId
    [ValidateSet('Windows', 'Linux')]
    [string] $functionAlias
}
function New-AzureNativeTypeAutomationNonAzureQueryProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Workspace Id for Log Analytics in which the saved Search is resided.)')]
        [string]
        $workspaceId,
        [parameter(mandatory=$False,HelpMessage='Log Analytics Saved Search name.)')]
        [string]
        $functionAlias
    )

    process
    {
        return $([NonAzureQueryProperties]$PSBoundParameters)
    }
}
class TargetProperties
{
    [ValidateSet('Windows', 'Linux')]
    [AzureQueryProperties[]] $azureQueries
    [ValidateSet('Windows', 'Linux')]
    [NonAzureQueryProperties[]] $nonAzureQueries
}
function New-AzureNativeTypeAutomationTargetProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of Azure queries in the software update configuration.)')]
        $azureQueries,
        [parameter(mandatory=$False,HelpMessage='List of non Azure queries in the software update configuration.)')]
        $nonAzureQueries
    )

    process
    {
        return $([TargetProperties]$PSBoundParameters)
    }
}
class WindowsProperties
{
    [ValidateSet('Windows', 'Linux')]
    [string[]] $includedKbNumbers
    [ValidateSet('Windows', 'Linux')]
    [string[]] $excludedKbNumbers
    [ValidateSet('Windows', 'Linux')]
    [string] $rebootSetting
    [ValidateSet('Unclassified', 'Critical', 'Security', 'UpdateRollup', 'FeaturePack', 'ServicePack', 'Definition', 'Tools', 'Updates')]
    [string] $includedUpdateClassifications
}
function New-AzureNativeTypeAutomationWindowsProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='KB numbers included from the software update configuration.)')]
        [string[]]
        $includedKbNumbers,
        [parameter(mandatory=$False,HelpMessage='KB numbers excluded from the software update configuration.)')]
        [string[]]
        $excludedKbNumbers,
        [parameter(mandatory=$False,HelpMessage='Reboot setting for the software update configuration.)')]
        [string]
        $rebootSetting,
        [parameter(mandatory=$False,HelpMessage='Update classification included in the software update configuration. A comma separated string with required values)')]
        [string]
        [ValidateSet('Unclassified', 'Critical', 'Security', 'UpdateRollup', 'FeaturePack', 'ServicePack', 'Definition', 'Tools', 'Updates')]
        $includedUpdateClassifications
    )

    process
    {
        return $([WindowsProperties]$PSBoundParameters)
    }
}
class UpdateConfiguration
{
    [string[]] $azureVirtualMachines
    [ValidateSet('Windows', 'Linux')]
    [object] $operatingSystem
    [ValidateSet('Windows', 'Linux')]
    [LinuxProperties] $linux
    [ValidateSet('Windows', 'Linux')]
    [string] $duration
    [ValidateSet('Windows', 'Linux')]
    [string[]] $nonAzureComputerNames
    [ValidateSet('Windows', 'Linux')]
    [TargetProperties] $targets
    [ValidateSet('Windows', 'Linux')]
    [WindowsProperties] $windows
}
function New-AzureNativeTypeAutomationUpdateConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of azure resource Ids for azure virtual machines targeted by the software update configuration.)')]
        [string[]]
        $azureVirtualMachines,
        [parameter(mandatory=$False,HelpMessage='operating system of target machines)')]
        $operatingSystem,
        [parameter(mandatory=$False,HelpMessage='Linux specific update configuration.)')]
        [LinuxProperties]
        $linux,
        [parameter(mandatory=$False,HelpMessage='Maximum time allowed for the software update configuration run. Duration needs to be specified using the format PT[n]H[n]M[n]S as per ISO8601)')]
        [string]
        $duration,
        [parameter(mandatory=$False,HelpMessage='List of names of non-azure machines targeted by the software update configuration.)')]
        [string[]]
        $nonAzureComputerNames,
        [parameter(mandatory=$False,HelpMessage='Group targets for the software update configuration.)')]
        [TargetProperties]
        $targets,
        [parameter(mandatory=$False,HelpMessage='Windows specific update configuration.)')]
        [WindowsProperties]
        $windows
    )

    process
    {
        return $([UpdateConfiguration]$PSBoundParameters)
    }
}
class TaskProperties
{
    [object] $parameters
    [string] $source
}
function New-AzureNativeTypeAutomationTaskProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the parameters of the task.)')]
        [hashtable]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the runbook.)')]
        [string]
        $source
    )

    process
    {
        return $([TaskProperties]$PSBoundParameters)
    }
}
class SoftwareUpdateConfigurationTasks
{
    [TaskProperties] $preTask
    [TaskProperties] $postTask
}
function New-AzureNativeTypeAutomationSoftwareUpdateConfigurationTasks
{
    param (
        [parameter(mandatory=$False,HelpMessage='Pre task properties.)')]
        [TaskProperties]
        $preTask,
        [parameter(mandatory=$False,HelpMessage='Post task properties.)')]
        [TaskProperties]
        $postTask
    )

    process
    {
        return $([SoftwareUpdateConfigurationTasks]$PSBoundParameters)
    }
}
class ErrorResponse
{
    [string] $code
    [string] $message
}
function New-AzureNativeTypeAutomationErrorResponse
{
    param (
        [parameter(mandatory=$False,HelpMessage='Error code)')]
        [string]
        $code,
        [parameter(mandatory=$False,HelpMessage='Error message indicating why the operation failed.)')]
        [string]
        $message
    )

    process
    {
        return $([ErrorResponse]$PSBoundParameters)
    }
}
class SUCScheduleProperties
{
    [bool] $isEnabled
    [AdvancedSchedule] $advancedSchedule
    [string] $startTime
    [string] $timeZone
    [string] $nextRun
    [ValidateSet('OneTime', 'Day', 'Hour', 'Week', 'Month', 'Minute')]
    [string] $frequency
    [ValidateSet('OneTime', 'Day', 'Hour', 'Week', 'Month', 'Minute')]
    [string] $expiryTime
    [ValidateSet('OneTime', 'Day', 'Hour', 'Week', 'Month', 'Minute')]
    [string] $lastModifiedTime
    [ValidateSet('OneTime', 'Day', 'Hour', 'Week', 'Month', 'Minute')]
    [int] $expiryTimeOffsetMinutes
    [ValidateSet('OneTime', 'Day', 'Hour', 'Week', 'Month', 'Minute')]
    [string] $description
    [ValidateSet('OneTime', 'Day', 'Hour', 'Week', 'Month', 'Minute')]
    [int] $nextRunOffsetMinutes
    [ValidateSet('OneTime', 'Day', 'Hour', 'Week', 'Month', 'Minute')]
    [int] $interval
    [ValidateSet('OneTime', 'Day', 'Hour', 'Week', 'Month', 'Minute')]
    [string] $creationTime
}
function New-AzureNativeTypeAutomationSUCScheduleProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets a value indicating whether this schedule is enabled.)')]
        [bool]
        $isEnabled,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the advanced schedule.)')]
        [AdvancedSchedule]
        $advancedSchedule,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the start time of the schedule.)')]
        [string]
        $startTime,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the time zone of the schedule.)')]
        [string]
        $timeZone,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the next run time of the schedule.)')]
        [string]
        $nextRun,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the frequency of the schedule.)')]
        [string]
        [ValidateSet('OneTime', 'Day', 'Hour', 'Week', 'Month', 'Minute')]
        $frequency,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the end time of the schedule.)')]
        [string]
        $expiryTime,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the last modified time.)')]
        [string]
        $lastModifiedTime,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the expiry time''s offset in minutes.)')]
        [int]
        $expiryTimeOffsetMinutes,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the description.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the next run time''s offset in minutes.)')]
        [int]
        $nextRunOffsetMinutes,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the interval of the schedule.)')]
        [int]
        $interval,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the creation time.)')]
        [string]
        $creationTime
    )

    process
    {
        return $([SUCScheduleProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationSoftwareUpdateConfigurationByName
{
    [Alias('azure_native_automation_softwareupdateconfigurationbyname')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='update specific properties for the Software update configuration)')]
        [UpdateConfiguration]
        $updateConfiguration,
        [parameter(mandatory=$False,HelpMessage='Tasks information for the Software update configuration.)')]
        [SoftwareUpdateConfigurationTasks]
        $tasks,
        [parameter(mandatory=$False,HelpMessage='Details of provisioning error)')]
        [ErrorResponse]
        $error,
        [parameter(mandatory=$False,HelpMessage='The name of the software update configuration to be created.)')]
        [string]
        $softwareUpdateConfigurationName,
        [parameter(mandatory=$False,HelpMessage='Schedule information for the Software update configuration)')]
        [SUCScheduleProperties]
        $scheduleInfo,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:SoftwareUpdateConfigurationByName")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["scheduleInfo"] = $scheduleInfo
        $resource.properties["updateConfiguration"] = $updateConfiguration

        if($PSBoundParameters.Keys -icontains 'tasks')
        {
            $resource.properties["tasks"] = $tasks
        }

        if($PSBoundParameters.Keys -icontains 'error')
        {
            $resource.properties["error"] = $error
        }

        if($PSBoundParameters.Keys -icontains 'softwareUpdateConfigurationName')
        {
            $resource.properties["softwareUpdateConfigurationName"] = $softwareUpdateConfigurationName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class Identity
{
    [ValidateSet('SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', 'None')]
    [object] $type
    [ValidateSet('SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', 'None')]
    [object] $userAssignedIdentities
}
function New-AzureNativeTypeAutomationIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='The identity type.)')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The list of user identities associated with the resource. The user identity dictionary key references will be ARM resource ids in the form: ''/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}''.)')]
        [object]
        $userAssignedIdentities
    )

    process
    {
        return $([Identity]$PSBoundParameters)
    }
}
class Sku
{
    [int] $capacity
    [string] $family
    [ValidateSet('Free', 'Basic')]
    [string] $name
}
function New-AzureNativeTypeAutomationSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the SKU capacity.)')]
        [int]
        $capacity,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the SKU family.)')]
        [string]
        $family,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the SKU name of the account.)')]
        [string]
        [ValidateSet('Free', 'Basic')]
        $name
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
class KeyVaultProperties
{
    [ValidateSet('Microsoft.Automation', 'Microsoft.Keyvault')]
    [string] $keyvaultUri
    [ValidateSet('Microsoft.Automation', 'Microsoft.Keyvault')]
    [string] $keyVersion
    [ValidateSet('Microsoft.Automation', 'Microsoft.Keyvault')]
    [string] $keyName
}
function New-AzureNativeTypeAutomationKeyVaultProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The URI of the key vault key used to encrypt data.)')]
        [string]
        $keyvaultUri,
        [parameter(mandatory=$False,HelpMessage='The key version of the key used to encrypt data.)')]
        [string]
        $keyVersion,
        [parameter(mandatory=$False,HelpMessage='The name of key used to encrypt data.)')]
        [string]
        $keyName
    )

    process
    {
        return $([KeyVaultProperties]$PSBoundParameters)
    }
}
class EncryptionPropertiesIdentity
{
    [ValidateSet('Microsoft.Automation', 'Microsoft.Keyvault')]
    [object] $userAssignedIdentity
}
function New-AzureNativeTypeAutomationEncryptionPropertiesIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='The user identity used for CMK. It will be an ARM resource id in the form: ''/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}''.)')]
        $userAssignedIdentity
    )

    process
    {
        return $([EncryptionPropertiesIdentity]$PSBoundParameters)
    }
}
class EncryptionProperties
{
    [ValidateSet('Microsoft.Automation', 'Microsoft.Keyvault')]
    [object] $keySource
    [ValidateSet('Microsoft.Automation', 'Microsoft.Keyvault')]
    [KeyVaultProperties] $keyVaultProperties
    [ValidateSet('Microsoft.Automation', 'Microsoft.Keyvault')]
    [EncryptionPropertiesIdentity] $identity
}
function New-AzureNativeTypeAutomationEncryptionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Encryption Key Source)')]
        $keySource,
        [parameter(mandatory=$False,HelpMessage='Key vault properties.)')]
        [KeyVaultProperties]
        $keyVaultProperties,
        [parameter(mandatory=$False,HelpMessage='User identity used for CMK.)')]
        [EncryptionPropertiesIdentity]
        $identity
    )

    process
    {
        return $([EncryptionProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationAutomationAccount
{
    [Alias('azure_native_automation_automationaccount')]
    param (
        [parameter(mandatory=$False,HelpMessage='Indicates whether traffic on the non-ARM endpoint (Webhook/Agent) is allowed from the public internet)')]
        [bool]
        $publicNetworkAccess,
        [parameter(mandatory=$False,HelpMessage='Gets or sets name of the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Sets the identity property for automation account)')]
        [Identity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Indicates whether requests using non-AAD authentication are blocked)')]
        [bool]
        $disableLocalAuth,
        [parameter(mandatory=$False,HelpMessage='Gets or sets account SKU.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tags attached to the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Set the encryption properties for the automation account)')]
        [EncryptionProperties]
        $encryption,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:AutomationAccount")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'publicNetworkAccess')
        {
            $resource.properties["publicNetworkAccess"] = $publicNetworkAccess
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'automationAccountName')
        {
            $resource.properties["automationAccountName"] = $automationAccountName
        }

        if($PSBoundParameters.Keys -icontains 'identity')
        {
            $resource.properties["identity"] = $identity
        }

        if($PSBoundParameters.Keys -icontains 'disableLocalAuth')
        {
            $resource.properties["disableLocalAuth"] = $disableLocalAuth
        }

        if($PSBoundParameters.Keys -icontains 'sku')
        {
            $resource.properties["sku"] = $sku
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'encryption')
        {
            $resource.properties["encryption"] = $encryption
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class RunbookAssociationProperty
{
    [string] $name
}
function New-AzureNativeTypeAutomationRunbookAssociationProperty
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the runbook.)')]
        [string]
        $name
    )

    process
    {
        return $([RunbookAssociationProperty]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationWebhook
{
    [Alias('azure_native_automation_webhook')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the webhook.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the expiry time.)')]
        [string]
        $expiryTime,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the runbook.)')]
        [RunbookAssociationProperty]
        $runbook,
        [parameter(mandatory=$False,HelpMessage='The webhook name.)')]
        [string]
        $webhookName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the hybrid worker group the webhook job will run on.)')]
        [string]
        $runOn,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the parameters of the job.)')]
        [hashtable]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the value of the enabled flag of webhook.)')]
        [bool]
        $isEnabled,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the uri.)')]
        [string]
        $uri,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:Webhook")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'expiryTime')
        {
            $resource.properties["expiryTime"] = $expiryTime
        }

        if($PSBoundParameters.Keys -icontains 'runbook')
        {
            $resource.properties["runbook"] = $runbook
        }

        if($PSBoundParameters.Keys -icontains 'webhookName')
        {
            $resource.properties["webhookName"] = $webhookName
        }

        if($PSBoundParameters.Keys -icontains 'runOn')
        {
            $resource.properties["runOn"] = $runOn
        }

        if($PSBoundParameters.Keys -icontains 'parameters')
        {
            $resource.properties["parameters"] = $parameters
        }

        if($PSBoundParameters.Keys -icontains 'isEnabled')
        {
            $resource.properties["isEnabled"] = $isEnabled
        }

        if($PSBoundParameters.Keys -icontains 'uri')
        {
            $resource.properties["uri"] = $uri
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class FieldDefinition
{
    [bool] $isOptional
    [string] $type
    [bool] $isEncrypted
}
function New-AzureNativeTypeAutomationFieldDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the isOptional flag of the connection field definition.)')]
        [bool]
        $isOptional,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the type of the connection field definition.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the isEncrypted flag of the connection field definition.)')]
        [bool]
        $isEncrypted
    )

    process
    {
        return $([FieldDefinition]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationConnectionType
{
    [Alias('azure_native_automation_connectiontype')]
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the connection type.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The parameters supplied to the create or update connection type operation.)')]
        [string]
        $connectionTypeName,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a Boolean value to indicate if the connection type is global.)')]
        [bool]
        $isGlobal,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the field definitions of the connection type.)')]
        [FieldDefinition]
        $fieldDefinitions,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:ConnectionType")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["fieldDefinitions"] = $fieldDefinitions
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'connectionTypeName')
        {
            $resource.properties["connectionTypeName"] = $connectionTypeName
        }

        if($PSBoundParameters.Keys -icontains 'isGlobal')
        {
            $resource.properties["isGlobal"] = $isGlobal
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class ConnectionTypeAssociationProperty
{
    [string] $name
}
function New-AzureNativeTypeAutomationConnectionTypeAssociationProperty
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the connection type.)')]
        [string]
        $name
    )

    process
    {
        return $([ConnectionTypeAssociationProperty]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationConnection
{
    [Alias('azure_native_automation_connection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the connectionType of the connection.)')]
        [ConnectionTypeAssociationProperty]
        $connectionType,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the description of the connection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the field definition properties of the connection.)')]
        [hashtable]
        $fieldDefinitionValues,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the connection.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The parameters supplied to the create or update connection operation.)')]
        [string]
        $connectionName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:Connection")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["connectionType"] = $connectionType
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'description')
        {
            $resource.properties["description"] = $description
        }

        if($PSBoundParameters.Keys -icontains 'fieldDefinitionValues')
        {
            $resource.properties["fieldDefinitionValues"] = $fieldDefinitionValues
        }

        if($PSBoundParameters.Keys -icontains 'connectionName')
        {
            $resource.properties["connectionName"] = $connectionName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class ContentLink
{
    [string] $version
    [string] $uri
    [ContentHash] $contentHash
}
function New-AzureNativeTypeAutomationContentLink
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the version of the content.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the uri of the runbook content.)')]
        [string]
        $uri,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the hash.)')]
        [ContentHash]
        $contentHash
    )

    process
    {
        return $([ContentLink]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationModule
{
    [Alias('azure_native_automation_module')]
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets name of the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tags attached to the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of module.)')]
        [string]
        $moduleName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the module content link.)')]
        [ContentLink]
        $contentLink,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:Module")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["contentLink"] = $contentLink
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'moduleName')
        {
            $resource.properties["moduleName"] = $moduleName
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class ScheduleAssociationProperty
{
    [string] $name
}
function New-AzureNativeTypeAutomationScheduleAssociationProperty
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the Schedule.)')]
        [string]
        $name
    )

    process
    {
        return $([ScheduleAssociationProperty]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationJobSchedule
{
    [Alias('azure_native_automation_jobschedule')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The job schedule name.)')]
        [string]
        $jobScheduleId,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a list of job properties.)')]
        [hashtable]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the schedule.)')]
        [ScheduleAssociationProperty]
        $schedule,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the runbook.)')]
        [RunbookAssociationProperty]
        $runbook,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the hybrid worker group that the scheduled job should run on.)')]
        [string]
        $runOn,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:JobSchedule")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["runbook"] = $runbook
        $resource.properties["schedule"] = $schedule

        if($PSBoundParameters.Keys -icontains 'jobScheduleId')
        {
            $resource.properties["jobScheduleId"] = $jobScheduleId
        }

        if($PSBoundParameters.Keys -icontains 'parameters')
        {
            $resource.properties["parameters"] = $parameters
        }

        if($PSBoundParameters.Keys -icontains 'runOn')
        {
            $resource.properties["runOn"] = $runOn
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class RunbookDraft
{
    [object] $parameters
    [ContentLink] $draftContentLink
    [bool] $inEdit
    [string] $creationTime
    [string] $lastModifiedTime
    [string[]] $outputTypes
}
class RunbookParameter
{
    [string] $defaultValue
    [int] $position
    [string] $type
    [bool] $isMandatory
}
function New-AzureNativeTypeAutomationRunbookParameter
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the default value of parameter.)')]
        [string]
        $defaultValue,
        [parameter(mandatory=$False,HelpMessage='Get or sets the position of the parameter.)')]
        [int]
        $position,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the type of the parameter.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a Boolean value to indicate whether the parameter is mandatory or not.)')]
        [bool]
        $isMandatory
    )

    process
    {
        return $([RunbookParameter]$PSBoundParameters)
    }
}
function New-AzureNativeTypeAutomationRunbookDraft
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the runbook draft parameters.)')]
        [RunbookParameter]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the draft runbook content link.)')]
        [ContentLink]
        $draftContentLink,
        [parameter(mandatory=$False,HelpMessage='Gets or sets whether runbook is in edit mode.)')]
        [bool]
        $inEdit,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the creation time of the runbook draft.)')]
        [string]
        $creationTime,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the last modified time of the runbook draft.)')]
        [string]
        $lastModifiedTime,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the runbook output types.)')]
        [string[]]
        $outputTypes
    )

    process
    {
        return $([RunbookDraft]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationRunbook
{
    [Alias('azure_native_automation_runbook')]
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tags attached to the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the published runbook content link.)')]
        [ContentLink]
        $publishContentLink,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The runbook name.)')]
        [string]
        $runbookName,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the description of the runbook.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Gets or sets progress log option.)')]
        [bool]
        $logProgress,
        [parameter(mandatory=$False,HelpMessage='Gets or sets verbose log option.)')]
        [bool]
        $logVerbose,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the draft runbook properties.)')]
        [RunbookDraft]
        $draft,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the activity-level tracing options of the runbook.)')]
        [int]
        $logActivityTrace,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the type of the runbook.)')]
        [string]
        [ValidateSet('Script', 'Graph', 'PowerShellWorkflow', 'PowerShell', 'GraphPowerShellWorkflow', 'GraphPowerShell')]
        $runbookType,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:Runbook")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["runbookType"] = $runbookType

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'publishContentLink')
        {
            $resource.properties["publishContentLink"] = $publishContentLink
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'runbookName')
        {
            $resource.properties["runbookName"] = $runbookName
        }

        if($PSBoundParameters.Keys -icontains 'description')
        {
            $resource.properties["description"] = $description
        }

        if($PSBoundParameters.Keys -icontains 'logProgress')
        {
            $resource.properties["logProgress"] = $logProgress
        }

        if($PSBoundParameters.Keys -icontains 'logVerbose')
        {
            $resource.properties["logVerbose"] = $logVerbose
        }

        if($PSBoundParameters.Keys -icontains 'draft')
        {
            $resource.properties["draft"] = $draft
        }

        if($PSBoundParameters.Keys -icontains 'logActivityTrace')
        {
            $resource.properties["logActivityTrace"] = $logActivityTrace
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeAutomationCertificate
{
    [Alias('azure_native_automation_certificate')]
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the base64 encoded value of the certificate.)')]
        [string]
        $base64Value,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the description of the certificate.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the certificate.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the thumbprint of the certificate.)')]
        [string]
        $thumbprint,
        [parameter(mandatory=$False,HelpMessage='The parameters supplied to the create or update certificate operation.)')]
        [string]
        $certificateName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the is exportable flag of the certificate.)')]
        [bool]
        $isExportable,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:Certificate")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["base64Value"] = $base64Value
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'description')
        {
            $resource.properties["description"] = $description
        }

        if($PSBoundParameters.Keys -icontains 'thumbprint')
        {
            $resource.properties["thumbprint"] = $thumbprint
        }

        if($PSBoundParameters.Keys -icontains 'certificateName')
        {
            $resource.properties["certificateName"] = $certificateName
        }

        if($PSBoundParameters.Keys -icontains 'isExportable')
        {
            $resource.properties["isExportable"] = $isExportable
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeAutomationVariable
{
    [Alias('azure_native_automation_variable')]
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the variable.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the description of the variable.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the encrypted flag of the variable.)')]
        [bool]
        $isEncrypted,
        [parameter(mandatory=$False,HelpMessage='The variable name.)')]
        [string]
        $variableName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the value of the variable.)')]
        [string]
        $value,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:Variable")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'description')
        {
            $resource.properties["description"] = $description
        }

        if($PSBoundParameters.Keys -icontains 'isEncrypted')
        {
            $resource.properties["isEncrypted"] = $isEncrypted
        }

        if($PSBoundParameters.Keys -icontains 'variableName')
        {
            $resource.properties["variableName"] = $variableName
        }

        if($PSBoundParameters.Keys -icontains 'value')
        {
            $resource.properties["value"] = $value
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class RunAsCredentialAssociationProperty
{
    [string] $name
}
function New-AzureNativeTypeAutomationRunAsCredentialAssociationProperty
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the credential.)')]
        [string]
        $name
    )

    process
    {
        return $([RunAsCredentialAssociationProperty]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationHybridRunbookWorkerGroup
{
    [Alias('azure_native_automation_hybridrunbookworkergroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Sets the credential of a worker group.)')]
        [RunAsCredentialAssociationProperty]
        $credential,
        [parameter(mandatory=$False,HelpMessage='The hybrid runbook worker group name)')]
        [string]
        $hybridRunbookWorkerGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:HybridRunbookWorkerGroup")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'credential')
        {
            $resource.properties["credential"] = $credential
        }

        if($PSBoundParameters.Keys -icontains 'hybridRunbookWorkerGroupName')
        {
            $resource.properties["hybridRunbookWorkerGroupName"] = $hybridRunbookWorkerGroupName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeAutomationCredential
{
    [Alias('azure_native_automation_credential')]
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the name of the credential.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the user name of the credential.)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the description of the credential.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The parameters supplied to the create or update credential operation.)')]
        [string]
        $credentialName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the password of the credential.)')]
        [string]
        $password,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:Credential")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["name"] = $name
        $resource.properties["password"] = $password
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["userName"] = $userName

        if($PSBoundParameters.Keys -icontains 'description')
        {
            $resource.properties["description"] = $description
        }

        if($PSBoundParameters.Keys -icontains 'credentialName')
        {
            $resource.properties["credentialName"] = $credentialName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class SourceControlSecurityTokenProperties
{
    [ValidateSet('PersonalAccessToken', 'Oauth')]
    [string] $tokenType
    [ValidateSet('PersonalAccessToken', 'Oauth')]
    [string] $refreshToken
    [ValidateSet('PersonalAccessToken', 'Oauth')]
    [string] $accessToken
}
function New-AzureNativeTypeAutomationSourceControlSecurityTokenProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The token type. Must be either PersonalAccessToken or Oauth.)')]
        [string]
        [ValidateSet('PersonalAccessToken', 'Oauth')]
        $tokenType,
        [parameter(mandatory=$False,HelpMessage='The refresh token.)')]
        [string]
        $refreshToken,
        [parameter(mandatory=$False,HelpMessage='The access token.)')]
        [string]
        $accessToken
    )

    process
    {
        return $([SourceControlSecurityTokenProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAutomationSourceControl
{
    [Alias('azure_native_automation_sourcecontrol')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='The auto publish of the source control. Default is true.)')]
        [bool]
        $publishRunbook,
        [parameter(mandatory=$False,HelpMessage='The auto async of the source control. Default is false.)')]
        [bool]
        $autoSync,
        [parameter(mandatory=$False,HelpMessage='The folder path of the source control. Path must be relative.)')]
        [string]
        $folderPath,
        [parameter(mandatory=$False,HelpMessage='The repo branch of the source control. Include branch as empty string for VsoTfvc.)')]
        [string]
        $branch,
        [parameter(mandatory=$False,HelpMessage='The repo url of the source control.)')]
        [string]
        $repoUrl,
        [parameter(mandatory=$False,HelpMessage='The authorization token for the repo of the source control.)')]
        [SourceControlSecurityTokenProperties]
        $securityToken,
        [parameter(mandatory=$False,HelpMessage='The user description of the source control.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The source control name.)')]
        [string]
        $sourceControlName,
        [parameter(mandatory=$False,HelpMessage='The source type. Must be one of VsoGit, VsoTfvc, GitHub, case sensitive.)')]
        [string]
        [ValidateSet('VsoGit', 'VsoTfvc', 'GitHub')]
        $sourceType,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:SourceControl")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'publishRunbook')
        {
            $resource.properties["publishRunbook"] = $publishRunbook
        }

        if($PSBoundParameters.Keys -icontains 'autoSync')
        {
            $resource.properties["autoSync"] = $autoSync
        }

        if($PSBoundParameters.Keys -icontains 'folderPath')
        {
            $resource.properties["folderPath"] = $folderPath
        }

        if($PSBoundParameters.Keys -icontains 'branch')
        {
            $resource.properties["branch"] = $branch
        }

        if($PSBoundParameters.Keys -icontains 'repoUrl')
        {
            $resource.properties["repoUrl"] = $repoUrl
        }

        if($PSBoundParameters.Keys -icontains 'securityToken')
        {
            $resource.properties["securityToken"] = $securityToken
        }

        if($PSBoundParameters.Keys -icontains 'description')
        {
            $resource.properties["description"] = $description
        }

        if($PSBoundParameters.Keys -icontains 'sourceControlName')
        {
            $resource.properties["sourceControlName"] = $sourceControlName
        }

        if($PSBoundParameters.Keys -icontains 'sourceType')
        {
            $resource.properties["sourceType"] = $sourceType
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeAutomationPython2Package
{
    [Alias('azure_native_automation_python2package')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the automation account.)')]
        [string]
        $automationAccountName,
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of python package.)')]
        [string]
        $packageName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the module content link.)')]
        [ContentLink]
        $contentLink,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tags attached to the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:automation:Python2Package")

        $resource.properties["automationAccountName"] = $automationAccountName
        $resource.properties["contentLink"] = $contentLink
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'packageName')
        {
            $resource.properties["packageName"] = $packageName
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        $global:pulumiresources += $resource
        return $resource
    }
}