Skip to content

PSCloudPC 1.0.18

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Nov 08:42
27c5c48

This release adds 11 cmdlets for day-to-day Cloud PC management, such as the audit log, connection history, snapshots and the troubleshooter. It also fixes signing in with a certificate or a device code, and makes deleting and updating policies safer.

Read the breaking changes before you upgrade: the Remove-* cmdlets now ask for confirmation and need the exact name.

Install or upgrade

Install-Module -Name PSCloudPC -RequiredVersion 1.0.18
# or, if the module is already installed:
Update-Module -Name PSCloudPC

Requires PowerShell 7.2 or later. The Microsoft.Graph.Authentication module is installed automatically.

⚠️ Breaking changes

  • Remove-CPCAzureNetworkConnection, Remove-CPCCustomImage, Remove-CPCProvisioningPolicy and Remove-CPCUserSettingsPolicy only delete an object whose name matches exactly (upper and lower case don't matter). Before, part of the name was enough, so the wrong object could be deleted. When no object or more than one object matches, nothing is deleted. These cmdlets now ask for confirmation. What to do: pass the full name, and add -Confirm:$false when you run them in a script (#133)
  • Update-CPCUserSettingsPolicy and Set-CPCCrossRegionDisasterRecovery no longer return the policy. What to do: if your script uses the output, run Get-CPCUserSettingsPolicy after the change (#156)
  • Set-CPCCrossRegionDisasterRecovery: -RegionName and -RegionGroup are now required when you turn on crossRegion or premium disaster recovery (#139)

🚀 New cmdlets and parameters

  • Get-CPCAuditEvent: shows the Windows 365 audit log
  • Get-CPCConnectivityHistory: shows the connection history of a Cloud PC
  • Get-CPCRealTimeConnectionStatus: shows whether a user is signed in to a Cloud PC right now
  • Get-CPCRemoteActionResult: shows the remote actions run on a Cloud PC and their result
  • Invoke-CPCChangeUserAccountType: makes the user of a Cloud PC a standard user or a local administrator
  • Invoke-CPCCreateSnapshot: creates a restore point of a Cloud PC
  • Invoke-CPCPowerOn and Invoke-CPCPowerOff: start or shut down a Windows 365 Frontline Cloud PC
  • Invoke-CPCRetryPartnerAgentInstallation: retries a failed partner agent installation on a Cloud PC
  • Invoke-CPCTroubleshoot: runs the Windows 365 troubleshooter on a Cloud PC
  • Update-CPCAzureNetworkConnection: changes an existing Azure network connection
  • Invoke-CPCRestore: new -SnapshotId parameter, so you can restore a Cloud PC from a script without the selection window
  • Invoke-CPCReprovision: new -OsVersion and -UserAccountType parameters
  • Remove-CPCCustomImage: new -Version parameter, for images that share a name (#133)

✨ Changes

  • New-CPCAzureNetworkConnection uses -Name like the other cmdlets; -DisplayName still works
  • Get-CPCServicePlan also returns the provisioning type of each plan (#141)
  • Error messages now include the reason given by Microsoft Graph, which makes failures easier to solve (#132)
  • The help of every cmdlet is complete: each parameter has a description, and wrong descriptions and permissions are corrected (#144)

🗑️ Deprecated

  • Update-CPCUserSettingsPolicy: -DisableRestartPrompts and -SelfServiceEnabled have no effect, because Microsoft retired these settings. They show a warning and will be removed in a later version (#156)

🐛 Fixes

  • Connect-Windows365: signing in with a certificate didn't work (#128), and signing in with a device code didn't ask for the Cloud PC permissions (#129)
  • Get-CloudPC didn't return all Cloud PCs in larger tenants (#130)
  • Some cmdlets reported success while the change had failed (#131)
  • Update-CPCUserSettingsPolicy and Set-CPCCrossRegionDisasterRecovery reset every setting you didn't pass to its default value (#156)
  • Set-CPCCrossRegionDisasterRecovery couldn't turn disaster recovery off (#139)
  • Get-CPCServicePlan -ServicePlanName didn't work. Invoke-CPCResize and Set-CPCProvisioningPolicyAssignment stop when the service plan name is unknown or matches more than one plan (#141)
  • Set-CPCProvisioningPolicyAssignment and Set-CPCUserSettingsPolicyAssignment failed when the group was already assigned (#142)
  • New-CPCProvisioningPolicy couldn't create a hybrid join policy, and New-CPCProvisioningPolicy and Update-CPCProvisioningPolicy didn't pass on the join type of the Azure network connection (#135)
  • New-CPCAzureNetworkConnection sent the AD domain password in an encrypted form that Windows 365 can't use (#137)
  • New-CPCCustomImage created images without a name (#136)
  • Update-CPCOrganizationSetting sent its on/off settings in the wrong format (#140)
  • Invoke-CPCPublishCloudApp and Invoke-CPCUnpublishCloudApp could act on another app whose name contained the name you entered (#134)
  • Invoke-CPCEndGracePeriod stopped with an error when it asked for confirmation (#138)
  • Invoke-CPCRestore and Invoke-CPCReprovision use the current Windows 365 restore and reprovision actions
  • Get-CPCRestorePoint returned no restore points (#98)
  • Get-CPCGalleryImage -Name searched on the offer name instead of the image name
  • When a name isn't found or a value isn't valid, the cmdlet now stops before it changes anything, also with -ErrorAction SilentlyContinue (#139, #141)

🔎 Known issues

  • Invoke-CPCChangeUserAccountType doesn't work yet: Microsoft Graph returns an error (#104)
  • Invoke-CPCPowerOn and Invoke-CPCPowerOff haven't been tested on a Frontline Cloud PC yet (#107)
  • Microsoft removes the AD domain user name and password of Azure network connections on December 31, 2026. New-CPCAzureNetworkConnection and Update-CPCAzureNetworkConnection will be updated before then (#175)

Contributors: @Ruthhl3ss, @StefanDingemanse

Full changelog: v1.0.17...v1.0.18