Citrix Virtual Apps and Desktops SDK

Set-ProvScheme

Changes the parameter values for a provisioning scheme.

Syntax

Set-ProvScheme
   [-Version <Int32>]
   [-ProvisioningSchemeName] <String>
   [-VMCpuCount <Int32>]
   [-VMMemoryMB <Int32>]
   [-CustomProperties <String>]
   [-ServiceOffering <String>]
   [-PassThru]
   [-MachineProfile <String>]
   [-NetworkMapping <Hashtable>]
   [-SecurityGroup <String[]>]
   [-WriteBackCacheDiskSize <Int32>]
   [-WriteBackCacheMemorySize <Int32>]
   [-LoggingId <Guid>]
   [<CitrixCommonParameters>]
   [<CommonParameters>]
<!--NeedCopy-->
Set-ProvScheme
   [-Version <Int32>]
   [-ProvisioningSchemeName] <String>
   [-VMCpuCount <Int32>]
   [-VMMemoryMB <Int32>]
   -IdentityPoolName <String>
   [-CustomProperties <String>]
   [-ServiceOffering <String>]
   [-PassThru]
   [-MachineProfile <String>]
   [-NetworkMapping <Hashtable>]
   [-SecurityGroup <String[]>]
   [-WriteBackCacheDiskSize <Int32>]
   [-WriteBackCacheMemorySize <Int32>]
   [-LoggingId <Guid>]
   [<CitrixCommonParameters>]
   [<CommonParameters>]
<!--NeedCopy-->
Set-ProvScheme
   [-Version <Int32>]
   [-ProvisioningSchemeName] <String>
   [-VMCpuCount <Int32>]
   [-VMMemoryMB <Int32>]
   -IdentityPoolUid <Guid>
   [-CustomProperties <String>]
   [-ServiceOffering <String>]
   [-PassThru]
   [-MachineProfile <String>]
   [-NetworkMapping <Hashtable>]
   [-SecurityGroup <String[]>]
   [-WriteBackCacheDiskSize <Int32>]
   [-WriteBackCacheMemorySize <Int32>]
   [-LoggingId <Guid>]
   [<CitrixCommonParameters>]
   [<CommonParameters>]
<!--NeedCopy-->
Set-ProvScheme
   [-Version <Int32>]
   -ProvisioningSchemeUid <Guid>
   [-VMCpuCount <Int32>]
   [-VMMemoryMB <Int32>]
   [-CustomProperties <String>]
   [-ServiceOffering <String>]
   [-PassThru]
   [-MachineProfile <String>]
   [-NetworkMapping <Hashtable>]
   [-SecurityGroup <String[]>]
   [-WriteBackCacheDiskSize <Int32>]
   [-WriteBackCacheMemorySize <Int32>]
   [-LoggingId <Guid>]
   [<CitrixCommonParameters>]
   [<CommonParameters>]
<!--NeedCopy-->
Set-ProvScheme
   [-Version <Int32>]
   -ProvisioningSchemeUid <Guid>
   [-VMCpuCount <Int32>]
   [-VMMemoryMB <Int32>]
   -IdentityPoolName <String>
   [-CustomProperties <String>]
   [-ServiceOffering <String>]
   [-PassThru]
   [-MachineProfile <String>]
   [-NetworkMapping <Hashtable>]
   [-SecurityGroup <String[]>]
   [-WriteBackCacheDiskSize <Int32>]
   [-WriteBackCacheMemorySize <Int32>]
   [-LoggingId <Guid>]
   [<CitrixCommonParameters>]
   [<CommonParameters>]
<!--NeedCopy-->
Set-ProvScheme
   [-Version <Int32>]
   -ProvisioningSchemeUid <Guid>
   [-VMCpuCount <Int32>]
   [-VMMemoryMB <Int32>]
   -IdentityPoolUid <Guid>
   [-CustomProperties <String>]
   [-ServiceOffering <String>]
   [-PassThru]
   [-MachineProfile <String>]
   [-NetworkMapping <Hashtable>]
   [-SecurityGroup <String[]>]
   [-WriteBackCacheDiskSize <Int32>]
   [-WriteBackCacheMemorySize <Int32>]
   [-LoggingId <Guid>]
   [<CitrixCommonParameters>]
   [<CommonParameters>]
