Public/SmartClientProfiles/Add-SmartClientProfile.ps1
#Requires -Modules 'MilestonePSTools' function Add-SmartClientProfile { <# .SYNOPSIS Adds a new Smart Client Profile based on the Default profile .DESCRIPTION Adds a new Smart Client Profile based on the Default profile .EXAMPLE PS C:\> Add-SmartClientProfile -Name 'Remote Guards' -Description 'Smart Client Profile for Remote Guard users with limited access' Creates a new Smart Client Profile named 'Remote Guards' .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 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, # Specifies the description for the new Smart Client Profile [Parameter()] [VideoOS.Management.VmoClient.SmartClientProfile] $TemplateProfile ) begin { $vmo = Get-VmoClient } process { try { $TemplateProfile = Get-SmartClientProfile | Where-Object IsDefaultProfile Write-Verbose "Creating a new Smart Client Profile based on profile '$($TemplateProfile.Name)'" $newProfile = [VideoOS.Management.VmoClient.SmartClientProfile]::new($vmo.ManagementServer) $newProfile.Name = $Name $newProfile.Description = $Description $newProfile.SettingsXml = $TemplateProfile.SettingsXml $newProfile.Create() if ($newProfile.IsCreated) { Write-Output $newProfile } } catch { $vmo.Dispose() throw } } end { $vmo.Dispose() } } |