Overview#
Windows 365 lets administrators resize a Cloud PC when a user needs more or less compute or storage. Resize can be used to move a Cloud PC to a different service plan, such as going from 2 vCPU/8 GB/128 GB to 4 vCPU/16 GB/256 GB.
In this post, I will use the WindowsCloudPC PowerShell module to resize Cloud PCs with Microsoft Graph. I will walk through an immediate resize, what happens when the target license is not available, how to schedule a resize through Cloud PC maintenance windows, and how to resize multiple Cloud PCs at once.
Prerequisites#
Before you start, make sure you have:
- PowerShell 7 or later.
- The WindowsCloudPC PowerShell module.
- A role that can resize Cloud PCs, such as Windows 365 Administrator or Intune Service Administrator.
- An available Windows 365 license for the target Cloud PC size.
- A Cloud PC with
ProvisioningStatusset toprovisioned.
If you are resizing Microsoft Entra hybrid join Cloud PCs that use bring-your-own-network, make sure the subnet has enough available IP addresses. During resize, Windows 365 may use an additional IP address so it can roll back if the resize fails.
What happens during resize#
Resize is a disruptive remote action. When the resize starts, the user can be disconnected from the Cloud PC, and unsaved work can be lost. The resize action can take time to complete, so a successful PowerShell command only means the request was submitted.
For a single Cloud PC resize, Microsoft Graph returns 204 No Content when the action is accepted. The real success signal is the Cloud PC returning to ProvisioningStatus of provisioned with the new ServicePlanName, or the remote action result reporting success.
For bulk resize, Windows 365 can validate selected Cloud PCs before starting the action. The Microsoft Graph validateBulkResize API is currently in beta and supports validating up to 2,000 Cloud PC IDs per request. The Intune admin center supports resizing up to 5,000 Cloud PCs in a bulk action.
Connect and get Cloud PCs#
Once the module is installed, connect to Windows 365 by running Connect-CloudPC. After you connect to your tenant, run Get-CloudPC to return your Cloud PCs.
PS C:\> Get-CloudPC | Format-Table -AutoSize
Id Name ManagedDeviceName ProvisioningType
-- ---- ----------------- ----------------
3327735f-aacb-40c1-9393-c3e607257239 W365-Enterprise - William Beringer CPC-ENT-PTFRF Dedicated
68b65f98-07ec-4b10-9b94-8eb614020fee W365-Enterprise - Vance DeLeon CPC-ENT-0M94O Dedicated
95194d88-cec5-4b65-af62-26dbd1814364 CFD-brad-V4XXX CFD-brad-V46GR Dedicated
13af735d-e53e-404c-95a0-69dc103c3c9e W365-Enterprise - Bradley Wyatt CPC-ENT-EPSDT Dedicated
1504cd82-7c8f-493a-90e8-1e5a3a411991 CPC-Z6CY4JN4RHX CPC-Z6CY4JN4RHX Shared
1e07e2be-00a7-4b9c-bc41-cf994226bdbc W365-Flex-Dedicated - Corey Gray CFD-Corey-P5JTY Dedicated
198294a2-4d1d-4c28-bb81-74c3f495a9b2 CFS-23GSZS0XKJP CFS-23GSZS0XKJP Shared
0cb4034e-bca3-47d6-b945-d9ae9511cf7d CFS-YN1YDRB5WYJ CFS-YN1YDRB5WYJ SharedIn the examples below, I am going to resize Enterprise Cloud PCs in my organization. Some will be resized immediately, and others will be scheduled through a maintenance window.
Resize a single Cloud PC immediately#
For the first example, I am going to resize a single Cloud PC immediately. I will upgrade CPC-ENT-PTFRF from a 2 vCPU/8 GB/128 GB Cloud PC to a 4 vCPU/16 GB/256 GB Cloud PC.
Using the Get-CloudPC function, I can return the Cloud PC configuration and confirm its current size.
PS C:\> Get-CloudPC -Name CPC-ENT-PTFRF
Id : 3327735f-aacb-40c1-9393-c3e607257239
Name : W365-Enterprise - William Beringer
DisplayName : W365-Enterprise - William Beringer
ManagedDeviceName : CPC-ENT-PTFRF
ProvisioningType : Dedicated
ProvisioningPolicyName : W365-Enterprise
ProvisioningPolicyId : 58d428df-a4b1-41ea-854b-38f8fe5f7d21
ProvisioningStatus : provisioned
ServicePlanName : Cloud PC Enterprise 2vCPU/8GB/128GB
AssignedUserUpn : WillB@M365CPI91293196.OnMicrosoft.com
ManagedDeviceId : b8468819-e5f9-478c-a930-d4e105924168
AadDeviceId : bc993dbc-f70e-4f94-a5cb-cc6b247e8d4e
LastModifiedDateTime : 7/2/2026 12:57:45 PM
Raw : {[managedDeviceId, b8468819-e5f9-478c-a930-d4e105924168], [provisioningType, dedicated], [managedDeviceName, CPC-ENT-PTFRF], [userPrincipalName,
WillB@M365CPI91293196.OnMicrosoft.com]...}Next, I need the service plan ID for the target size. I can get that with Get-CloudPCServicePlan.
PS C:\> Get-CloudPCServicePlan -Name "Cloud PC Enterprise 4vCPU/16GB/256GB"
Id : 9ecf691d-8b82-46cb-b254-cd061b2c02fb
DisplayName : Cloud PC Enterprise 4vCPU/16GB/256GB
Type : enterprise
VCpuCount : 4
RamGB : 16
StorageGB : 256
UserProfileGB : 50
Raw : {[vCpuCount, 4], [userProfileInGB, 50], [id, 9ecf691d-8b82-46cb-b254-cd061b2c02fb], [provisioningType, dedicated]...}Using Resize-CloudPC, I can resize the Cloud PC by passing the Cloud PC name and the target service plan ID.
PS C:\> Resize-CloudPC -CloudPC CPC-ENT-PTFRF -ServicePlanId 9ecf691d-8b82-46cb-b254-cd061b2c02fb
Confirm
Are you sure you want to perform this action?
Performing the operation "Resize to service plan '9ecf691d-8b82-46cb-b254-cd061b2c02fb' (9ecf691d-8b82-46cb-b254-cd061b2c02fb)" on target "Cloud PC
'W365-Enterprise - William Beringer' (3327735f-aacb-40c1-9393-c3e607257239)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): a
PS C:\>If I run Get-CloudPC again, I can see that the ProvisioningStatus is now resizing.
PS C:\> Get-CloudPC -Name CPC-ENT-PTFRF
Id : 3327735f-aacb-40c1-9393-c3e607257239
Name : W365-Enterprise - William Beringer
DisplayName : W365-Enterprise - William Beringer
ManagedDeviceName : CPC-ENT-PTFRF
ProvisioningType : Dedicated
ProvisioningPolicyName : W365-Enterprise
ProvisioningPolicyId : 58d428df-a4b1-41ea-854b-38f8fe5f7d21
ProvisioningStatus : resizing
ServicePlanName : Cloud PC Enterprise 2vCPU/8GB/128GB
AssignedUserUpn : WillB@M365CPI91293196.OnMicrosoft.com
ManagedDeviceId : b8468819-e5f9-478c-a930-d4e105924168
AadDeviceId : bc993dbc-f70e-4f94-a5cb-cc6b247e8d4e
LastModifiedDateTime : 7/2/2026 1:25:20 PM
Raw : {[managedDeviceId, b8468819-e5f9-478c-a930-d4e105924168], [provisioningType, dedicated], [managedDeviceName, CPC-ENT-PTFRF],After the resize completes, the Cloud PC returns to provisioned, and the ServicePlanName shows the new size.
PS C:\> Get-CloudPC -Name CPC-ENT-PTFRF
Id : 3327735f-aacb-40c1-9393-c3e607257239
Name : W365-Enterprise - William Beringer
DisplayName : W365-Enterprise - William Beringer
ManagedDeviceName : CPC-ENT-PTFRF
ProvisioningType : Dedicated
ProvisioningPolicyName : W365-Enterprise
ProvisioningPolicyId : 58d428df-a4b1-41ea-854b-38f8fe5f7d21
ProvisioningStatus : provisioned
ServicePlanName : Cloud PC Enterprise 4vCPU/16GB/256GB
AssignedUserUpn : WillB@M365CPI91293196.OnMicrosoft.com
ManagedDeviceId : b8468819-e5f9-478c-a930-d4e105924168
AadDeviceId : bc993dbc-f70e-4f94-a5cb-cc6b247e8d4e
LastModifiedDateTime : 7/2/2026 1:45:34 PM
Raw : {[managedDeviceId, b8468819-e5f9-478c-a930-d4e105924168], [provisioningType, dedicated], [managedDeviceName, CPC-ENT-PTFRF],
[userPrincipalName, WillB@M365CPI91293196.OnMicrosoft.com]...}Attempt to resize a Cloud PC without an available license#
Next, I will attempt to resize a user’s Cloud PC without having an available target license.
When I run Resize-CloudPC, the request appears to submit successfully. This only means the resize action was accepted for processing. It does not mean Windows 365 was able to complete the resize.
PS C:\> Resize-CloudPC -CloudPC CPC-ENT-0M94O -ServicePlanId 9ecf691d-8b82-46cb-b254-cd061b2c02fb
Confirm
Are you sure you want to perform this action?
Performing the operation "Resize to service plan '9ecf691d-8b82-46cb-b254-cd061b2c02fb' (9ecf691d-8b82-46cb-b254-cd061b2c02fb)" on target "Cloud PC
'W365-Enterprise - Vance DeLeon' (68b65f98-07ec-4b10-9b94-8eb614020fee)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): aIf I check the remote action result, I can see that the resize failed.
PS C:\> Get-CloudPC -Id 68b65f98-07ec-4b10-9b94-8eb614020fee |
>> Get-CloudPCRemoteActionResult |
>> Format-Table ActionName,ActionState,StartDateTime,LastUpdatedDateTime,CloudPcStatus,ErrorCode,ErrorMessage
ActionName ActionState StartDateTime LastUpdatedDateTime CloudPcStatus ErrorCode ErrorMessage
---------- ----------- ------------- ------------------- ------------- --------- ------------
Resize failed 7/2/2026 2:13:17 PM 7/2/2026 2:13:17 PMFor directly assigned licenses, make sure the target license is available before you resize. For group-based licensing, Windows 365 can place the Cloud PC into Resize pending license. To complete that resize, remove the source license and assign the target license. The resize begins only after both conditions are satisfied.
Resize a Cloud PC during a maintenance window#
Cloud PC maintenance windows are currently in preview. They let admins schedule specific times for bulk resize actions on Cloud PCs. Maintenance windows do not apply to every remote action, and they do not guarantee that the resize succeeds. They only control when the bulk resize action is allowed to start.
A maintenance window can be daily, weekly, or weekend-based, and it uses the Cloud PC local time. Each window must be at least two hours long. You can create and manage maintenance windows with Get-CloudPCMaintenanceWindow and New-CloudPCMaintenanceWindow, or from the Intune admin center.
In my example, I created a maintenance window from 3 PM to 5 PM and assigned it to my Enterprise Cloud PCs. Then I used the -UseMaintenanceWindow parameter so the resize action would be scheduled through the assigned maintenance window instead of starting immediately.
PS C:\> Resize-CloudPC -CloudPC CPC-ENT-0M94O -ServicePlanId 9ecf691d-8b82-46cb-b254-cd061b2c02fb -UseMaintenanceWindow
Confirm
Are you sure you want to perform this action?
Performing the operation "Schedule resize to service plan '9ecf691d-8b82-46cb-b254-cd061b2c02fb' (9ecf691d-8b82-46cb-b254-cd061b2c02fb) through maintenance windows" on target
"Cloud PC 'W365-Enterprise - Vance DeLeon' (68b65f98-07ec-4b10-9b94-8eb614020fee)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): aOnce the maintenance window starts, I can see that the Cloud PC begins resizing.
PS C:\> Get-CloudPC -Id 68b65f98-07ec-4b10-9b94-8eb614020fee |
>> Get-CloudPCRemoteActionResult |
>> Format-Table ActionName,ActionState,StartDateTime,LastUpdatedDateTime
ActionName ActionState StartDateTime LastUpdatedDateTime
---------- ----------- ------------- -------------------
Resize active 7/2/2026 2:57:31 PM 7/2/2026 3:00:05 PMResize multiple Cloud PCs at once#
You can also resize multiple Cloud PCs at once, either immediately or through their assigned maintenance windows.
Before you resize a large group, test with a small group first. Bulk resize can affect many users at the same time, and each Cloud PC still needs to meet the resize requirements.
If you schedule resize for Cloud PCs assigned to different maintenance windows, each Cloud PC will resize based on its assigned window.
$resizeParams = @{
ServicePlanId = '9ecf691d-8b82-46cb-b254-cd061b2c02fb'
PassThru = $true
}
$cloudPcNames = @(
'CPC-ENT-5BB3L'
'CPC-ENT-63AHJ'
)
$cloudPcNames |
ForEach-Object { Get-CloudPC -Name $_ } |
Resize-CloudPC @resizeParamsIf you wanted it to wait until the maintenance window you can run:
$resizeParams = @{
ServicePlanId = '9ecf691d-8b82-46cb-b254-cd061b2c02fb'
UseMaintenanceWindow = $true
PassThru = $true
}
$cloudPcNames = @(
'CPC-ENT-5BB3L'
'CPC-ENT-63AHJ'
)
$cloudPcNames |
ForEach-Object { Get-CloudPC -Name $_ } |
Resize-CloudPC @resizeParamsIf you are building your own automation around bulk resize, validate the target set before running the action. Validation can help catch unsupported targets or Cloud PCs that are not ready to resize.
Wrapping up#
Resizing Cloud PCs with PowerShell gives you a repeatable way to handle both one-off user requests and larger migration waves. The important part is to treat resize as a submitted remote action, not an instant configuration change. Confirm the Cloud PC is eligible, make sure the target license is available, choose whether the change should happen immediately or during a maintenance window, and then monitor the provisioning status or remote action result until the resize completes.
For small changes, Resize-CloudPC is a quick way to move a single Cloud PC to the right size. For larger groups, combine validation, maintenance windows, and small pilot batches so you can reduce user disruption while still keeping the process automated.