<!--NeedCopy-->

Description

Provides the ability to update the parameters of an existing provisioning scheme. It increments the provisioning scheme’s ProvisioningSchemeVersion by 1 each time it is called.

The following parameters are allowed to be updated:

  • Number of CPUs that will be used for VMs created from the provisioning scheme.
  • Maximum amount of memory that will be used for VMs created from the provisioning scheme.
  • Identity pool that will be used for VMs created from the provisioning scheme.
  • Machine profile that will be used for VMs created from the provisioning scheme.
  • Cloud service offering that will be used for VMs created from the provisioning scheme.
  • Custom properties of the provisioning scheme that are specific to the target hosting infrastructure.

To change the provisioning scheme name, see Rename-ProvScheme.

Examples

EXAMPLE 1

Updates a provisioning scheme called “MyScheme” to use two processors on the VMs that are created from the provisioning scheme.

Set-ProvScheme -ProvisioningSchemeName MyScheme -VMCpuCount 2


CleanOnBoot                  : True
ControllerAddress            : {ddcA.citrix.com,ddcB.citrix.com,ddcC.citrix2.com}
CpuCount                     : 2
DiskSize                     : 20
HostingUnitName              : XenHU
HostingUnitUid               : 01a4a008-8ce8-4165-ba9c-cdf15a6b0501
IdentityPoolName             : idPool1
IdentityPoolUid              : 03743136-e43b-4a87-af74-ab71686b3c16
MachineCount                 : 0
MachineProfile               :
MasterImageVM                : Base.vm
MasterImageVMDate            : 17/05/2020 09:53:40
MemoryMB                     : 1024
Metadata                     : {Department = Sales}
MetadataMap                  : {[Department = Sales]}
ProvisioningSchemeName       : MyScheme
ProvisioningSchemeUid        : 7585f0de-192e-4847-a6d8-22713c3a2f42
ProvisioningSchemeVersion    : 1
TaskId                       : 00000000-0000-0000-0000-000000000000
VMMetadata                   : {0, 1, 0, 0...}
PersonalVDiskDriveLetter     :
PersonalVDiskDriveSize       : 0
UsePersonalVDiskStorage      : False
NetworkMaps                  : {0}
Scopes                       :
DedicatedTenancy             : False
GpuTypeId                    :
ResetAdministratorPasswords  : False
SecurityGroups               : {}
ServiceOffering              :
TenancyType                  : Shared
AzureAdJoinType              :
CurrentMasterImageUid        : c0571690-4f57-4476-901b-fe64d6aecb79
CustomProperties             :
IdentityType:                : ActiveDirectory
UseFullDiskCloneProvisioning : False
UseWriteBackCache            : True
WriteBackCacheDiskSize       : 24
WriteBackCacheMemorySize     : 256
Warnings                     : {}
WriteBackCacheDiskIndex      : 0
<!--NeedCopy-->

EXAMPLE 2

Updates a provisioning scheme called “MyScheme” to use the machine profile called 1.0.

Set-ProvScheme -ProvisioningSchemeName MyScheme -MachineProfile XDHyp:\HostingUnits\AzureHostingUnit\machineprofile.folder\RG.resourcegroup\TS.templatespec\1.0.templatespecversion


