pspulumiyaml.azurenative.labservices.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionLabservicesListGlobalUserEnvironments
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource Id of the lab)')]
        [string]
        $labId,
        [parameter(mandatory=$False,HelpMessage='The name of the user.)')]
        [string]
        $userName
    )

    process
    {
        $arguments = @{}
        $arguments["userName"] = $userName

        if($PSBoundParameters.Keys -icontains 'labId')
        {
            $arguments["labId"] = $labId
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:listGlobalUserEnvironments -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetLabAccountRegionalAvailability
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getLabAccountRegionalAvailability -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesListGlobalUserLabs
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the user.)')]
        [string]
        $userName
    )

    process
    {
        $arguments = @{}
        $arguments["userName"] = $userName

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:listGlobalUserLabs -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetUser
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='Specify the $expand query. Example: ''properties($select=email)'')')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the lab.)')]
        [string]
        $labName,
        [parameter(mandatory=$False,HelpMessage='The name of the user.)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["labAccountName"] = $labAccountName
        $arguments["labName"] = $labName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["userName"] = $userName

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getUser -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetGalleryImage
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the gallery Image.)')]
        [string]
        $galleryImageName,
        [parameter(mandatory=$False,HelpMessage='Specify the $expand query. Example: ''properties($select=author)'')')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["galleryImageName"] = $galleryImageName
        $arguments["labAccountName"] = $labAccountName
        $arguments["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getGalleryImage -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetEnvironmentSetting
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the environment Setting.)')]
        [string]
        $environmentSettingName,
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='Specify the $expand query. Example: ''properties($select=publishingState)'')')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the lab.)')]
        [string]
        $labName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["environmentSettingName"] = $environmentSettingName
        $arguments["labAccountName"] = $labAccountName
        $arguments["labName"] = $labName
        $arguments["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getEnvironmentSetting -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetEnvironment
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='Specify the $expand query. Example: ''properties($expand=networkInterface)'')')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the environment Setting.)')]
        [string]
        $environmentSettingName,
        [parameter(mandatory=$False,HelpMessage='The name of the lab.)')]
        [string]
        $labName,
        [parameter(mandatory=$False,HelpMessage='The name of the environment.)')]
        [string]
        $environmentName
    )

    process
    {
        $arguments = @{}
        $arguments["environmentName"] = $environmentName
        $arguments["environmentSettingName"] = $environmentSettingName
        $arguments["labAccountName"] = $labAccountName
        $arguments["labName"] = $labName
        $arguments["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getEnvironment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetGlobalUserEnvironment
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resourceId of the environment)')]
        [string]
        $environmentId,
        [parameter(mandatory=$False,HelpMessage='Specify the $expand query. Example: ''properties($expand=environment)'')')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the user.)')]
        [string]
        $userName
    )

    process
    {
        $arguments = @{}
        $arguments["environmentId"] = $environmentId
        $arguments["userName"] = $userName

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getGlobalUserEnvironment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetGlobalUserOperationStatus
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the user.)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='The operation url of long running operation)')]
        [string]
        $operationUrl
    )

    process
    {
        $arguments = @{}
        $arguments["operationUrl"] = $operationUrl
        $arguments["userName"] = $userName

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getGlobalUserOperationStatus -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the schedule that uniquely identifies it within containing lab. Used in resource URIs.)')]
        [string]
        $scheduleName,
        [parameter(mandatory=$False,HelpMessage='The name of the lab that uniquely identifies it within containing lab account. Used in resource URIs.)')]
        [string]
        $labName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getSchedule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetGlobalUserPersonalPreferences
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource Id of the lab account)')]
        [string]
        $labAccountResourceId,
        [parameter(mandatory=$False,HelpMessage='Enum indicating if user is adding or removing a favorite lab)')]
        [string]
        [ValidateSet('Add', 'Remove')]
        $addRemove,
        [parameter(mandatory=$False,HelpMessage='The name of the user.)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='Resource Id of the lab to add/remove from the favorites list)')]
        [string]
        $labResourceId
    )

    process
    {
        $arguments = @{}
        $arguments["userName"] = $userName

        if($PSBoundParameters.Keys -icontains 'labAccountResourceId')
        {
            $arguments["labAccountResourceId"] = $labAccountResourceId
        }

        if($PSBoundParameters.Keys -icontains 'addRemove')
        {
            $arguments["addRemove"] = $addRemove
        }

        if($PSBoundParameters.Keys -icontains 'labResourceId')
        {
            $arguments["labResourceId"] = $labResourceId
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getGlobalUserPersonalPreferences -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetLabPlan
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the lab plan that uniquely identifies it within containing resource group. Used in resource URIs and in UI.)')]
        [string]
        $labPlanName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getLabPlan -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetGlobalUserOperationBatchStatus
{
    param (
        [parameter(mandatory=$False,HelpMessage='The operation url of long running operation)')]
        [string[]]
        $urls,
        [parameter(mandatory=$False,HelpMessage='The name of the user.)')]
        [string]
        $userName
    )

    process
    {
        $arguments = @{}
        $arguments["urls"] = $urls
        $arguments["userName"] = $userName

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getGlobalUserOperationBatchStatus -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetLab
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='Specify the $expand query. Example: ''properties($select=maxUsersInLab)'')')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the lab.)')]
        [string]
        $labName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["labAccountName"] = $labAccountName
        $arguments["labName"] = $labName
        $arguments["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getLab -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionLabservicesGetLabAccount
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='Specify the $expand query. Example: ''properties($expand=sizeConfiguration)'')')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:labservices:getLabAccount -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class AutoShutdownProfile
{
    [ArgumentCompletions('Enabled', 'Disabled')]
    [object] $shutdownOnDisconnect
    [ArgumentCompletions('None', 'UserAbsence', 'LowUsage')]
    [object] $shutdownOnIdle
    [string] $disconnectDelay
    [string] $noConnectDelay
    [string] $idleDelay
    [ArgumentCompletions('Enabled', 'Disabled')]
    [object] $shutdownWhenNotConnected
}
function New-AzureNativeTypeLabservicesAutoShutdownProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Whether shutdown on disconnect is enabled)')]
        $shutdownOnDisconnect,
        [parameter(mandatory=$False,HelpMessage='Whether a VM will get shutdown when it has idled for a period of time.)')]
        $shutdownOnIdle,
        [parameter(mandatory=$False,HelpMessage='The amount of time a VM will stay running after a user disconnects if this behavior is enabled.)')]
        [string]
        $disconnectDelay,
        [parameter(mandatory=$False,HelpMessage='The amount of time a VM will stay running before it is shutdown if no connection is made and this behavior is enabled.)')]
        [string]
        $noConnectDelay,
        [parameter(mandatory=$False,HelpMessage='The amount of time a VM will idle before it is shutdown if this behavior is enabled.)')]
        [string]
        $idleDelay,
        [parameter(mandatory=$False,HelpMessage='Whether a VM will get shutdown when it hasn''t been connected to after a period of time.)')]
        $shutdownWhenNotConnected
    )

    process
    {
        return $([AutoShutdownProfile]$PSBoundParameters)
    }
}
class ConnectionProfile
{
    [ArgumentCompletions('Public', 'Private', 'None')]
    [object] $webSshAccess
    [ArgumentCompletions('Public', 'Private', 'None')]
    [object] $clientSshAccess
    [ArgumentCompletions('Public', 'Private', 'None')]
    [object] $clientRdpAccess
    [ArgumentCompletions('Public', 'Private', 'None')]
    [object] $webRdpAccess
}
function New-AzureNativeTypeLabservicesConnectionProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The enabled access level for Web Access over SSH.)')]
        $webSshAccess,
        [parameter(mandatory=$False,HelpMessage='The enabled access level for Client Access over SSH.)')]
        $clientSshAccess,
        [parameter(mandatory=$False,HelpMessage='The enabled access level for Client Access over RDP.)')]
        $clientRdpAccess,
        [parameter(mandatory=$False,HelpMessage='The enabled access level for Web Access over RDP.)')]
        $webRdpAccess
    )

    process
    {
        return $([ConnectionProfile]$PSBoundParameters)
    }
}
class SupportInfo
{
    [string] $phone
    [string] $email
    [string] $instructions
    [string] $url
}
function New-AzureNativeTypeLabservicesSupportInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Support contact phone number.)')]
        [string]
        $phone,
        [parameter(mandatory=$False,HelpMessage='Support contact email address.)')]
        [string]
        $email,
        [parameter(mandatory=$False,HelpMessage='Support instructions.)')]
        [string]
        $instructions,
        [parameter(mandatory=$False,HelpMessage='Support web address.)')]
        [string]
        $url
    )

    process
    {
        return $([SupportInfo]$PSBoundParameters)
    }
}
class LabPlanNetworkProfile
{
    [string] $subnetId
}
function New-AzureNativeTypeLabservicesLabPlanNetworkProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The external subnet resource id)')]
        [string]
        $subnetId
    )

    process
    {
        return $([LabPlanNetworkProfile]$PSBoundParameters)
    }
}
function New-AzureNativeLabservicesLabPlan
{
    [Alias('azure_native_labservices_labplan')]
    param (
        [parameter(mandatory=$False,HelpMessage='The allowed regions for the lab creator to use when creating labs using this lab plan.)')]
        [string[]]
        $allowedRegions,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the lab plan that uniquely identifies it within containing resource group. Used in resource URIs and in UI.)')]
        [string]
        $labPlanName,
        [parameter(mandatory=$False,HelpMessage='Resource ID of the Shared Image Gallery attached to this lab plan. When saving a lab template virtual machine image it will be persisted in this gallery. Shared images from the gallery can be made available to use when creating new labs.)')]
        [string]
        $sharedGalleryId,
        [parameter(mandatory=$False,HelpMessage='The default lab shutdown profile. This can be changed on a lab resource and only provides a default profile.)')]
        [AutoShutdownProfile]
        $defaultAutoShutdownProfile,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The default lab connection profile. This can be changed on a lab resource and only provides a default profile.)')]
        [ConnectionProfile]
        $defaultConnectionProfile,
        [parameter(mandatory=$False,HelpMessage='Support contact information and instructions for users of the lab plan. This information is displayed to lab owners and virtual machine users for all labs in the lab plan.)')]
        [SupportInfo]
        $supportInfo,
        [parameter(mandatory=$False,HelpMessage='Base Url of the lms instance this lab plan can link lab rosters against.)')]
        [string]
        $linkedLmsInstance,
        [parameter(mandatory=$False,HelpMessage='The lab plan network profile. To enforce lab network policies they must be defined here and cannot be changed when there are existing labs associated with this lab plan.)')]
        [LabPlanNetworkProfile]
        $defaultNetworkProfile,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeLabservicesLab
{
    [Alias('azure_native_labservices_lab')]
    param (
        [parameter(mandatory=$False,HelpMessage='Maximum number of users allowed in the lab.)')]
        [int]
        $maxUsersInLab,
        [parameter(mandatory=$False,HelpMessage='The location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Lab user access mode (open to all vs. restricted to those listed on the lab).)')]
        [string]
        [ValidateSet('Restricted', 'Open')]
        $userAccessMode,
        [parameter(mandatory=$False,HelpMessage='The provisioning status of the resource.)')]
        [string]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage='The tags of the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The unique immutable identifier of a resource (Guid).)')]
        [string]
        $uniqueIdentifier,
        [parameter(mandatory=$False,HelpMessage='The name of the lab.)')]
        [string]
        $labName,
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='Maximum duration a user can use an environment for in the lab.)')]
        [string]
        $usageQuota,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["labAccountName"] = $labAccountName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ResourceSet
{
    [string] $resourceSettingId
    [string] $vmResourceId
}
function New-AzureNativeTypeLabservicesResourceSet
{
    param (
        [parameter(mandatory=$False,HelpMessage='resourceSettingId for the environment)')]
        [string]
        $resourceSettingId,
        [parameter(mandatory=$False,HelpMessage='VM resource Id for the environment)')]
        [string]
        $vmResourceId
    )

    process
    {
        return $([ResourceSet]$PSBoundParameters)
    }
}
function New-AzureNativeLabservicesEnvironment
{
    [Alias('azure_native_labservices_environment')]
    param (
        [parameter(mandatory=$False,HelpMessage='The unique immutable identifier of a resource (Guid).)')]
        [string]
        $uniqueIdentifier,
        [parameter(mandatory=$False,HelpMessage='The location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The set of a VM and the setting id it was created for)')]
        [ResourceSet]
        $resourceSets,
        [parameter(mandatory=$False,HelpMessage='The name of the environment Setting.)')]
        [string]
        $environmentSettingName,
        [parameter(mandatory=$False,HelpMessage='The provisioning status of the resource.)')]
        [string]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage='The tags of the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the lab.)')]
        [string]
        $labName,
        [parameter(mandatory=$False,HelpMessage='The name of the environment.)')]
        [string]
        $environmentName,
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["environmentSettingName"] = $environmentSettingName
        $resource.properties["labAccountName"] = $labAccountName
        $resource.properties["labName"] = $labName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeLabservicesGalleryImage
{
    [Alias('azure_native_labservices_galleryimage')]
    param (
        [parameter(mandatory=$False,HelpMessage='The unique immutable identifier of a resource (Guid).)')]
        [string]
        $uniqueIdentifier,
        [parameter(mandatory=$False,HelpMessage='The location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the gallery Image.)')]
        [string]
        $galleryImageName,
        [parameter(mandatory=$False,HelpMessage='Indicates whether this gallery image is enabled.)')]
        [bool]
        $isEnabled,
        [parameter(mandatory=$False,HelpMessage='The provisioning status of the resource.)')]
        [string]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage='The tags of the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Indicates whether this gallery has been overridden for this lab account)')]
        [bool]
        $isOverride,
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='Indicates if the plan has been authorized for programmatic deployment.)')]
        [bool]
        $isPlanAuthorized,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["labAccountName"] = $labAccountName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeLabservicesUser
{
    [Alias('azure_native_labservices_user')]
    param (
        [parameter(mandatory=$False,HelpMessage='The provisioning status of the resource.)')]
        [string]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage='The tags of the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='The name of the lab.)')]
        [string]
        $labName,
        [parameter(mandatory=$False,HelpMessage='The location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the user.)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The unique immutable identifier of a resource (Guid).)')]
        [string]
        $uniqueIdentifier,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["labAccountName"] = $labAccountName
        $resource.properties["labName"] = $labName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class RecurrencePattern
{
    [int] $interval
    [string] $expirationDate
    [ArgumentCompletions('Daily', 'Weekly')]
    [object] $frequency
    [ArgumentCompletions('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday')]
    [string] $weekDays
}
function New-AzureNativeTypeLabservicesRecurrencePattern
{
    param (
        [parameter(mandatory=$False,HelpMessage='The interval to invoke the schedule on. For example, interval = 2 and RecurrenceFrequency.Daily will run every 2 days. When no interval is supplied, an interval of 1 is used.)')]
        [int]
        $interval,
        [parameter(mandatory=$False,HelpMessage='When the recurrence will expire. This date is inclusive.)')]
        [string]
        $expirationDate,
        [parameter(mandatory=$False,HelpMessage='The frequency of the recurrence.)')]
        $frequency,
        [parameter(mandatory=$False,HelpMessage='The week days the schedule runs. Used for when the Frequency is set to Weekly.)')]
        $weekDays
    )

    process
    {
        return $([RecurrencePattern]$PSBoundParameters)
    }
}
function New-AzureNativeLabservicesSchedule
{
    [Alias('azure_native_labservices_schedule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The IANA timezone id for the schedule.)')]
        [string]
        $timeZoneId,
        [parameter(mandatory=$False,HelpMessage='When lab user virtual machines will be stopped. Timestamp offsets will be ignored and timeZoneId is used instead.)')]
        [string]
        $stopAt,
        [parameter(mandatory=$False,HelpMessage='When lab user virtual machines will be started. Timestamp offsets will be ignored and timeZoneId is used instead.)')]
        [string]
        $startAt,
        [parameter(mandatory=$False,HelpMessage='The name of the lab that uniquely identifies it within containing lab account. Used in resource URIs.)')]
        [string]
        $labName,
        [parameter(mandatory=$False,HelpMessage='Notes for this schedule.)')]
        [string]
        $notes,
        [parameter(mandatory=$False,HelpMessage='The name of the schedule that uniquely identifies it within containing lab. Used in resource URIs.)')]
        [string]
        $scheduleName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The recurrence pattern of the scheduled actions.)')]
        [RecurrencePattern]
        $recurrencePattern,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["labName"] = $labName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["stopAt"] = $stopAt
        $resource.properties["timeZoneId"] = $timeZoneId

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ReferenceVm
{
    [string] $userName
    [string] $password
}
function New-AzureNativeTypeLabservicesReferenceVm
{
    param (
        [parameter(mandatory=$False,HelpMessage='The username of the virtual machine)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='The password of the virtual machine. This will be set to null in GET resource API)')]
        [string]
        $password
    )

    process
    {
        return $([ReferenceVm]$PSBoundParameters)
    }
}
class ResourceSettings
{
    [ReferenceVm] $referenceVm
    [ArgumentCompletions('Basic', 'Standard', 'Performance')]
    [string] $size
    [string] $galleryImageResourceId
}
function New-AzureNativeTypeLabservicesResourceSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Details specific to Reference Vm)')]
        [ReferenceVm]
        $referenceVm,
        [parameter(mandatory=$False,HelpMessage='The size of the virtual machine)')]
        [string]
        [ValidateSet('Basic', 'Standard', 'Performance')]
        $size,
        [parameter(mandatory=$False,HelpMessage='The resource id of the gallery image used for creating the virtual machine)')]
        [string]
        $galleryImageResourceId
    )

    process
    {
        return $([ResourceSettings]$PSBoundParameters)
    }
}
function New-AzureNativeLabservicesEnvironmentSetting
{
    [Alias('azure_native_labservices_environmentsetting')]
    param (
        [parameter(mandatory=$False,HelpMessage='Describes the user''s progress in configuring their environment setting)')]
        [string]
        [ValidateSet('NotApplicable', 'Completed')]
        $configurationState,
        [parameter(mandatory=$False,HelpMessage='The location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='Brief title describing the environment and its resource settings)')]
        [string]
        $title,
        [parameter(mandatory=$False,HelpMessage='The provisioning status of the resource.)')]
        [string]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage='The tags of the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The unique immutable identifier of a resource (Guid).)')]
        [string]
        $uniqueIdentifier,
        [parameter(mandatory=$False,HelpMessage='The resource specific settings)')]
        [ResourceSettings]
        $resourceSettings,
        [parameter(mandatory=$False,HelpMessage='The name of the lab.)')]
        [string]
        $labName,
        [parameter(mandatory=$False,HelpMessage='The name of the environment Setting.)')]
        [string]
        $environmentSettingName,
        [parameter(mandatory=$False,HelpMessage='Describes the environment and its resource settings)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["labAccountName"] = $labAccountName
        $resource.properties["labName"] = $labName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["resourceSettings"] = $resourceSettings

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeLabservicesLabAccount
{
    [Alias('azure_native_labservices_labaccount')]
    param (
        [parameter(mandatory=$False,HelpMessage='The provisioning status of the resource.)')]
        [string]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage='The name of the lab Account.)')]
        [string]
        $labAccountName,
        [parameter(mandatory=$False,HelpMessage='Represents if region selection is enabled)')]
        [bool]
        $enabledRegionSelection,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The unique immutable identifier of a resource (Guid).)')]
        [string]
        $uniqueIdentifier,
        [parameter(mandatory=$False,HelpMessage='The tags of the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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