VaporShell.Batch.Classes.ps1

using namespace System
using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.IO
using namespace System.Management.Automation
[CmdletBinding()]
Param()

Write-Verbose "Importing class 'BatchJobDefinitionVolumes'"

class BatchJobDefinitionVolumes : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionVolumes'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-volumes.html'

    hidden [object] $_host
    hidden [object] $_efsVolumeConfiguration
    hidden [object] $_name

    [BatchJobDefinitionVolumesHost] $Host
    [BatchJobDefinitionEfsVolumeConfiguration] $EfsVolumeConfiguration
    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Host -Value {
            $this._host
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionVolumesHost], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._host = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EfsVolumeConfiguration -Value {
            $this._efsVolumeConfiguration
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionEfsVolumeConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._efsVolumeConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionVolumes() : base() {}
    BatchJobDefinitionVolumes([IDictionary] $props) : base($props) {}
    BatchJobDefinitionVolumes([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionAuthorizationConfig'"

class BatchJobDefinitionAuthorizationConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionAuthorizationConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-authorizationconfig.html'

    hidden [object] $_iam
    hidden [object] $_accessPointId

    [string] $Iam
    [string] $AccessPointId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Iam -Value {
            $this._iam
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iam = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessPointId -Value {
            $this._accessPointId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessPointId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionAuthorizationConfig() : base() {}
    BatchJobDefinitionAuthorizationConfig([IDictionary] $props) : base($props) {}
    BatchJobDefinitionAuthorizationConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchSchedulingPolicyFairsharePolicy'"

class BatchSchedulingPolicyFairsharePolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchSchedulingPolicyFairsharePolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-schedulingpolicy-fairsharepolicy.html'

    hidden [object] $_shareDecaySeconds
    hidden [object] $_computeReservation
    hidden [object] $_shareDistribution

    [double] $ShareDecaySeconds
    [double] $ComputeReservation
    [BatchSchedulingPolicyShareAttributes[]] $ShareDistribution

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ShareDecaySeconds -Value {
            $this._shareDecaySeconds
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._shareDecaySeconds = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComputeReservation -Value {
            $this._computeReservation
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._computeReservation = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ShareDistribution -Value {
            $this._shareDistribution
        } -SecondValue {
            param([ValidateType(([BatchSchedulingPolicyShareAttributes], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._shareDistribution = $value
        }
    }

    BatchSchedulingPolicyFairsharePolicy() : base() {}
    BatchSchedulingPolicyFairsharePolicy([IDictionary] $props) : base($props) {}
    BatchSchedulingPolicyFairsharePolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchComputeEnvironmentComputeResources'"

class BatchComputeEnvironmentComputeResources : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchComputeEnvironmentComputeResources'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html'

    hidden [object] $_spotIamFleetRole
    hidden [object] $_maxvCpus
    hidden [object] $_ec2Configuration
    hidden [object] $_bidPercentage
    hidden [object] $_securityGroupIds
    hidden [object] $_subnets
    hidden [object] $_type
    hidden [object] $_allocationStrategy
    hidden [object] $_minvCpus
    hidden [object] $_launchTemplate
    hidden [object] $_imageId
    hidden [object] $_instanceRole
    hidden [object] $_instanceTypes
    hidden [object] $_ec2KeyPair
    hidden [object] $_placementGroup
    hidden [VSJson] $_tags
    hidden [object] $_desiredvCpus

    [string] $SpotIamFleetRole
    [int] $MaxvCpus
    [BatchComputeEnvironmentEc2ConfigurationObject[]] $Ec2Configuration
    [int] $BidPercentage
    [string[]] $SecurityGroupIds
    [string[]] $Subnets
    [string] $Type
    [string] $AllocationStrategy
    [int] $MinvCpus
    [BatchComputeEnvironmentLaunchTemplateSpecification] $LaunchTemplate
    [string] $ImageId
    [string] $InstanceRole
    [string[]] $InstanceTypes
    [string] $Ec2KeyPair
    [string] $PlacementGroup
    [VSJson] $Tags
    [int] $DesiredvCpus

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SpotIamFleetRole -Value {
            $this._spotIamFleetRole
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._spotIamFleetRole = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxvCpus -Value {
            $this._maxvCpus
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxvCpus = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ec2Configuration -Value {
            $this._ec2Configuration
        } -SecondValue {
            param([ValidateType(([BatchComputeEnvironmentEc2ConfigurationObject], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ec2Configuration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BidPercentage -Value {
            $this._bidPercentage
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bidPercentage = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityGroupIds -Value {
            $this._securityGroupIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._securityGroupIds = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Subnets -Value {
            $this._subnets
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._subnets = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllocationStrategy -Value {
            $this._allocationStrategy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allocationStrategy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinvCpus -Value {
            $this._minvCpus
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minvCpus = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LaunchTemplate -Value {
            $this._launchTemplate
        } -SecondValue {
            param([ValidateType(([BatchComputeEnvironmentLaunchTemplateSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._launchTemplate = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageId -Value {
            $this._imageId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._imageId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceRole -Value {
            $this._instanceRole
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._instanceRole = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceTypes -Value {
            $this._instanceTypes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._instanceTypes = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ec2KeyPair -Value {
            $this._ec2KeyPair
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ec2KeyPair = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PlacementGroup -Value {
            $this._placementGroup
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._placementGroup = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this._tags
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._tags = [VSJson]::Transform($value)
            Write-Debug $this._tags
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DesiredvCpus -Value {
            $this._desiredvCpus
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._desiredvCpus = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    BatchComputeEnvironmentComputeResources() : base() {}
    BatchComputeEnvironmentComputeResources([IDictionary] $props) : base($props) {}
    BatchComputeEnvironmentComputeResources([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionResourceRequirement'"

class BatchJobDefinitionResourceRequirement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionResourceRequirement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-resourcerequirement.html'

    hidden [object] $_type
    hidden [object] $_value

    [string] $Type
    [string] $Value

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionResourceRequirement() : base() {}
    BatchJobDefinitionResourceRequirement([IDictionary] $props) : base($props) {}
    BatchJobDefinitionResourceRequirement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionEnvironment'"

class BatchJobDefinitionEnvironment : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionEnvironment'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-environment.html'

    hidden [object] $_value
    hidden [object] $_name

    [string] $Value
    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionEnvironment() : base() {}
    BatchJobDefinitionEnvironment([IDictionary] $props) : base($props) {}
    BatchJobDefinitionEnvironment([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionVolumesHost'"

class BatchJobDefinitionVolumesHost : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionVolumesHost'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-volumeshost.html'

    hidden [object] $_sourcePath

    [string] $SourcePath

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourcePath -Value {
            $this._sourcePath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sourcePath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionVolumesHost() : base() {}
    BatchJobDefinitionVolumesHost([IDictionary] $props) : base($props) {}
    BatchJobDefinitionVolumesHost([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobQueueComputeEnvironmentOrder'"

class BatchJobQueueComputeEnvironmentOrder : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobQueueComputeEnvironmentOrder'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobqueue-computeenvironmentorder.html'

    hidden [object] $_computeEnvironment
    hidden [object] $_order

    [string] $ComputeEnvironment
    [int] $Order

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComputeEnvironment -Value {
            $this._computeEnvironment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._computeEnvironment = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Order -Value {
            $this._order
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._order = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    BatchJobQueueComputeEnvironmentOrder() : base() {}
    BatchJobQueueComputeEnvironmentOrder([IDictionary] $props) : base($props) {}
    BatchJobQueueComputeEnvironmentOrder([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionNodeProperties'"

class BatchJobDefinitionNodeProperties : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionNodeProperties'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-nodeproperties.html'

    hidden [object] $_mainNode
    hidden [object] $_nodeRangeProperties
    hidden [object] $_numNodes

    [int] $MainNode
    [BatchJobDefinitionNodeRangeProperty[]] $NodeRangeProperties
    [int] $NumNodes

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MainNode -Value {
            $this._mainNode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._mainNode = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NodeRangeProperties -Value {
            $this._nodeRangeProperties
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionNodeRangeProperty], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._nodeRangeProperties = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NumNodes -Value {
            $this._numNodes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._numNodes = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionNodeProperties() : base() {}
    BatchJobDefinitionNodeProperties([IDictionary] $props) : base($props) {}
    BatchJobDefinitionNodeProperties([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionRetryStrategy'"

class BatchJobDefinitionRetryStrategy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionRetryStrategy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-retrystrategy.html'

    hidden [object] $_evaluateOnExit
    hidden [object] $_attempts

    [BatchJobDefinitionEvaluateOnExit[]] $EvaluateOnExit
    [int] $Attempts

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EvaluateOnExit -Value {
            $this._evaluateOnExit
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionEvaluateOnExit], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._evaluateOnExit = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Attempts -Value {
            $this._attempts
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._attempts = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionRetryStrategy() : base() {}
    BatchJobDefinitionRetryStrategy([IDictionary] $props) : base($props) {}
    BatchJobDefinitionRetryStrategy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionSecret'"

class BatchJobDefinitionSecret : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionSecret'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-secret.html'

    hidden [object] $_valueFrom
    hidden [object] $_name

    [string] $ValueFrom
    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ValueFrom -Value {
            $this._valueFrom
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._valueFrom = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionSecret() : base() {}
    BatchJobDefinitionSecret([IDictionary] $props) : base($props) {}
    BatchJobDefinitionSecret([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionNetworkConfiguration'"

class BatchJobDefinitionNetworkConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionNetworkConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties-networkconfiguration.html'

    hidden [object] $_assignPublicIp

    [string] $AssignPublicIp

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AssignPublicIp -Value {
            $this._assignPublicIp
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._assignPublicIp = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionNetworkConfiguration() : base() {}
    BatchJobDefinitionNetworkConfiguration([IDictionary] $props) : base($props) {}
    BatchJobDefinitionNetworkConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionLogConfiguration'"

class BatchJobDefinitionLogConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionLogConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties-logconfiguration.html'

    hidden [object] $_secretOptions
    hidden [VSJson] $_options
    hidden [object] $_logDriver

    [BatchJobDefinitionSecret[]] $SecretOptions
    [VSJson] $Options
    [string] $LogDriver

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecretOptions -Value {
            $this._secretOptions
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionSecret], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._secretOptions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Options -Value {
            $this._options
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._options = [VSJson]::Transform($value)
            Write-Debug $this._options
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LogDriver -Value {
            $this._logDriver
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._logDriver = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionLogConfiguration() : base() {}
    BatchJobDefinitionLogConfiguration([IDictionary] $props) : base($props) {}
    BatchJobDefinitionLogConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchComputeEnvironmentLaunchTemplateSpecification'"

class BatchComputeEnvironmentLaunchTemplateSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchComputeEnvironmentLaunchTemplateSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-launchtemplatespecification.html'

    hidden [object] $_launchTemplateName
    hidden [object] $_version
    hidden [object] $_launchTemplateId

    [string] $LaunchTemplateName
    [string] $Version
    [string] $LaunchTemplateId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name LaunchTemplateName -Value {
            $this._launchTemplateName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._launchTemplateName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Version -Value {
            $this._version
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._version = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LaunchTemplateId -Value {
            $this._launchTemplateId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._launchTemplateId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchComputeEnvironmentLaunchTemplateSpecification() : base() {}
    BatchComputeEnvironmentLaunchTemplateSpecification([IDictionary] $props) : base($props) {}
    BatchComputeEnvironmentLaunchTemplateSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionContainerProperties'"

class BatchJobDefinitionContainerProperties : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionContainerProperties'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html'

    hidden [object] $_user
    hidden [object] $_secrets
    hidden [object] $_memory
    hidden [object] $_privileged
    hidden [object] $_linuxParameters
    hidden [object] $_fargatePlatformConfiguration
    hidden [object] $_jobRoleArn
    hidden [object] $_readonlyRootFilesystem
    hidden [object] $_vcpus
    hidden [object] $_image
    hidden [object] $_resourceRequirements
    hidden [object] $_logConfiguration
    hidden [object] $_mountPoints
    hidden [object] $_executionRoleArn
    hidden [object] $_volumes
    hidden [object] $_command
    hidden [object] $_environment
    hidden [object] $_ulimits
    hidden [object] $_networkConfiguration
    hidden [object] $_instanceType

    [string] $User
    [BatchJobDefinitionSecret[]] $Secrets
    [int] $Memory
    [bool] $Privileged
    [BatchJobDefinitionLinuxParameters] $LinuxParameters
    [BatchJobDefinitionFargatePlatformConfiguration] $FargatePlatformConfiguration
    [string] $JobRoleArn
    [bool] $ReadonlyRootFilesystem
    [int] $Vcpus
    [string] $Image
    [BatchJobDefinitionResourceRequirement[]] $ResourceRequirements
    [BatchJobDefinitionLogConfiguration] $LogConfiguration
    [BatchJobDefinitionMountPoints[]] $MountPoints
    [string] $ExecutionRoleArn
    [BatchJobDefinitionVolumes[]] $Volumes
    [string[]] $Command
    [BatchJobDefinitionEnvironment[]] $Environment
    [BatchJobDefinitionUlimit[]] $Ulimits
    [BatchJobDefinitionNetworkConfiguration] $NetworkConfiguration
    [string] $InstanceType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name User -Value {
            $this._user
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._user = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Secrets -Value {
            $this._secrets
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionSecret], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._secrets = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Memory -Value {
            $this._memory
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._memory = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Privileged -Value {
            $this._privileged
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._privileged = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LinuxParameters -Value {
            $this._linuxParameters
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionLinuxParameters], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._linuxParameters = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FargatePlatformConfiguration -Value {
            $this._fargatePlatformConfiguration
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionFargatePlatformConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fargatePlatformConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name JobRoleArn -Value {
            $this._jobRoleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._jobRoleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReadonlyRootFilesystem -Value {
            $this._readonlyRootFilesystem
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._readonlyRootFilesystem = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Vcpus -Value {
            $this._vcpus
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._vcpus = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Image -Value {
            $this._image
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._image = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceRequirements -Value {
            $this._resourceRequirements
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionResourceRequirement], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._resourceRequirements = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LogConfiguration -Value {
            $this._logConfiguration
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionLogConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._logConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MountPoints -Value {
            $this._mountPoints
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionMountPoints], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._mountPoints = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExecutionRoleArn -Value {
            $this._executionRoleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._executionRoleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Volumes -Value {
            $this._volumes
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionVolumes], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._volumes = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Command -Value {
            $this._command
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._command = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Environment -Value {
            $this._environment
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionEnvironment], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._environment = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ulimits -Value {
            $this._ulimits
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionUlimit], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ulimits = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NetworkConfiguration -Value {
            $this._networkConfiguration
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionNetworkConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._networkConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceType -Value {
            $this._instanceType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._instanceType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionContainerProperties() : base() {}
    BatchJobDefinitionContainerProperties([IDictionary] $props) : base($props) {}
    BatchJobDefinitionContainerProperties([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionMountPoints'"

class BatchJobDefinitionMountPoints : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionMountPoints'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-mountpoints.html'

    hidden [object] $_readOnly
    hidden [object] $_sourceVolume
    hidden [object] $_containerPath

    [bool] $ReadOnly
    [string] $SourceVolume
    [string] $ContainerPath

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReadOnly -Value {
            $this._readOnly
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._readOnly = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceVolume -Value {
            $this._sourceVolume
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sourceVolume = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContainerPath -Value {
            $this._containerPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._containerPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionMountPoints() : base() {}
    BatchJobDefinitionMountPoints([IDictionary] $props) : base($props) {}
    BatchJobDefinitionMountPoints([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchSchedulingPolicyShareAttributes'"

class BatchSchedulingPolicyShareAttributes : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchSchedulingPolicyShareAttributes'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-schedulingpolicy-shareattributes.html'

    hidden [object] $_shareIdentifier
    hidden [object] $_weightFactor

    [string] $ShareIdentifier
    [double] $WeightFactor

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ShareIdentifier -Value {
            $this._shareIdentifier
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._shareIdentifier = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WeightFactor -Value {
            $this._weightFactor
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._weightFactor = $value
        }
    }

    BatchSchedulingPolicyShareAttributes() : base() {}
    BatchSchedulingPolicyShareAttributes([IDictionary] $props) : base($props) {}
    BatchSchedulingPolicyShareAttributes([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionEvaluateOnExit'"

class BatchJobDefinitionEvaluateOnExit : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionEvaluateOnExit'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-evaluateonexit.html'

    hidden [object] $_action
    hidden [object] $_onExitCode
    hidden [object] $_onReason
    hidden [object] $_onStatusReason

    [string] $Action
    [string] $OnExitCode
    [string] $OnReason
    [string] $OnStatusReason

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnExitCode -Value {
            $this._onExitCode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onExitCode = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnReason -Value {
            $this._onReason
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onReason = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnStatusReason -Value {
            $this._onStatusReason
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onStatusReason = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionEvaluateOnExit() : base() {}
    BatchJobDefinitionEvaluateOnExit([IDictionary] $props) : base($props) {}
    BatchJobDefinitionEvaluateOnExit([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionUlimit'"

class BatchJobDefinitionUlimit : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionUlimit'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-ulimit.html'

    hidden [object] $_softLimit
    hidden [object] $_hardLimit
    hidden [object] $_name

    [int] $SoftLimit
    [int] $HardLimit
    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SoftLimit -Value {
            $this._softLimit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._softLimit = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HardLimit -Value {
            $this._hardLimit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hardLimit = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionUlimit() : base() {}
    BatchJobDefinitionUlimit([IDictionary] $props) : base($props) {}
    BatchJobDefinitionUlimit([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionLinuxParameters'"

class BatchJobDefinitionLinuxParameters : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionLinuxParameters'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties-linuxparameters.html'

    hidden [object] $_swappiness
    hidden [object] $_tmpfs
    hidden [object] $_sharedMemorySize
    hidden [object] $_devices
    hidden [object] $_initProcessEnabled
    hidden [object] $_maxSwap

    [int] $Swappiness
    [BatchJobDefinitionTmpfs[]] $Tmpfs
    [int] $SharedMemorySize
    [BatchJobDefinitionDevice[]] $Devices
    [bool] $InitProcessEnabled
    [int] $MaxSwap

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Swappiness -Value {
            $this._swappiness
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._swappiness = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tmpfs -Value {
            $this._tmpfs
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionTmpfs], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._tmpfs = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SharedMemorySize -Value {
            $this._sharedMemorySize
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sharedMemorySize = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Devices -Value {
            $this._devices
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionDevice], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._devices = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InitProcessEnabled -Value {
            $this._initProcessEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._initProcessEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxSwap -Value {
            $this._maxSwap
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxSwap = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionLinuxParameters() : base() {}
    BatchJobDefinitionLinuxParameters([IDictionary] $props) : base($props) {}
    BatchJobDefinitionLinuxParameters([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionFargatePlatformConfiguration'"

class BatchJobDefinitionFargatePlatformConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionFargatePlatformConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties-fargateplatformconfiguration.html'

    hidden [object] $_platformVersion

    [string] $PlatformVersion

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PlatformVersion -Value {
            $this._platformVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._platformVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionFargatePlatformConfiguration() : base() {}
    BatchJobDefinitionFargatePlatformConfiguration([IDictionary] $props) : base($props) {}
    BatchJobDefinitionFargatePlatformConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionTimeout'"

class BatchJobDefinitionTimeout : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionTimeout'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-timeout.html'

    hidden [object] $_attemptDurationSeconds

    [int] $AttemptDurationSeconds

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AttemptDurationSeconds -Value {
            $this._attemptDurationSeconds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._attemptDurationSeconds = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionTimeout() : base() {}
    BatchJobDefinitionTimeout([IDictionary] $props) : base($props) {}
    BatchJobDefinitionTimeout([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionTmpfs'"

class BatchJobDefinitionTmpfs : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionTmpfs'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-tmpfs.html'

    hidden [object] $_size
    hidden [object] $_containerPath
    hidden [object] $_mountOptions

    [int] $Size
    [string] $ContainerPath
    [string[]] $MountOptions

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Size -Value {
            $this._size
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._size = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContainerPath -Value {
            $this._containerPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._containerPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MountOptions -Value {
            $this._mountOptions
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._mountOptions = @($value)
        }
    }

    BatchJobDefinitionTmpfs() : base() {}
    BatchJobDefinitionTmpfs([IDictionary] $props) : base($props) {}
    BatchJobDefinitionTmpfs([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionNodeRangeProperty'"

class BatchJobDefinitionNodeRangeProperty : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionNodeRangeProperty'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-noderangeproperty.html'

    hidden [object] $_container
    hidden [object] $_targetNodes

    [BatchJobDefinitionContainerProperties] $Container
    [string] $TargetNodes

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Container -Value {
            $this._container
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionContainerProperties], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._container = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetNodes -Value {
            $this._targetNodes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetNodes = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionNodeRangeProperty() : base() {}
    BatchJobDefinitionNodeRangeProperty([IDictionary] $props) : base($props) {}
    BatchJobDefinitionNodeRangeProperty([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionEfsVolumeConfiguration'"

class BatchJobDefinitionEfsVolumeConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionEfsVolumeConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-efsvolumeconfiguration.html'

    hidden [object] $_transitEncryption
    hidden [object] $_authorizationConfig
    hidden [object] $_fileSystemId
    hidden [object] $_rootDirectory
    hidden [object] $_transitEncryptionPort

    [string] $TransitEncryption
    [BatchJobDefinitionAuthorizationConfig] $AuthorizationConfig
    [string] $FileSystemId
    [string] $RootDirectory
    [int] $TransitEncryptionPort

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TransitEncryption -Value {
            $this._transitEncryption
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._transitEncryption = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizationConfig -Value {
            $this._authorizationConfig
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionAuthorizationConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authorizationConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FileSystemId -Value {
            $this._fileSystemId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fileSystemId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RootDirectory -Value {
            $this._rootDirectory
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rootDirectory = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TransitEncryptionPort -Value {
            $this._transitEncryptionPort
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._transitEncryptionPort = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionEfsVolumeConfiguration() : base() {}
    BatchJobDefinitionEfsVolumeConfiguration([IDictionary] $props) : base($props) {}
    BatchJobDefinitionEfsVolumeConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinitionDevice'"

class BatchJobDefinitionDevice : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchJobDefinitionDevice'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-device.html'

    hidden [object] $_hostPath
    hidden [object] $_permissions
    hidden [object] $_containerPath

    [string] $HostPath
    [string[]] $Permissions
    [string] $ContainerPath

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HostPath -Value {
            $this._hostPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hostPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Permissions -Value {
            $this._permissions
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._permissions = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContainerPath -Value {
            $this._containerPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._containerPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchJobDefinitionDevice() : base() {}
    BatchJobDefinitionDevice([IDictionary] $props) : base($props) {}
    BatchJobDefinitionDevice([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchComputeEnvironmentEc2ConfigurationObject'"

class BatchComputeEnvironmentEc2ConfigurationObject : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBatchComputeEnvironmentEc2ConfigurationObject'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-ec2configurationobject.html'

    hidden [object] $_imageIdOverride
    hidden [object] $_imageType

    [string] $ImageIdOverride
    [string] $ImageType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageIdOverride -Value {
            $this._imageIdOverride
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._imageIdOverride = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageType -Value {
            $this._imageType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._imageType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    BatchComputeEnvironmentEc2ConfigurationObject() : base() {}
    BatchComputeEnvironmentEc2ConfigurationObject([IDictionary] $props) : base($props) {}
    BatchComputeEnvironmentEc2ConfigurationObject([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobQueue'"

class BatchJobQueue : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSBatchJobQueue'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobqueue.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Batch::JobQueue'
    [BatchJobQueueComputeEnvironmentOrder[]] $ComputeEnvironmentOrder
    [int] $Priority
    [string] $State
    [string] $SchedulingPolicyArn
    [string] $JobQueueName
    [VSJson] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComputeEnvironmentOrder -Value {
            $this.Properties['ComputeEnvironmentOrder']
        } -SecondValue {
            param([ValidateType(([BatchJobQueueComputeEnvironmentOrder], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ComputeEnvironmentOrder'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Priority -Value {
            $this.Properties['Priority']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Priority'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name State -Value {
            $this.Properties['State']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['State'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SchedulingPolicyArn -Value {
            $this.Properties['SchedulingPolicyArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SchedulingPolicyArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name JobQueueName -Value {
            $this.Properties['JobQueueName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['JobQueueName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Tags'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Tags']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    BatchJobQueue() : base() {}
    BatchJobQueue([IDictionary] $props) : base($props) {}
    BatchJobQueue([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchJobDefinition'"

class BatchJobDefinition : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSBatchJobDefinition'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Batch::JobDefinition'
    [string] $JobDefinitionType
    [VSJson] $Parameters
    [BatchJobDefinitionNodeProperties] $NodeProperties
    [int] $SchedulingPriority
    [BatchJobDefinitionTimeout] $Timeout
    [BatchJobDefinitionContainerProperties] $ContainerProperties
    [string] $JobDefinitionName
    [bool] $PropagateTags
    [string[]] $PlatformCapabilities
    [BatchJobDefinitionRetryStrategy] $RetryStrategy
    [VSJson] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name JobDefinitionType -Value {
            $this.Properties['JobDefinitionType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['JobDefinitionType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Parameters -Value {
            $this.Properties['Parameters']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Parameters'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Parameters']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NodeProperties -Value {
            $this.Properties['NodeProperties']
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionNodeProperties], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['NodeProperties'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SchedulingPriority -Value {
            $this.Properties['SchedulingPriority']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SchedulingPriority'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Timeout -Value {
            $this.Properties['Timeout']
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionTimeout], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Timeout'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContainerProperties -Value {
            $this.Properties['ContainerProperties']
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionContainerProperties], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ContainerProperties'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name JobDefinitionName -Value {
            $this.Properties['JobDefinitionName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['JobDefinitionName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PropagateTags -Value {
            $this.Properties['PropagateTags']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PropagateTags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PlatformCapabilities -Value {
            $this.Properties['PlatformCapabilities']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['PlatformCapabilities'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RetryStrategy -Value {
            $this.Properties['RetryStrategy']
        } -SecondValue {
            param([ValidateType(([BatchJobDefinitionRetryStrategy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RetryStrategy'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Tags'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Tags']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    BatchJobDefinition() : base() {}
    BatchJobDefinition([IDictionary] $props) : base($props) {}
    BatchJobDefinition([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchSchedulingPolicy'"

class BatchSchedulingPolicy : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSBatchSchedulingPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-schedulingpolicy.html'

    hidden [string[]] $_attributes = @('Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::Batch::SchedulingPolicy'
    [string] $Name
    [BatchSchedulingPolicyFairsharePolicy] $FairsharePolicy
    [string] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FairsharePolicy -Value {
            $this.Properties['FairsharePolicy']
        } -SecondValue {
            param([ValidateType(([BatchSchedulingPolicyFairsharePolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FairsharePolicy'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    BatchSchedulingPolicy() : base() {}
    BatchSchedulingPolicy([IDictionary] $props) : base($props) {}
    BatchSchedulingPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'BatchComputeEnvironment'"

class BatchComputeEnvironment : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSBatchComputeEnvironment'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-computeenvironment.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Batch::ComputeEnvironment'
    [int] $UnmanagedvCpus
    [string] $ComputeEnvironmentType
    [string] $ServiceRole
    [string] $ComputeEnvironmentName
    [BatchComputeEnvironmentComputeResources] $ComputeResources
    [string] $State
    [VSJson] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name UnmanagedvCpus -Value {
            $this.Properties['UnmanagedvCpus']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['UnmanagedvCpus'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComputeEnvironmentType -Value {
            $this.Properties['ComputeEnvironmentType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ComputeEnvironmentType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceRole -Value {
            $this.Properties['ServiceRole']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ServiceRole'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComputeEnvironmentName -Value {
            $this.Properties['ComputeEnvironmentName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ComputeEnvironmentName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComputeResources -Value {
            $this.Properties['ComputeResources']
        } -SecondValue {
            param([ValidateType(([BatchComputeEnvironmentComputeResources], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ComputeResources'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name State -Value {
            $this.Properties['State']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['State'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Tags'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Tags']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    BatchComputeEnvironment() : base() {}
    BatchComputeEnvironment([IDictionary] $props) : base($props) {}
    BatchComputeEnvironment([psobject] $props) : base($props) {}
}