CleanOnBoot                  : True
ControllerAddress            : {ddcA.citrix.com,ddcB.citrix.com,ddcC.citrix2.com}
CpuCount                     :
DiskSize                     : 20
HostingUnitName              : AzureHostingUnit
HostingUnitUid               : 01a4a008-8ce8-4165-ba9c-cdf15a6b0501
IdentityPoolName             : idPool1
IdentityPoolUid              : 03743136-e43b-4a87-af74-ab71686b3c16
MachineCount                 : 0
MachineProfile               : XDHyp:\HostingUnits\AzureHostingUnit\machineprofile.folder\RG.resourcegroup\TS.templatespec\1.0.templatespecversion
MasterImageVM                : Base.vm
MasterImageVMDate            : 17/05/2020 09:53:40
MemoryMB                     : 1024
Metadata                     : {Department = Sales}
MetadataMap                  : {[Department = Sales]}
ProvisioningSchemeName       : MyScheme
ProvisioningSchemeUid        : 7585f0de-192e-4847-a6d8-22713c3a2f42
ProvisioningSchemeVersion    : 1
TaskId                       : 00000000-0000-0000-0000-000000000000
VMMetadata                   : {0, 1, 0, 0...}
PersonalVDiskDriveLetter     :
PersonalVDiskDriveSize       : 0
UsePersonalVDiskStorage      : False
NetworkMaps                  : {0}
Scopes                       :
DedicatedTenancy             : False
GpuTypeId                    :
ResetAdministratorPasswords  : False
SecurityGroups               : {}
ServiceOffering              :
TenancyType                  : Shared
AzureAdJoinType              :
CurrentMasterImageUid        : c0571690-4f57-4476-901b-fe64d6aecb79
CustomProperties             :
IdentityType:                : ActiveDirectory
UseFullDiskCloneProvisioning : False
UseWriteBackCache            : True
WriteBackCacheDiskSize       : 24
WriteBackCacheMemorySize     : 256
Warnings:                    : {}
WriteBackCacheDiskIndex      : 0
<!--NeedCopy-->

EXAMPLE 3

Updates a provisioning scheme to have a new MachineProfile. The provisioning scheme state is then reverted back to version 1 and the original MachineProfile.

Get-ProvScheme | select ProvisioningSchemeName, MachineProfile, ProvisioningSchemeVersion

ProvisioningSchemeName MachineProfile                                                                                                                        ProvisioningSchemeVersion
---------------------- --------------                                                                                                                        -------------------------
AzureCatalog           XDHyp:\HostingUnits\AzureRes\machineprofile.folder\rg.resourcegroup\machineprofile.templatespec\1.0.templatespecversion                                       1

Set-ProvScheme -ProvisioningSchemeName AzureCatalog -MachineProfile XDHyp:\HostingUnits\AzureRes\machineprofile.folder\rg.resourcegroup\machineprofile.templatespec\2.0.templatespecversion

Get-ProvScheme | select ProvisioningSchemeName, MachineProfile, ProvisioningSchemeVersion

ProvisioningSchemeName MachineProfile                                                                                                                        ProvisioningSchemeVersion
---------------------- --------------                                                                                                                        -------------------------
AzureCatalog           XDHyp:\HostingUnits\AzureRes\machineprofile.folder\rg.resourcegroup\machineprofile.templatespec\2.0.templatespecversion                                       2

Set-ProvScheme -ProvisioningSchemeName MyScheme -Version 1

Get-ProvScheme | select ProvisioningSchemeName, MachineProfile, ProvisioningSchemeVersion

ProvisioningSchemeName MachineProfile                                                                                                                        ProvisioningSchemeVersion
---------------------- --------------                                                                                                                        -------------------------
AzureCatalog           XDHyp:\HostingUnits\AzureRes\machineprofile.folder\rg.resourcegroup\machineprofile.templatespec\1.0.templatespecversion                                       1
<!--NeedCopy-->

EXAMPLE 4

Updates a provisioning scheme called “MyScheme” to explicitly attach NICs to the network named “Network 2” for new VMs that are created from the provisioning scheme.

Set-ProvScheme -ProvisioningSchemeName MyScheme -NetworkMapping @{"0" = "XDHyp:\HostingUnits\XenHU\Network 2.network"}
<!--NeedCopy-->

