Public/SmartClientProfiles/Copy-SmartClientProfile.ps1
#Requires -Modules 'MilestonePSTools' function Copy-SmartClientProfile { <# .SYNOPSIS Copies an existing Smart Client Profile to a new profile with the given name and description .DESCRIPTION Copies an existing Smart Client Profile to a new profile with the given name and description .EXAMPLE PS C:\> Get-SmartClientProfile -Name 'Department 1' | Copy-SmartClientProfile -Name 'Department 2' Creates a new Smart Client Profile named 'Department 2' based on the settings of Department 1 .OUTPUTS The output of this function will be a [VideoOS.Management.VmoClient.SmartClientProfile] object with the following properties: Name : Remote Guard Description : LastModified : 1/22/2021 7:59:12 PM SettingsXml : <Settings> <Setting key="SettingKeyName"> <Value>Example</Value> <Locked>False</Locked> </Setting> </Settings> IsDefaultProfile : False AttachedRoles : {} Id : e73e6ddf-8493-48e9-8e48-04b36023538d IsDirty : False IsCreated : True IsDeleted : False Exists : True CustomProperties : {} IsCustomPropertiesSupported : True ServerVersion : 20.3.1 #> [CmdletBinding()] param( # Specifies the description for the new Smart Client Profile [Parameter(Mandatory, ValueFromPipeline)] [VideoOS.Management.VmoClient.SmartClientProfile] $SourceProfile, # Specifies the display name the new Smart Client Profile [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string] $Name, # Specifies the description for the new Smart Client Profile [Parameter()] [ValidateNotNullOrEmpty()] [string] $Description ) begin { $vmo = Get-VmoClient } process { try { Write-Verbose "Creating a new Smart Client Profile based on profile '$($SourceProfile.Name)'" $newProfile = [VideoOS.Management.VmoClient.SmartClientProfile]::new($vmo.ManagementServer) $newProfile.Name = $Name $newProfile.Description = $Description $newProfile.SettingsXml = $SourceProfile.SettingsXml $newProfile.Create() if ($newProfile.IsCreated) { Write-Output $newProfile } } catch { $vmo.Dispose() throw } } end { $vmo.Dispose() } } |