EXAMPLE 5

Updates a provisioning scheme called “MyScheme” to use the machine profile from the aws ec2 instance - “machine-profile-vm (i-00c55f1107b662c04)”.

Set-ProvScheme -ProvisioningSchemeName MyScheme -MachineProfile "XDHyp:\HostingUnits\AwsHostingUnit\us-east-1a.availabilityzone\machine-profile-vm (i-00c55f1107b662c04).vm"
<!--NeedCopy-->

EXAMPLE 6

Updates a provisioning scheme called “MyScheme” to use the machine profile from the version “1” of the aws launch template with name “machine-profile-lt” and id “lt-06927522c36bg5698”.

Set-ProvScheme -ProvisioningSchemeName MyScheme -MachineProfile "XDHyp:\HostingUnits\AwsHostingUnit\machine-profile-lt (lt-06927522c36bg5698).launchtemplate\lt-06927522c36bg5698 (1).launchtemplateversion"
<!--NeedCopy-->

Parameters

-ProvisioningSchemeName

The name of the provisioning scheme to be updated.

Type: String
Position: 2
Default value: None
Required: True
Accept pipeline input: False
Accept wildcard characters: False

-IdentityPoolName

The name of the identity pool to be used for the provisioning scheme, replacing the present one.

Type: String
Position: Named
Default value: None
Required: True
Accept pipeline input: False
Accept wildcard characters: False

-IdentityPoolUid

The unique identifier of the identity pool to be used for the provisioning scheme, replacing the present one.

Type: Guid
Position: Named
Default value: None
Required: True
Accept pipeline input: False
Accept wildcard characters: False

-ProvisioningSchemeUid

The identifier of the provisioning scheme to be updated.

Type: Guid
Position: Named
Default value: None
Required: True
Accept pipeline input: False
Accept wildcard characters: False

-Version

Specifies a prior version to change the provisioning scheme state to. Cannot be used in conjunction with other parameters that change the provisioning scheme configuration (e.g. -CustomProperties).

Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-VMCpuCount

The number of processors that will be used to create VMs from the provisioning scheme, replacing the present one.

Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-VMMemoryMB

The maximum amount of memory that will be used to created VMs from the provisioning scheme in MB, replacing the present one.

Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-CustomProperties

The properties of the provisioning scheme that are specific to the target hosting infrastructure. See about_Prov_CustomProperties for more information. If a property name already exists its value is updated; otherwise it is added.

Type: String
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-ServiceOffering

The Service Offering to use when creating VMs in Cloud Hypervisors, replacing the present one.

Type: String
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-PassThru

Returns the affected record. By default, this cmdlet does not generate any output.

Type: SwitchParameter
Position: Named
Default value: False
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-MachineProfile

Currently only supported with Azure and AWS. Defines the inventory path to the source VM used by the provisioning scheme as a template. This profile identifies the properties for the VMs created from the scheme. The VM must be in the hosting unit that HostingUnitName or HostingUnitUid refers to. If any properties are present in the MachineProfile but not the CustomProperties, values from the template will be written back to the CustomProperties.

Valid paths are of the format: XDHyp:\HostingUnits\<HostingUnitName>\<path>\<VMName>.vm

Type: String
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-NetworkMapping

Specifies how the attached NICs are mapped to networks. If this parameter is omitted, the current NICs setting of the provisioning scheme is not updated; otherwise the NICs setting is updated, and new machines will be created with the number of NICs specified in the map, with each NIC attached to the specified network. Cannot set to an empty value.

Type: Hashtable
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-SecurityGroup

The Security Groups to use when creating VMs in Cloud Hypervisors, replacing the present one.

Type: String[]
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-WriteBackCacheDiskSize

Specifies the size in Gigabytes of the disk to use as a Write Back Cache when UseWriteBackCache is set during the Provisioning Scheme creation. This parameter can only be set or modified if the Provisioning Scheme was previously created with UseWriteBackCache. This parameter only applies to newly created VMs and does not affect VMs which have already been created from the Provisioning Scheme.

Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-WriteBackCacheMemorySize

Specifies the size in Megabytes of the memory to use as a Write Back Cache when UseWriteBackCache is set during the Provisioning Scheme creation. This parameter can only be set or modified if the Provisioning Scheme was previously created with UseWriteBackCache. This parameter only applies to newly created VMs and does not affect VMs which have already been created from the Provisioning Scheme. Setting this parameter to 0 disables the use of memory for Write Back Cache.

Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-LoggingId

Specifies the identifier of the high-level operation this cmdlet call forms a part of. Citrix Studio and Director typically create high-level operations. PowerShell scripts can also wrap a series of cmdlet calls in a high-level operation by way of the Start-LogHighLevelOperation and Stop-LogHighLevelOperation cmdlets.

Type: Guid
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

CitrixCommonParameters

This cmdlet supports the common Citrix parameters: -AdminAddress, -AdminClientIP, -BearerToken, -TraceParent, -TraceState and -VirtualSiteId. For more information, see about_CitrixCommonParameters.

CommonParameters

This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.

Inputs

None

You can’t pipe objects to this cmdlet.

Outputs

Citrix.MachineCreation.Sdk.ProvisioningScheme

This object provides details of the provisioning scheme and contains the following information:

CleanOnBoot <bool> Indicates whether the VMs created will be reset to a clean state on each start.

ControllerAddress <string[]> The DNS names of the controllers associated with this provisioning scheme.

CpuCount <int> The number of processors that will be used to create VMs.

DiskSize <int> The disk size (in GB) that will be used to create VMs.

HostingUnitName <string> The name of the hosting unit being used by this provisioning scheme.

HostingUnitUid <Guid> The unique identifier of the hosting unit being used by this provisioning scheme.

IdentityPoolName <string> The name of the identity pool being used by this provisioning scheme.

IdentityPoolUid <Guid> The unique identifier of the identity pool being used by this provisioning scheme.

MachineCount <int> The count of machines created with this provisioning scheme.

MachineProfile <string> The inventory path to the source VM used by the provisioning scheme as a template.

MasterImageVM <string> The inventory path to the VM snapshot copy used by this provisioning scheme.

MasterImageVMDate <DateTime> The date and time when the VM snapshot copy used by this provisioning scheme was made.

MemoryMB <int> The maximum amount of memory that will be used to created VMs in MB.

Metadata <Citrix.MachineCreation.Sdk.Metadata[]> The metadata associated with this provisioning scheme.

MetadataMap <IDictionary[string, string];> The metadata associated with this provisioning scheme arranged in key value pairs.

ProvisioningSchemeName <string> The name of this provisioning scheme.

ProvisioningSchemeUid <Guid> The unique identifier for this provisioning scheme.

ProvisioningSchemeVersion <int> The version of the provisioning scheme.

TaskId <Guid> The identifier of any current task that is running for the provisioning scheme.

VMMetadata <char[]> The metadata that will be used to created VMs in a plain text format.

PersonalVDiskDriveLetter <char> The drive letter for the personal vDisk.

PersonalVDiskDriveSize <int> The size of the personal vDisk in GB.

UsePersonalVDiskStorage <bool> Indicates whether this provisioning scheme uses personal vDisk storage.

NetworkMaps <Citrix.MachineCreation.Sdk.NetworkMap[]> The NIC/network mappings that will be used to create VMs.

Scope <Citrix.MachineCreation.Sdk.ScopeReference[]> The administration scopes associated with this provisioning scheme.

DedicatedTenancy <bool> Indicates whether dedicated tenancy is used when creating VMs in Cloud Hypervisors.

GpuTypeId <string> The id of the GPU (Graphics Processor Unit) Type used by this scheme. It is null if there is no GPU.

ResetAdministratorPasswords <bool> Indicates whether the passwords for administrator accounts are reset on created machines.

ServiceOffering <string> The service offering that the scheme uses when creating VMs in Cloud Hypervisors.

SecurityGroups <string[]> The security groups that will be applied to machines created in Cloud Hypervisors.

TenancyType <string> Tenancy type to be used when creating VMs in Cloud Hypervisors. (See New-ProvScheme.)

AzureAdJoinType <string> Deprecated.

CurrentMasterImageUid <Guid> The unique identifier of the current master image used by the provisioning scheme. (See Get-ProvSchemeMasterVMImageHistory.)

CustomProperties <string> Properties of the provisioning scheme which that are specific to the target hosting infrastructure. (See about_Prov_CustomProperties)

IdentityType <string> Identity type used to join created machines to a directory service. (See New-ProvScheme.)

UseFullDiskCloneProvisioning <bool> Indicates whether VMs will be created using the dedicated full disk clone feature.

UseWriteBackCache <bool> Indicates whether this provisioning scheme will use the write-back cache feature.

WriteBackCacheDiskSize <int> The size of the write-back cache disk to be used in GB. Specify only when UseWriteBackCache is true.

WriteBackCacheMemorySize <int> The size of the write-back memory cache in MB. Specify only when UseWriteBackCache is true.

Warnings <Citrix.MachineCreation.Sdk.ProvSchemeWarning[]> Warning states that have occurred with this provisioning scheme.

WriteBackCacheDiskIndex <int> The disk index for the write-back cache disk. Specify only when UseWriteBackCache is true.

Notes

In the case of failure, the following errors can result.

Error Codes


ProvisioningSchemeNotFound The specified provisioning scheme could not be located.

DatabaseError An error occurred in the service while attempting a database operation.

DatabaseNotConfigured The operation could not be completed because the database for the service is not configured.

ServiceStatusInvalidDb An error occurred in the service while attempting a database operation - communication with the database failed for for various reasons.

CommunicationError An error occurred while communicating with the service.

PermissionDenied The user does not have administrative rights to perform this operation.

ConfigurationLoggingError The operation could not be performed because of a configuration logging error.

HostingUnitNotFound The hosting unit referenced by the provisioning scheme could not be resolved.

NetworkPathResolutionFailed The specified network mapping contains invalid or empty network path value.

InvalidMachineProfileMetadata Unable to read the metadata from machine profile.

MachineProfileNotSupportedByHypervisor The hypervisor does not support any functional capability for MachineProfile.

MachineProfileUpdateNotSupported Adding a MachineProfile to the catalog is not supported.

IncorrectTenancyType MachineProfile TenancyType does not match with provisioning scheme.

ServiceOfferingPathResolutionFailed The Service Offering path could not be resolved. Please ensure that the path includes a drive specification and path to a location within a HostingUnit.

SecurityGroupPathResolutionFailed The Security Group path could not be resolved. Please ensure that the path includes a drive specification and path to a location within a HostingUnit.

ExceptionThrown An unexpected error occurred. For more details, see the Windows event logs on the controller being used or Citrix Virtual Apps and Desktops logs.

InvalidProvisioningSchemeVersionMaximum The provisioning scheme maximum is set to an invalid value. Value values are in the range (1, 32000).

ProvisioningSchemeVersionMaximumExceeded The change in provisioning scheme could not be performed due to the maximum version number being exceeded. Older versions were not able to be pruned.

Each time Set-ProvScheme is called, a snapshot of the current configuration is saved. To view the prior saved configurations, use Get-ProvVMConfiguration. To adjust the maximum number of prior configurations MCS saves, use Set-ProvServiceConfigurationData to change MaxProvSchemeVersions.

Running Set-ProvScheme to update provisioning scheme properties will only affect future provisioned machines. To have existing VMs in a catalog be brought up to date, use Set-ProvVMUpdateTimeWindow to set a time window for certain or all VMs created from the provisioning scheme associated with the catalog to be updated on next power on within the given time window.

Set-ProvScheme