en-US/MilestonePSTools-help.xml

<?xml version="1.0" encoding="utf-8"?>
<helpItems schema="maml" xmlns="http://msh">
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-VmsArchiveStorage</command:name>
      <command:verb>Add</command:verb>
      <command:noun>VmsArchiveStorage</command:noun>
      <maml:description>
        <maml:para>Adds a new Archive Storage configuration to an existing live recording storage configuration.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Adds a new Archive Storage configuration to an existing live recording storage configuration. Note that you cannot add archives with a shorter retention than an existing archive on the same storage configuration.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-VmsArchiveStorage</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Storage</maml:name>
          <maml:description>
            <maml:para>Specifies the Recording Server to which the storage configuration should be added. This should be a RecordingServer object such as that returned by the Get-RecordingServer cmdlet.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Storage</command:parameterValue>
          <dev:type>
            <maml:name>Storage</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the storage configuration.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies the optional description of the storage configuration.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path under which the new storage folder will be created on the Recording Server or UNC path.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>Retention</maml:name>
          <maml:description>
            <maml:para>Specifies the retention, as a [timespan], after which the recordings will be deleted, or archived if you choose to add an archive storage to the new storage configuration after it is created. The minimum timespan is 60 minutes, and the maximum is 2147483647 minutes.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">TimeSpan</command:parameterValue>
          <dev:type>
            <maml:name>TimeSpan</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
          <maml:name>MaximumSizeMB</maml:name>
          <maml:description>
            <maml:para>Specifies the maximum size for the live storage before data should be archived or deleted.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>0</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
          <maml:name>TargetFramerate</maml:name>
          <maml:description>
            <maml:para>Specifies the desired framerate for recordings stored in this archive storage area. WARNING: Framerate reduction when the codec is anything besides MJPEG results in keyframes only, which is usually 1 FPS.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
          <dev:type>
            <maml:name>Double</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>5</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ReduceFramerate</maml:name>
          <maml:description>
            <maml:para>Specifies that the framerate should be reduced when taking recordings from the previous live/archive storage area WARNING: Framerate reduction when the codec is anything besides MJPEG results in keyframes only, which is usually 1 FPS.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies the optional description of the storage configuration.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
        <maml:name>MaximumSizeMB</maml:name>
        <maml:description>
          <maml:para>Specifies the maximum size for the live storage before data should be archived or deleted.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>0</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the storage configuration.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the path under which the new storage folder will be created on the Recording Server or UNC path.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ReduceFramerate</maml:name>
        <maml:description>
          <maml:para>Specifies that the framerate should be reduced when taking recordings from the previous live/archive storage area WARNING: Framerate reduction when the codec is anything besides MJPEG results in keyframes only, which is usually 1 FPS.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>Retention</maml:name>
        <maml:description>
          <maml:para>Specifies the retention, as a [timespan], after which the recordings will be deleted, or archived if you choose to add an archive storage to the new storage configuration after it is created. The minimum timespan is 60 minutes, and the maximum is 2147483647 minutes.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">TimeSpan</command:parameterValue>
        <dev:type>
          <maml:name>TimeSpan</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Storage</maml:name>
        <maml:description>
          <maml:para>Specifies the Recording Server to which the storage configuration should be added. This should be a RecordingServer object such as that returned by the Get-RecordingServer cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Storage</command:parameterValue>
        <dev:type>
          <maml:name>Storage</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
        <maml:name>TargetFramerate</maml:name>
        <maml:description>
          <maml:para>Specifies the desired framerate for recordings stored in this archive storage area. WARNING: Framerate reduction when the codec is anything besides MJPEG results in keyframes only, which is usually 1 FPS.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
        <dev:type>
          <maml:name>Double</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>5</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ArchiveStorage</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-RecordingServer | Get-VmsArchiveStorage -Name '90 Day Retention' | Add-VmsArchiveStorage -Name 'Last 80 Days' -Path C:\MediaDatabase\ -Retention (New-Timespan -Days 90) -MaximumSizeMB (10TB/1MB)</dev:code>
        <dev:remarks>
          <maml:para>Adds an archive to every storage configuration on every recording server where the name is '90 Day Retention'. The storage and archive names imply that the first 10 days are in the live drive, and the archive contains the last 80 days. The retention of the archive is set to 90 days because that value specifies how old the recordings in that container must be before they are eligible for deleting or archiving to the next archive in the chain. We use the helpful TB and MB multipliers to specify the maximum size of 10TB.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/add-vmsarchivestorage/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-VmsDeviceGroupMember</command:name>
      <command:verb>Add</command:verb>
      <command:noun>VmsDeviceGroupMember</command:noun>
      <maml:description>
        <maml:para>Add one or more devices to a device group.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Add one or more devices to a device group by ID, or using the objects returned by cmdlets like Get-VmsCamera.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-VmsDeviceGroupMember</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Device</maml:name>
          <maml:description>
            <maml:para>Specifies one or more devices of the same type. Supported devices are cameras, microphones, speakers, metadata, inputs, and outputs.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem[]</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
          <maml:name>Group</maml:name>
          <maml:description>
            <maml:para>Specifies a device group object returned by Get-VmsDeviceGroup.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Add-VmsDeviceGroupMember</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="Id">
          <maml:name>DeviceId</maml:name>
          <maml:description>
            <maml:para>Specifies the ID of one or more devices.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
          <dev:type>
            <maml:name>Guid[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
          <maml:name>Group</maml:name>
          <maml:description>
            <maml:para>Specifies a device group object returned by Get-VmsDeviceGroup.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Device</maml:name>
        <maml:description>
          <maml:para>Specifies one or more devices of the same type. Supported devices are cameras, microphones, speakers, metadata, inputs, and outputs.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IConfigurationItem[]</command:parameterValue>
        <dev:type>
          <maml:name>IConfigurationItem[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="Id">
        <maml:name>DeviceId</maml:name>
        <maml:description>
          <maml:para>Specifies the ID of one or more devices.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
        <dev:type>
          <maml:name>Guid[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
        <maml:name>Group</maml:name>
        <maml:description>
          <maml:para>Specifies a device group object returned by Get-VmsDeviceGroup.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
        <dev:type>
          <maml:name>IConfigurationItem</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.IConfigurationItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>$cameras = Get-Hardware | Get-VmsCamera | Where-Object Name -like '*West*'
Get-VmsDeviceGroup 'Parking West' | Add-VmsDeviceGroupMember -Device $cameras</dev:code>
        <dev:remarks>
          <maml:para>Adds all enabled cameras with the word "West" in the camera name to the "Parking West" camera group.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>Get-VmsDeviceGroup -Type Metadata -Name 'All Metadata' | Add-VmsDeviceGroupMember -Device (Get-Hardware | Get-Metadata)</dev:code>
        <dev:remarks>
          <maml:para>Adds all metadata to the "All Metadata" device group.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/add-vmsdevicegroupmember/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-VmsFailoverGroup</command:name>
      <command:verb>Add</command:verb>
      <command:noun>VmsFailoverGroup</command:noun>
      <maml:description>
        <maml:para>Adds a failover group in the current Milestone XProtect VMS site.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Add-VmsFailoverGroup` cmdlet adds a new failover group which can contain one or more failover recording servers.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-VmsFailoverGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the failover group name.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Optional description for the failover group to display in Management Client.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Optional description for the failover group to display in Management Client.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the failover group name.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.FailoverGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
 
Add-VmsFailoverGroup -Name 'FO Group 1' -Description 'First failover group'
Add-VmsFailoverGroup -Name 'FO Group 2' -Description 'Second failover group'</dev:code>
        <dev:remarks>
          <maml:para>Prompts user to login to a Milestone VMS, then creates two failover groups.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/add-vmsfailovergroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-VmsHardware</command:name>
      <command:verb>Add</command:verb>
      <command:noun>VmsHardware</command:noun>
      <maml:description>
        <maml:para>Adds a new hardware device, typically a camera, to a Milestone XProtect Recording Server.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Adds a new hardware device, typically a camera, to a Milestone XProtect Recording Server. Capable of adding multiple cameras in a group if a collection of hardware scan results from the Start-VmsHardwareScan command are provided in the HardwareScan parameter. Otherwise one camera will be added at a time.</maml:para>
      <maml:para>Each successfully added hardware device will be returned to the pipeline in a fully resolved Hardware object. With that object you can continue to set properties on the hardware or child camera, microphone, speaker and other child device types that are present.</maml:para>
      <maml:para>IMPORTANT: This command does not add any devices to a device group like the Management Client does. You must put devices into device groups yourself.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-VmsHardware</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Credential</maml:name>
          <maml:description>
            <maml:para>Specifies an admin username and password to use with the camera at the given address.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">PSCredential</command:parameterValue>
          <dev:type>
            <maml:name>PSCredential</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>DriverNumber</maml:name>
          <maml:description>
            <maml:para>Specifies the driver number for the Milestone device pack driver to use with the camera. One of either HardwareDriverPath or DriverNumber are required.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>0</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Specifies that the camera(s) should be added even if they already exist on another Recording Server on the site.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="Address">
          <maml:name>HardwareAddress</maml:name>
          <maml:description>
            <maml:para>Specifies the IP or hostname of the hardware to be added. This should be in URI format. Example: http://192.168.1.100</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
          <dev:type>
            <maml:name>Uri</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>HardwareDriverPath</maml:name>
          <maml:description>
            <maml:para>Specifies the Milestone Configuration API path value for the driver to use. DriverNumber is more user-friendly but if you have the path, you can use that instead. One of either HardwareDriverPath or DriverNumber are required. Example: HardwareDriver[ada01bd5-fc87-4bcb-8e7e-145cc755f502]</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name to be assigned to the hardware after it has been added. The default behavior is to use the camera make, model and IP.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Specifies the RecordingServer object (from Get-RecordingServer for example) to which the camera should be added. This is only relevant for the manual parameter set. If using hardware scan results as input to Add-VmsHardware, the Recording Server is retrieved from the scan result object.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RecordingServer</command:parameterValue>
          <dev:type>
            <maml:name>RecordingServer</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>SkipConfig</maml:name>
          <maml:description>
            <maml:para>Specifies that no additional configuration should be performed once the hardware has been added. This means the hardware and devices will keep their default names, and will be disabled until you enable them yourself. You might do this if you plan to make several of your own configuration changes once the device is added and that might save some time especially when working with a large number of devices.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Add-VmsHardware</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Specifies that the camera(s) should be added even if they already exist on another Recording Server on the site.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>HardwareScan</maml:name>
          <maml:description>
            <maml:para>The results of Start-VmsHardwareScan which contain all the required information to add hardware including the address, username, password, and driver.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">VmsHardwareScanResult[]</command:parameterValue>
          <dev:type>
            <maml:name>VmsHardwareScanResult[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name to be assigned to the hardware after it has been added. The default behavior is to use the camera make, model and IP.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>SkipConfig</maml:name>
          <maml:description>
            <maml:para>Specifies that no additional configuration should be performed once the hardware has been added. This means the hardware and devices will keep their default names, and will be disabled until you enable them yourself. You might do this if you plan to make several of your own configuration changes once the device is added and that might save some time especially when working with a large number of devices.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Credential</maml:name>
        <maml:description>
          <maml:para>Specifies an admin username and password to use with the camera at the given address.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">PSCredential</command:parameterValue>
        <dev:type>
          <maml:name>PSCredential</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>DriverNumber</maml:name>
        <maml:description>
          <maml:para>Specifies the driver number for the Milestone device pack driver to use with the camera. One of either HardwareDriverPath or DriverNumber are required.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>0</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Specifies that the camera(s) should be added even if they already exist on another Recording Server on the site.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="Address">
        <maml:name>HardwareAddress</maml:name>
        <maml:description>
          <maml:para>Specifies the IP or hostname of the hardware to be added. This should be in URI format. Example: http://192.168.1.100</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
        <dev:type>
          <maml:name>Uri</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>HardwareDriverPath</maml:name>
        <maml:description>
          <maml:para>Specifies the Milestone Configuration API path value for the driver to use. DriverNumber is more user-friendly but if you have the path, you can use that instead. One of either HardwareDriverPath or DriverNumber are required. Example: HardwareDriver[ada01bd5-fc87-4bcb-8e7e-145cc755f502]</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>HardwareScan</maml:name>
        <maml:description>
          <maml:para>The results of Start-VmsHardwareScan which contain all the required information to add hardware including the address, username, password, and driver.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">VmsHardwareScanResult[]</command:parameterValue>
        <dev:type>
          <maml:name>VmsHardwareScanResult[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name to be assigned to the hardware after it has been added. The default behavior is to use the camera make, model and IP.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Specifies the RecordingServer object (from Get-RecordingServer for example) to which the camera should be added. This is only relevant for the manual parameter set. If using hardware scan results as input to Add-VmsHardware, the Recording Server is retrieved from the scan result object.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RecordingServer</command:parameterValue>
        <dev:type>
          <maml:name>RecordingServer</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>SkipConfig</maml:name>
        <maml:description>
          <maml:para>Specifies that no additional configuration should be performed once the hardware has been added. This means the hardware and devices will keep their default names, and will be disabled until you enable them yourself. You might do this if you plan to make several of your own configuration changes once the device is added and that might save some time especially when working with a large number of devices.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Hardware</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Hardware</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>This command does not add any cameras or other devices to a camera group. It is expected that you will do this yourself if you wish.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>$recorder = Get-RecordingServer | Out-GridView -OutputMode Single
$recorder | Add-VmsHardware -HardwareAddress 10.1.1.100 -Name 'Parking' -DriverNumber 806 -Credential (Get-Credential)</dev:code>
        <dev:remarks>
          <maml:para>Prompts to enter a username and password (thanks to Get-Credential) and then adds the Axis camera at 10.1.1.100 to the Recording Server in $recorder. Once added, the new hardware will be returned to the pipeline and in this case shown in the terminal like you see below.</maml:para>
          <maml:para>Name Address Model Enabled LastModified Id ---- ------- ----- ------- ------------ -- Parking http://10.1.1.100/ AXIS M1065-L Network Camera True 10/5/2021 9:50:21 PM A833F561-7830-41B4-BEEF-C1F868939D17</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>$recorder = Get-RecordingServer | Out-GridView -OutputMode Single
$credential = [pscredential]::new('root', ('pass' | ConvertTo-SecureString -AsPlainText -Force))
$recorder | Add-VmsHardware -HardwareAddress 10.1.1.100 -Name 'Parking' -DriverNumber 806 -Credential $credential</dev:code>
        <dev:remarks>
          <maml:para>Exactly the same as Example #1 however in this example we create the credential from code. This uses plain text and is generally frowned upon for security reasons. Ideally you can prompt the user to enter credentials, or you store credentials in a safe place such as a secret store of some kind. Microsoft have provided a handy secret management framework with plugin support called "Microsoft.PowerShell.SecretManagement" enabling you to easily access secret management tools like KeePass and others.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 3 --------------------------</maml:title>
        <dev:code>$newHardware = Add-VmsHardware -HardwareScan (Start-VmsHardwareScan -RecordingServer (Get-RecordingServer) -Express)</dev:code>
        <dev:remarks>
          <maml:para>This one-liner will get all recording servers in the site, and start an express hardware scan on them all. The completed hardware scans will be passed into Add-VmsHardware, and all the newly added hardware from all recording servers will be saved in the $newHardware variable.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/add-vmshardware/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-VmsLoginProviderClaim</command:name>
      <command:verb>Add</command:verb>
      <command:noun>VmsLoginProviderClaim</command:noun>
      <maml:description>
        <maml:para>Add registered claims which will be used to map users with the desired privileges.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Add-VmsLoginProviderClaim` registers a specific claim to be used for assigning users to roles. A wide range of claims may be received after authentication of a user from an external login provider, but only "registered claims" may be added to a role for the purpose of granting privileges to users.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-VmsLoginProviderClaim</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>LoginProvider</maml:name>
          <maml:description>
            <maml:para>Specifies the external login provider configuration to which the claim should be registered.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
          <dev:type>
            <maml:name>LoginProvider</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the claim to be registered. The value should match the name of a claim present in tokens issued by the external login provider.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>DisplayName</maml:name>
          <maml:description>
            <maml:para>Specifies an alternate, user-friendly display name for the claim which will be shown when viewing claims associated with users and roles.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CaseSensitive</maml:name>
          <maml:description>
            <maml:para>Specifies that the claim name is case sensitive.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>CaseSensitive</maml:name>
        <maml:description>
          <maml:para>Specifies that the claim name is case sensitive.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>DisplayName</maml:name>
        <maml:description>
          <maml:para>Specifies an alternate, user-friendly display name for the claim which will be shown when viewing claims associated with users and roles.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>LoginProvider</maml:name>
        <maml:description>
          <maml:para>Specifies the external login provider configuration to which the claim should be registered.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
        <dev:type>
          <maml:name>LoginProvider</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the claim to be registered. The value should match the name of a claim present in tokens issued by the external login provider.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LoginProvider</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsLoginProvider | Add-VmsLoginProviderClaim -Name 'vms_role' -DisplayName 'Role'</dev:code>
        <dev:remarks>
          <maml:para>Adds a registered claim with the name 'vms_role' to all external login providers. As of VMS version 2023 R1 there can be only one login provider. In the future, if multiple login providers are supported, this example would add the claim to all providers.</maml:para>
          <maml:para>The display name for the claim is set to 'Role' so this is how it will be displayed when viewing claims associated with users and roles.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/add-vmsloginproviderclaim/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-VmsRoleClaim</command:name>
      <command:verb>Add</command:verb>
      <command:noun>VmsRoleClaim</command:noun>
      <maml:description>
        <maml:para>Adds the name of a registered claim with a given value to one or more roles.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Add-VmsRoleClaim` cmdlet adds a claim name with a given value to one or more roles. The claim name must already be registered with the associated login provider. This is done using the `Add-VmsLoginProviderClaim` cmdlet.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-VmsRoleClaim</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies one or more roles to which to add the provided claim and value.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
          <dev:type>
            <maml:name>Role[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>LoginProvider</maml:name>
          <maml:description>
            <maml:para>Specifies the login provider for which the claim should be associated.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
          <dev:type>
            <maml:name>LoginProvider</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>ClaimName</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the registered claim to add to the specified role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="none">
          <maml:name>ClaimValue</maml:name>
          <maml:description>
            <maml:para>The value which should cause users with this claim to be mapped to the specified role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>ClaimName</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the registered claim to add to the specified role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="none">
        <maml:name>ClaimValue</maml:name>
        <maml:description>
          <maml:para>The value which should cause users with this claim to be mapped to the specified role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>LoginProvider</maml:name>
        <maml:description>
          <maml:para>Specifies the login provider for which the claim should be associated.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
        <dev:type>
          <maml:name>LoginProvider</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
        <maml:name>Role</maml:name>
        <maml:description>
          <maml:para>Specifies one or more roles to which to add the provided claim and value.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
        <dev:type>
          <maml:name>Role[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LoginProvider</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>$loginProvider = Get-VmsLoginProvider | Select-Object -First 1
$loginProvider | Add-VmsLoginProviderClaim -Name 'vms_role'
Get-VmsRole -PipelineVariable role | Foreach-Object {
    $role | Add-VmsRoleClaim -LoginProvider $loginProvider -ClaimName 'vms_role' -ClaimValue $role.Name
}</dev:code>
        <dev:remarks>
          <maml:para>The `vms_role` claim is added to the first available login provider, which as of XProtect VMS versions 2023 R1, will be the only login provider since only one is supported. After registering the claim with the login provider, an entry is added for each role with a value matching the name of the role.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/add-vmsroleclaim/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-VmsRoleMember</command:name>
      <command:verb>Add</command:verb>
      <command:noun>VmsRoleMember</command:noun>
      <maml:description>
        <maml:para>Adds a user or group to the specified role.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Adds a user or group to the specified role. Members may be Milestone "Basic Users", external users from a customer-provided identity provider, local Windows users, or Active Directory users or groups.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-VmsRoleMember</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies the role object, or the name of the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
          <dev:type>
            <maml:name>Role[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>AccountName</maml:name>
          <maml:description>
            <maml:para>Specifies the account name of the user or group to be added to the role. The value can be expressed in the following formats: user principal name (username@domain.ext), down-level logon name (domain\username), or simply "username". Local Windows or Active Directory groups can be specified the same way.</maml:para>
            <maml:para>Adding members to roles is done by providing the management server with the desired SID. When the account name is provided without a domain name, the members of the local machine will be checked first. If no matches are found, matching Active Directory members will be returned instead.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Add-VmsRoleMember</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies the role object, or the name of the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
          <dev:type>
            <maml:name>Role[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>Sid</maml:name>
          <maml:description>
            <maml:para>Specifies the SID of a user or group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>AccountName</maml:name>
        <maml:description>
          <maml:para>Specifies the account name of the user or group to be added to the role. The value can be expressed in the following formats: user principal name (username@domain.ext), down-level logon name (domain\username), or simply "username". Local Windows or Active Directory groups can be specified the same way.</maml:para>
          <maml:para>Adding members to roles is done by providing the management server with the desired SID. When the account name is provided without a domain name, the members of the local machine will be checked first. If no matches are found, matching Active Directory members will be returned instead.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
        <maml:name>Role</maml:name>
        <maml:description>
          <maml:para>Specifies the role object, or the name of the role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
        <dev:type>
          <maml:name>Role[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>Sid</maml:name>
        <maml:description>
          <maml:para>Specifies the SID of a user or group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>A SID is a security identifier and the abbreviation is typically used in the context of Microsoft operating systems and Active Directory to identify "objects" like user accounts, groups, computers, and so on.</maml:para>
        <maml:para>Basic users in Milestone are defined within the VMS and do not represent, or map to a Windows or Active Directory object of any kind, but they still have a SID property. You may notice that these basic user SID's are actually GUIDs or Globally Unique Identifiers. Presumably this was done to "normalize" all supported types of users at design time: basic users, local Windows users and groups, and Active Directory users and groups. By implementing a "SID" property on basic users, it meant all types of supported users would have a "SID" and because of this, it would simplify certain operations in the implementation of security in the product.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Add-VmsRoleMember -Role Operators -AccountName 'security\Ashley'</dev:code>
        <dev:remarks>
          <maml:para>Adds the user "security\Ashley" to the role "Operators". The prefix "security" could be either a local machine name, or a domain name.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$role = New-VmsRole -Name 'Smart Wall Operator' -PassThru
$role | Add-VmsRoleMember -AccountName '[BASIC]\Ashley'</dev:code>
        <dev:remarks>
          <maml:para>Adds the basic user "Ashley" to the role "Smart Wall Operator". The prefix '[BASIC]' in this down-level logon formatted AccountName ensures that the SID lookup is performed against the list of basic users configured in the VMS.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/add-vmsrolemember/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-VmsStorage</command:name>
      <command:verb>Add</command:verb>
      <command:noun>VmsStorage</command:noun>
      <maml:description>
        <maml:para>Adds a new live Recording Storage configuration to a Recording Server</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Adds a new live Recording Storage configuration to a Recording Server</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-VmsStorage</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Default</maml:name>
          <maml:description>
            <maml:para>Specifies whether this storage should become the default storage for all devices added to the Recording Server in the future.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies the optional description of the storage configuration.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>EnableSigning</maml:name>
          <maml:description>
            <maml:para>Specifies whether digital signatures should be used to sign recordings on the storage configuration.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>EncryptionMethod</maml:name>
          <maml:description>
            <maml:para>Specifies which encryption method should be used. If no encryption is desired, omit this parameter.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Light</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Strong</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>MaximumSizeMB</maml:name>
          <maml:description>
            <maml:para>Specifies the maximum size for the live storage before data should be archived or deleted.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>0</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the storage configuration.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Password</maml:name>
          <maml:description>
            <maml:para>Specifies the password used to create the encryption key to use when EncryptionMethod is specified.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
          <dev:type>
            <maml:name>SecureString</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path under which the new storage folder will be created on the Recording Server or UNC path.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Specifies the Recording Server to which the storage configuration should be added. This should be a RecordingServer object such as that returned by the Get-RecordingServer cmdlet.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RecordingServer</command:parameterValue>
          <dev:type>
            <maml:name>RecordingServer</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Retention</maml:name>
          <maml:description>
            <maml:para>Specifies the retention, as a [timespan], after which the recordings will be deleted, or archived if you choose to add an archive storage to the new storage configuration after it is created. The minimum timespan is 60 minutes, and the maximum is 2147483647 minutes.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">TimeSpan</command:parameterValue>
          <dev:type>
            <maml:name>TimeSpan</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Default</maml:name>
        <maml:description>
          <maml:para>Specifies whether this storage should become the default storage for all devices added to the Recording Server in the future.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies the optional description of the storage configuration.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>EnableSigning</maml:name>
        <maml:description>
          <maml:para>Specifies whether digital signatures should be used to sign recordings on the storage configuration.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>EncryptionMethod</maml:name>
        <maml:description>
          <maml:para>Specifies which encryption method should be used. If no encryption is desired, omit this parameter.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>MaximumSizeMB</maml:name>
        <maml:description>
          <maml:para>Specifies the maximum size for the live storage before data should be archived or deleted.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>0</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the storage configuration.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Password</maml:name>
        <maml:description>
          <maml:para>Specifies the password used to create the encryption key to use when EncryptionMethod is specified.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
        <dev:type>
          <maml:name>SecureString</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the path under which the new storage folder will be created on the Recording Server or UNC path.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Specifies the Recording Server to which the storage configuration should be added. This should be a RecordingServer object such as that returned by the Get-RecordingServer cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RecordingServer</command:parameterValue>
        <dev:type>
          <maml:name>RecordingServer</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Retention</maml:name>
        <maml:description>
          <maml:para>Specifies the retention, as a [timespan], after which the recordings will be deleted, or archived if you choose to add an archive storage to the new storage configuration after it is created. The minimum timespan is 60 minutes, and the maximum is 2147483647 minutes.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">TimeSpan</command:parameterValue>
        <dev:type>
          <maml:name>TimeSpan</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Storage</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>&lt;example usage&gt;</dev:code>
        <dev:remarks>
          <maml:para>Explanation of what the example does</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/add-vmsstorage/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Clear-VmsSiteInfo</command:name>
      <command:verb>Clear</command:verb>
      <command:noun>VmsSiteInfo</command:noun>
      <maml:description>
        <maml:para>Clears all site information properties.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet clears all site information properties which are displayed in the Management Client under Site / Basics / Site Information.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Clear-VmsSiteInfo</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptAula
Clear-VmsSiteInfo -WhatIf</dev:code>
        <dev:remarks>
          <maml:para>After connecting to the Management Server, this command shows what would happen if the site information was cleared. Specifically, it would tell you what fields would be removed if you were to run the command without the -WhatIf switch.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/clear-vmssiteinfo/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Clear-VmsView</command:name>
      <command:verb>Clear</command:verb>
      <command:noun>VmsView</command:noun>
      <maml:description>
        <maml:para>Clears all cameras or other view items from one or more XProtect Smart Client views.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This command removes all view items from the view, leaving an empty view layout with the same original layout.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Clear-VmsView</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>View</maml:name>
          <maml:description>
            <maml:para>Specifies one or more views to be cleared of all view items.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">View[]</command:parameterValue>
          <dev:type>
            <maml:name>View[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the updated view should be passed on through the pipeline, or out to the terminal.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the updated view should be passed on through the pipeline, or out to the terminal.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>View</maml:name>
        <maml:description>
          <maml:para>Specifies one or more views to be cleared of all view items.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">View[]</command:parameterValue>
        <dev:type>
          <maml:name>View[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.View[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.View</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$view = Get-VmsView | Out-GridView -OutputMode Single
$view | Clear-VmsView -WhatIf</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we prompt for a view selection, and then clear the view of all view items, except the -WhatIf parameter is present, so you will only see a message indicating the change that would occur if you omitted the -WhatIf switch.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/clear-vmsview/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertFrom-ConfigurationApiProperties</command:name>
      <command:verb>ConvertFrom</command:verb>
      <command:noun>ConfigurationApiProperties</command:noun>
      <maml:description>
        <maml:para>Converts a complex Milestone Configuration API propery collection into a hashtable</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>When accessing property collections like $hardware.HardwareDriverSettingsFolder.HardwareDriverSettings[0].HardwareDriverSettingsChildItems[0] it can be difficult to figure out how to access the values, and how to find the display names of those values for "enum" style properties. The property keys also have verbose names like stream:0.0.1/FPS/&lt;guid&gt; for example.</maml:para>
      <maml:para>This function accepts a property collection, and returns a hashtable with easy to read key names, and either raw values, or "display" values.</maml:para>
      <maml:para>If Get-Culture returns anything other than en-US, and you use the UseDisplayNames switch, a translated value will be provided if available.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertFrom-ConfigurationApiProperties</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Properties</maml:name>
          <maml:description>
            <maml:para>Specifies a Properties collection as found on $hardware.HardwareDriverSettingsFolder.HardwareDriverSettings[0].HardwareDriverSettingsChildItems[0]</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ConfigurationApiProperties</command:parameterValue>
          <dev:type>
            <maml:name>ConfigurationApiProperties</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>UseDisplayNames</maml:name>
          <maml:description>
            <maml:para>Specifies that the display name for each value should be returned.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Properties</maml:name>
        <maml:description>
          <maml:para>Specifies a Properties collection as found on $hardware.HardwareDriverSettingsFolder.HardwareDriverSettings[0].HardwareDriverSettingsChildItems[0]</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ConfigurationApiProperties</command:parameterValue>
        <dev:type>
          <maml:name>ConfigurationApiProperties</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>UseDisplayNames</maml:name>
        <maml:description>
          <maml:para>Specifies that the display name for each value should be returned.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>ConvertFrom-ConfigurationApiProperties -Properties (Get-Hardware | Select-Object -First 1).HardwareDriverSettingsFolder.HardwareDriverSettings[0].HardwareDriverSettingsChildItems[0].Properties -UseDisplayNames</dev:code>
        <dev:remarks>
          <maml:para>Gets general settings properties from the first hardware device returned by Get-Hardware, and returns a hashtable with the keys and display values.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/convertfrom-configurationapiproperties/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertFrom-ConfigurationItem</command:name>
      <command:verb>ConvertFrom</command:verb>
      <command:noun>ConfigurationItem</command:noun>
      <maml:description>
        <maml:para>Converts a generic Configuration API item to the strongly-typed version of that object type.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Converts a generic Configuration API item to the strongly-typed version of that object type. For example, a Configuration Item representing a camera has an ItemType of Camera, and a path like 'Camera[a6756a0e-886a-4050-a5a5-81317743c32a]'. Some commands require a strongly-typed Camera object as a parameter, so if you have a generic item like you get from Find-ConfigurationItem or Get-ConfigurationItem, you can convert that item to a strongly typed class by piping that item to ConvertFrom-ConfigurationItem.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertFrom-ConfigurationItem</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the Milestone Configuration API 'Path' value of the configuration item. For example, 'Hardware[a6756a0e-886a-4050-a5a5-81317743c32a]' where the guid is the ID of an existing Hardware item.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>ItemType</maml:name>
          <maml:description>
            <maml:para>Specifies the Milestone 'ItemType' value such as 'Camera', 'Hardware', or 'InputEvent'</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>ItemType</maml:name>
        <maml:description>
          <maml:para>Specifies the Milestone 'ItemType' value such as 'Camera', 'Hardware', or 'InputEvent'</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the Milestone Configuration API 'Path' value of the configuration item. For example, 'Hardware[a6756a0e-886a-4050-a5a5-81317743c32a]' where the guid is the ID of an existing Hardware item.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para>Not all ItemType's available through the Configuration API have matching "strongly typed" classes, so for less commonly used item types, you may see an error when using this function.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Find-ConfigurationItem -ItemType Camera -EnableFilter Enabled | ConvertFrom-ConfigurationItem</dev:code>
        <dev:remarks>
          <maml:para>Finds all enabled cameras and converts them to Camera objects. This should work faster than 'Get-Hardware | Where-Object Enabled | Get-Camera | Where-Object Enabled'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/convertfrom-configurationitem/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertFrom-GisPoint</command:name>
      <command:verb>ConvertFrom</command:verb>
      <command:noun>GisPoint</command:noun>
      <maml:description>
        <maml:para>Converts Milestone's internal representation of a GPS coordinate to a [System.Device.Location.GeoCoordinate] object.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Milestone stores GPS coordinates as X,Y coordinates on a standard coordinate plane. For example, the coordinates 47.25726, -122.51608 are represented in Milestone as "POINT (-122.51608 47.25726)" where the latitude and longitude are reversed. An unset coordinate for a camera is represented as "POINT EMPTY".</maml:para>
      <maml:para>This function converts Milestone's GisPoint property string into a [System.Device.Location.GeoCoordinate] object which has a ToString() method which will properly format the coordinates. If the coordinates are unset in Milestone, then you will receive the same object but the position will be defined as "Unknown".</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertFrom-GisPoint</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>GisPoint</maml:name>
          <maml:description>
            <maml:para>Specifies the GisPoint value to convert to a GeoCoordinate. Milestone stores GisPoint data in the format "POINT ([longitude] [latitude])" or "POINT EMPTY".</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>GisPoint</maml:name>
        <maml:description>
          <maml:para>Specifies the GisPoint value to convert to a GeoCoordinate. Milestone stores GisPoint data in the format "POINT ([longitude] [latitude])" or "POINT EMPTY".</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Device.Location.GeoCoordinate</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Select-Camera | ConvertFrom-GisPoint</dev:code>
        <dev:remarks>
          <maml:para>Opens a camera selection dialog and pipes the camera to ConvertFrom-GisPoint. The GisPoint parameter accepts the value from the pipeline by property name and the Camera object's coordinates are stored in a property with a matching name.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/convertfrom-gispoint/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertFrom-Snapshot</command:name>
      <command:verb>ConvertFrom</command:verb>
      <command:noun>Snapshot</command:noun>
      <maml:description>
        <maml:para>Converts from the output provided by Get-Snapshot to a [System.Drawing.Image] object.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Converts from the output provided by Get-Snapshot to a [System.Drawing.Image] object. Don't forget to call Dispose() on Image when you're done with it!</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertFrom-Snapshot</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="Bytes">
          <maml:name>Content</maml:name>
          <maml:description>
            <maml:para>Specifies an array of bytes as is returned by `Get-Snapshot`</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Byte[]</command:parameterValue>
          <dev:type>
            <maml:name>Byte[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="Bytes">
        <maml:name>Content</maml:name>
        <maml:description>
          <maml:para>Specifies an array of bytes as is returned by `Get-Snapshot`</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Byte[]</command:parameterValue>
        <dev:type>
          <maml:name>Byte[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>Accepts a byte array, and will accept the byte array from Get-Snapshot by property name. The property name for</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>Accepts a byte array, and will accept the byte array from Get-Snapshot by property name. The property name for</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>Accepts a byte array, and will accept the byte array from Get-Snapshot by property name. The property name for</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.Drawing.Image]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.Drawing.Image]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>Don't forget to call Dispose() when you're done with the image!</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>$image = Select-Camera | Get-Snapshot -Live | ConvertFrom-Snapshot</dev:code>
        <dev:remarks>
          <maml:para>Get's a live snapshot from the camera selected from the camera selection dialog, converts it to a System.Drawing.Image object and saves it to $image</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/convertfrom-snapshot/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertTo-GisPoint</command:name>
      <command:verb>ConvertTo</command:verb>
      <command:noun>GisPoint</command:noun>
      <maml:description>
        <maml:para>Translates coordinates to a Milestone GisPoint value suitable for updating GPS coordinates on a Milestone device.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>GPS coordinates in Milestone are stored an X,Y order in the format "POINT (X Y)". As such, if you have a latitude and longitude value, you must reverse them and format them properly for Milestone to accept the new GisPoint value.</maml:para>
      <maml:para>In some cases, the GisPoint property can have a third value representing altitude or elevation. This is expressed in the format "POINT (X Y Z)".</maml:para>
      <maml:para>If the Coordinate object, Coordinates string, or Altitude value are provided, then the cmdlet will output a three-part GisPoint value.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertTo-GisPoint</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Altitude</maml:name>
          <maml:description>
            <maml:para>Specifies the altitude in meters, relative to sea level.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
          <dev:type>
            <maml:name>Double</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Latitude</maml:name>
          <maml:description>
            <maml:para>A latitude value in the form of a double.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
          <dev:type>
            <maml:name>Double</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>0</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Longitude</maml:name>
          <maml:description>
            <maml:para>A longitude value in the form of a double.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
          <dev:type>
            <maml:name>Double</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>0</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>ConvertTo-GisPoint</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Coordinate</maml:name>
          <maml:description>
            <maml:para>A GeoCoordinate object with Latitude and Longitude properties.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">GeoCoordinate</command:parameterValue>
          <dev:type>
            <maml:name>GeoCoordinate</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>ConvertTo-GisPoint</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Coordinates</maml:name>
          <maml:description>
            <maml:para>A coordinate written in the format "latitude, longitude", or "latitude, longitude, altitude".</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Altitude</maml:name>
        <maml:description>
          <maml:para>Specifies the altitude in meters, relative to sea level.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
        <dev:type>
          <maml:name>Double</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Coordinate</maml:name>
        <maml:description>
          <maml:para>A GeoCoordinate object with Latitude and Longitude properties.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">GeoCoordinate</command:parameterValue>
        <dev:type>
          <maml:name>GeoCoordinate</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Coordinates</maml:name>
        <maml:description>
          <maml:para>A coordinate written in the format "latitude, longitude", or "latitude, longitude, altitude".</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Latitude</maml:name>
        <maml:description>
          <maml:para>A latitude value in the form of a double.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
        <dev:type>
          <maml:name>Double</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>0</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Longitude</maml:name>
        <maml:description>
          <maml:para>A longitude value in the form of a double.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
        <dev:type>
          <maml:name>Double</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>0</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>ConvertTo-GisPoint -Coordinates '40, -122'</dev:code>
        <dev:remarks>
          <maml:para>Produces a string like "POINT (-122 40)"</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>ConvertTo-GisPoint -Latitude 40 -Longitude -122</dev:code>
        <dev:remarks>
          <maml:para>Produces a string like "POINT (-122 40)"</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 3 --------------------------</maml:title>
        <dev:code>ConvertTo-GisPoint -Latitude 40 -Longitude -122 -Altitude 125</dev:code>
        <dev:remarks>
          <maml:para>Produces a string like "POINT (-122 40 125)"</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 4 --------------------------</maml:title>
        <dev:code>ConvertTo-GisPoint -Coordinates '40, -122, 125'</dev:code>
        <dev:remarks>
          <maml:para>Produces a string like "POINT (-122 40 125)"</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/convertto-gispoint/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Copy-VmsView</command:name>
      <command:verb>Copy</command:verb>
      <command:noun>VmsView</command:noun>
      <maml:description>
        <maml:para>Copies one or more XProtect Smart Client views to a destination view group.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Copies one or more XProtect Smart Client views to a destination view group. The elements copied include the name, description, layout, and all view item definitions.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Copy-VmsView</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>View</maml:name>
          <maml:description>
            <maml:para>Specifies the source view to be copied.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">View[]</command:parameterValue>
          <dev:type>
            <maml:name>View[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>DestinationViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the view group within which a copy of the specified view will be created.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Overwrite a view with the same name if it exists. If a view exists and the -Force switch is omitted, the name of the copy will be appended with " - Copy".</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the newly created view should be returned to the pipeline.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>DestinationViewGroup</maml:name>
        <maml:description>
          <maml:para>Specifies the view group within which a copy of the specified view will be created.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Overwrite a view with the same name if it exists. If a view exists and the -Force switch is omitted, the name of the copy will be appended with " - Copy".</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the newly created view should be returned to the pipeline.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>View</maml:name>
        <maml:description>
          <maml:para>Specifies the source view to be copied.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">View[]</command:parameterValue>
        <dev:type>
          <maml:name>View[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.View[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.View</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$viewGroup = Get-VmsViewGroup | Out-GridView -OutputMode Single
$view = $viewGroup | Get-VmsViewGroup -Recurse | Get-VmsView | Out-GridView -OutputMode Single
$newViewGroup = New-VmsViewGroup -Name 'MilestonePSTools' -Force | New-VmsViewGroup -Name 'Example 1' -Force
$view | Copy-VmsView -Destination $newViewGroup -PassThru</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we retrieve a list of top-level view groups. After selecting view group, a list of views in that view group are presented.</maml:para>
          <maml:para>Once a view is selected, a new view group named 'MilestonePSTools' with a subgroup named 'Example 1' is created. A copy of the selected view is then placed in the new subgroup under the new top-level group 'MilestonePSTools'.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/copy-vmsview/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Copy-VmsViewGroup</command:name>
      <command:verb>Copy</command:verb>
      <command:noun>VmsViewGroup</command:noun>
      <maml:description>
        <maml:para>Copies one or more XProtect Smart Client view groups.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Copies one or more XProtect Smart Client view groups to another top-level view group, or as a child group to a specified destination view group.</maml:para>
      <maml:para>If a view group with the same name already exists, the string " - Copy" will be appended repeatedly until the new name of the top-level view group is unique. The entire view group and view hierarchy will be duplicated in the destination view group.</maml:para>
      <maml:para>Permissions from the source view group will not be copied to the destination.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Copy-VmsViewGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>ViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the source view group to be copied.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup[]</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>DestinationViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies an optional destination view group. When omitted, the selected view group will be copied to the root folder as a top-level view group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Specifies that if a view group with the same name exists in the destination view group, the existing view group should be overwritten as long as the ID is different than the source view group. This is likely to throw an error until a Configuration API bug is resolved on the Management Server in 2022 R2, or via a cumulative patch for older versions of the VMS.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the new view group copy should be returned to the pipeline.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>DestinationViewGroup</maml:name>
        <maml:description>
          <maml:para>Specifies an optional destination view group. When omitted, the selected view group will be copied to the root folder as a top-level view group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Specifies that if a view group with the same name exists in the destination view group, the existing view group should be overwritten as long as the ID is different than the source view group. This is likely to throw an error until a Configuration API bug is resolved on the Management Server in 2022 R2, or via a cumulative patch for older versions of the VMS.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the new view group copy should be returned to the pipeline.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>ViewGroup</maml:name>
        <maml:description>
          <maml:para>Specifies the source view group to be copied.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup[]</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$viewGroup = Get-VmsViewGroup | Out-GridView -OutputMode Single
$newViewGroup = $viewGroup | Copy-VmsViewGroup -PassThru</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we retrieve a list of top-level view groups. After selecting view group, a copy of the view group is created. Both the source and destination view groups will be top-level view groups. The copy will be named the same, as the original, except the text " - Copy" will be appended to the end of the name.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$viewGroup = Get-VmsViewGroup | Out-GridView -OutputMode Single
$subgroup = $viewGroup | Get-VmsViewGroup | Select-Object -First 1
$destination = New-VmsViewGroup -Name 'MilestonePSTools' -Force |
               New-VmsViewGroup -Name 'Subgroup' -Force
$subGroup | Copy-VmsViewGroup -DestinationViewGroup $destination -PassThru</dev:code>
        <dev:remarks>
          <maml:para>The first subgroup from the selected top-level view group is copied to a subgroup of a new top-level view group named "MilestonePSTools", demonstrating that both your source, and destination view groups can be child view groups if needed.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/copy-vmsviewgroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Export-VmsHardware</command:name>
      <command:verb>Export</command:verb>
      <command:noun>VmsHardware</command:noun>
      <maml:description>
        <maml:para>Exports detailed information about hardware devices on Milestone XProtect recording servers.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Exports detailed information about hardware devices on Milestone XProtect recording servers. The information can be sent to a CSV file or returned to the pipeline, or both.</maml:para>
      <maml:para>If no Path is provided, the information will be output to the pipeline automatically without the PassThru switch.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Export-VmsHardware</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Specifies one or more RecordingServer objects as returned from Get-RecordingServer.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
          <dev:type>
            <maml:name>RecordingServer[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>EnableFilter</maml:name>
          <maml:description>
            <maml:para>Specifies whether to return information about enabled object, disabled objects, or all.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">All</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Enabled</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Disabled</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Enabled</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies a path where exported hardware information should be saved.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Append</maml:name>
          <maml:description>
            <maml:para>Specifies that the exported hardware information should be appended to an existing CSV file.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that each row of data should be returned to the pipeline.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Append</maml:name>
        <maml:description>
          <maml:para>Specifies that the exported hardware information should be appended to an existing CSV file.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>EnableFilter</maml:name>
        <maml:description>
          <maml:para>Specifies whether to return information about enabled object, disabled objects, or all.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Enabled</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that each row of data should be returned to the pipeline.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies a path where exported hardware information should be saved.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Specifies one or more RecordingServer objects as returned from Get-RecordingServer.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
        <dev:type>
          <maml:name>RecordingServer[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Management.Automation.PSObject</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Export-VmsHardware -Path C:\temp\hardware.csv -PassThru | Out-GridView</dev:code>
        <dev:remarks>
          <maml:para>Writes the exported hardware information to disk and displays the data in a grid view as well.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Export-VmsHardware -RecordingServer (Get-RecordingServer | Out-GridView -OutputMode Multiple) -Path C:\temp\hardware.csv</dev:code>
        <dev:remarks>
          <maml:para>Displays a grid view dialog where you can select one or more Recording Servers to perform a hardware export on.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/export-vmshardware/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Export-VmsLicenseRequest</command:name>
      <command:verb>Export</command:verb>
      <command:noun>VmsLicenseRequest</command:noun>
      <maml:description>
        <maml:para>Exports a Milestone XProtect VMS license request file.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Exports a Milestone XProtect VMS license request file which can be uploaded to the My Milestone portal. The activated license file can be imported using the Import-VmsLicense function.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Export-VmsLicenseRequest</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies a path, including file name, where the license request file should be saved. Normally license request files are expected to have a .LRQ extension.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>If a file already exists at the specified path, the file will be overwritten.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>The new license file should be returned as a FileInfo object.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>If a file already exists at the specified path, the file will be overwritten.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>The new license file should be returned as a FileInfo object.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies a path, including file name, where the license request file should be saved. Normally license request files are expected to have a .LRQ extension.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.IO.FileInfo</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>System.IO.FileInfo</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>Support for license management in Milestone's MIP SDK / Configuration API was introduced in version 2020 R2. If the Management Server version is earlier than 2020 R2, this function will not work.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Export-VmsLicenseRequest -Path ~\Downloads\license.lrq -Force</dev:code>
        <dev:remarks>
          <maml:para>Writes a license request file to license.lrq, and overwrites an existing file if it already exists.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/export-vmslicenserequest/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Export-VmsViewGroup</command:name>
      <command:verb>Export</command:verb>
      <command:noun>VmsViewGroup</command:noun>
      <maml:description>
        <maml:para>Exports an XProtect Smart Client view group and all contents to a JSON file.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Exports an XProtect Smart Client view group and all contents to a JSON file which can be used to import the view group on the same Management Server, or a different Management Server.</maml:para>
      <maml:para>The selected view group can be a top-level view group, or a child view group. However, if you import a view group which has directly-attached views that are not nested in a child view group, those views will be lost when importing the view group as a top-level view group.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Export-VmsViewGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>ViewGroup</maml:name>
          <maml:description>
            <maml:para>The view group to be exported, along with all child members, recursively.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path to a file where a JSON representation of the view group will be saved</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Specifies that the destination directory should be created if it doesn't exist, and if the destination file exists, it should be overwritten.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Specifies that the destination directory should be created if it doesn't exist, and if the destination file exists, it should be overwritten.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the path to a file where a JSON representation of the view group will be saved</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>ViewGroup</maml:name>
        <maml:description>
          <maml:para>The view group to be exported, along with all child members, recursively.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$viewGroup = Get-VmsViewGroup | Out-GridView -OutputMode Single
$viewGroup | Export-VmsViewGroup -Path C:\temp\viewgroup.json</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we prompt for a view group selection. The selected view group is then exported to a json file at C:\temp\viewgroup.json.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/export-vmsviewgroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Find-ConfigurationItem</command:name>
      <command:verb>Find</command:verb>
      <command:noun>ConfigurationItem</command:noun>
      <maml:description>
        <maml:para>Quickly finds configuration items matching a specified Name, ItemType and Properties filters</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Quickly finds configuration items matching a specified Name, ItemType and Properties filters by using the QueryItems method available in the Configuration API.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Find-ConfigurationItem</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies all, or part of the display name of the configuration item to search for. For example, if you want to find a camera named "North West Parking" and you specify the value 'Parking', you will get results for any camera where 'Parking' appears in the name somewhere. The search is not case sensitive.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>ItemType</maml:name>
          <maml:description>
            <maml:para>Specifies the type(s) of items to include in the results. The default is to include only 'Camera' items.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Camera</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>EnableFilter</maml:name>
          <maml:description>
            <maml:para>Specifies whether all matching items should be included, or whether only enabled, or disabled items should be included in the results. The default is to include all items regardless of state.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">All</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Disabled</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Enabled</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>All</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>Properties</maml:name>
          <maml:description>
            <maml:para>An optional hashtable of additional property keys and values to filter results. Properties must be string types, and the results will be included if the property key exists, and the value contains the provided string.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>@{}</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>EnableFilter</maml:name>
        <maml:description>
          <maml:para>Specifies whether all matching items should be included, or whether only enabled, or disabled items should be included in the results. The default is to include all items regardless of state.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>All</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>ItemType</maml:name>
        <maml:description>
          <maml:para>Specifies the type(s) of items to include in the results. The default is to include only 'Camera' items.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Camera</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies all, or part of the display name of the configuration item to search for. For example, if you want to find a camera named "North West Parking" and you specify the value 'Parking', you will get results for any camera where 'Parking' appears in the name somewhere. The search is not case sensitive.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>Properties</maml:name>
        <maml:description>
          <maml:para>An optional hashtable of additional property keys and values to filter results. Properties must be string types, and the results will be included if the property key exists, and the value contains the provided string.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>@{}</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para>The QueryItems method was added to Configuration API on the Milestone XProtect Management Server starting with version 2020 R2. If your Milestone VMS version is 2020 R1 or earlier, you will receive an error when using this command.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Find-ConfigurationItem -ItemType Camera -Name Parking</dev:code>
        <dev:remarks>
          <maml:para>Returns a generic Configuration API item for each camera containing the word "parking" anywhere in the display name.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Find-ConfigurationItem -ItemType Hardware -Properties @{ Address = '192.168.1.101' }</dev:code>
        <dev:remarks>
          <maml:para>Returns a generic Configuration API item for each hardware with the IP address 192.168.1.101 present in the 'Address' property of the hardware device. Hardware typically have an address in the format of 'http://192.168.1.101/'.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 3 --------------------------</maml:title>
        <dev:code>Find-ConfigurationItem -ItemType Camera -Name Parking | ConvertFrom-ConfigurationItem</dev:code>
        <dev:remarks>
          <maml:para>Finds every camera containing the word "parking" anywhere in the display name and converts it from a generic Configuration API item to a strongly-typed Camera object such as what you will get when using Get-Camera.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/find-configurationitem/</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>MIP SDK Docs - QueryItems</maml:linkText>
        <maml:uri>https://doc.developer.milestonesys.com/html/index.html?base=miphelp/class_video_o_s_1_1_configuration_api_1_1_client_service_1_1_query_items.html&amp;tree=tree_search.html?search=queryitems</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Find-XProtectDevice</command:name>
      <command:verb>Find</command:verb>
      <command:noun>XProtectDevice</command:noun>
      <maml:description>
        <maml:para>Finds devices and provides the names of the parent hardware and recording server to help quickly locate devices by name.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Finds devices and provides the names of the parent hardware and recording server to help quickly locate devices by name. If searching for a child of a hardware object such as a camera or microphone, the name of the device(s) as well as their parent hardware object and recording server will be returned. When searching for a hardware object, only the hardware and recording server names will be returned.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Find-XProtectDevice</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Address</maml:name>
          <maml:description>
            <maml:para>Specifies all or part of the IP or hostname of the hardware device to search for.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>EnableFilter</maml:name>
          <maml:description>
            <maml:para>Specifies whether all devices should be returned, or only enabled or disabled devices. Default is to return all matching devices.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">All</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Disabled</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Enabled</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>All</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ItemType</maml:name>
          <maml:description>
            <maml:para>Specifies the ItemType such as Camera, Microphone, or InputEvent. Default is 'Camera'.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Hardware</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Camera</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Microphone</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Speaker</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">InputEvent</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Output</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Metadata</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Camera</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>MacAddress</maml:name>
          <maml:description>
            <maml:para>Specifies all or part of the MAC address of the hardware device to search for. Note: Searching by MAC is significantly slower than searching by IP.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies name, or part of the name of the device(s) to find.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Properties</maml:name>
          <maml:description>
            <maml:para>Specifies an optional hash table of key/value pairs matching properties on the items you're searching for.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>@{}</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ShowDialog</maml:name>
          <maml:description>
            <maml:para>{{ Fill ShowDialog Description }}</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Address</maml:name>
        <maml:description>
          <maml:para>Specifies all or part of the IP or hostname of the hardware device to search for.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>EnableFilter</maml:name>
        <maml:description>
          <maml:para>Specifies whether all devices should be returned, or only enabled or disabled devices. Default is to return all matching devices.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>All</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ItemType</maml:name>
        <maml:description>
          <maml:para>Specifies the ItemType such as Camera, Microphone, or InputEvent. Default is 'Camera'.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Camera</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>MacAddress</maml:name>
        <maml:description>
          <maml:para>Specifies all or part of the MAC address of the hardware device to search for. Note: Searching by MAC is significantly slower than searching by IP.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies name, or part of the name of the device(s) to find.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Properties</maml:name>
        <maml:description>
          <maml:para>Specifies an optional hash table of key/value pairs matching properties on the items you're searching for.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>@{}</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ShowDialog</maml:name>
        <maml:description>
          <maml:para>{{ Fill ShowDialog Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para>This function depends on Find-ConfigurationItem which is only supported on VMS versions from 2020 R2 and later.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Find-XProtectDevice -ItemType Hardware -Properties @{ Address = '192.168.1.101' }</dev:code>
        <dev:remarks>
          <maml:para>Finds all hardware devices on all recording servers where the Address contains the IP '192.168.1.101'</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Find-XProtectDevice -ItemType Camera -Name Parking</dev:code>
        <dev:remarks>
          <maml:para>Finds all cameras with the word 'Parking' appearing in the name and returns the camera names, and parent hardware and recording server names. The Name parameter is not case sensitive and does not support wildcards.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/find-xprotectdevice/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-BankTable</command:name>
      <command:verb>Get</command:verb>
      <command:noun>BankTable</command:noun>
      <maml:description>
        <maml:para>Enumerates Path for media database tables created by a Recording Server.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The records returned by this function must represent media database folders with names matching the format used by Milestone. The format expected is GUID_TAG_TIMESTAMP where GUID is the id of a device, TAG is a string like LOCAL or ARCHIVE, and TIMESTAMP is a local timestamp in the format yyyy-MM-dd_HH-mm-ss.</maml:para>
      <maml:para>Each record returned by this function will have a DeviceId property of type [Guid], an EndTime property of type [DateTime] which will be a local timestamp representing the approximate time that folder was last added to, a Tag property representing the LOCAL or ARCHIVE string value describing the type of table, and a Path property with the full path to that folder on the file system.</maml:para>
      <maml:para>This function does not rely on cache.xml or archives_cache.xml in any way. As such, it can be used on a system with an invalid or missing cache. However, the accuracy of the timestamps is unreliable because they are based on the names of the folders on the filesystem which represent the time the Recording Server renamed that folder when it was converted from a live media database table to a local archive table.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-BankTable</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>The path to the media database. This must be the path to the folder containing the media database tables. For example, C:\MediaDatabase\4344cd14-0b12-4c18-8677-5d263c140af4 is the full path to the default "Local default" storage path. The ID for yours will be different, and if you need to find the ID, you can hold CTRL and click on the Storage tab of the Recording Server in Management Client. Then hover over the storage configuration and you will see the ID displayed in the tooltip.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>DeviceId</maml:name>
          <maml:description>
            <maml:para>The GUID of one or more devices you want to retrieve tables for. If you omit this property, all tables for all devices will be returned.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>StartTime</maml:name>
          <maml:description>
            <maml:para>The local DateTime indicating the oldest records to be retrieved from the media database. Since entire folders, each containing approximately one hour of video, will be retrieved, you could end up with video up to one hour older than requested.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">DateTime</command:parameterValue>
          <dev:type>
            <maml:name>DateTime</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>[DateTime]::MinValue</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>EndTime</maml:name>
          <maml:description>
            <maml:para>The local DateTime indicating the last records to be retrieved from the media database. Since entire folders, each containing approximately one hour of video, will be retrieved, you could end up with video up to one hour newer than requested.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">DateTime</command:parameterValue>
          <dev:type>
            <maml:name>DateTime</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>[DateTime]::MaxValue.AddHours(-1)</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>DeviceId</maml:name>
        <maml:description>
          <maml:para>The GUID of one or more devices you want to retrieve tables for. If you omit this property, all tables for all devices will be returned.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>EndTime</maml:name>
        <maml:description>
          <maml:para>The local DateTime indicating the last records to be retrieved from the media database. Since entire folders, each containing approximately one hour of video, will be retrieved, you could end up with video up to one hour newer than requested.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">DateTime</command:parameterValue>
        <dev:type>
          <maml:name>DateTime</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>[DateTime]::MaxValue.AddHours(-1)</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>The path to the media database. This must be the path to the folder containing the media database tables. For example, C:\MediaDatabase\4344cd14-0b12-4c18-8677-5d263c140af4 is the full path to the default "Local default" storage path. The ID for yours will be different, and if you need to find the ID, you can hold CTRL and click on the Storage tab of the Recording Server in Management Client. Then hover over the storage configuration and you will see the ID displayed in the tooltip.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>StartTime</maml:name>
        <maml:description>
          <maml:para>The local DateTime indicating the oldest records to be retrieved from the media database. Since entire folders, each containing approximately one hour of video, will be retrieved, you could end up with video up to one hour older than requested.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">DateTime</command:parameterValue>
        <dev:type>
          <maml:name>DateTime</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>[DateTime]::MinValue</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-BankTable C:\MediaDatabase\4344cd14-0b12-4c18-8677-5d263c140af4 -DeviceId "94275fef-b977-43f6-bf78-210c615b2967" | Copy-Item -Destination C:\Temp -Container -Recurse -Force</dev:code>
        <dev:remarks>
          <maml:para>Copy all media database tables for device with ID 94275fef-b977-43f6-bf78-210c615b2967 to C:\Temp</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-banktable/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-CameraRecordingStats</command:name>
      <command:verb>Get</command:verb>
      <command:noun>CameraRecordingStats</command:noun>
      <maml:description>
        <maml:para>Get statistics on the recordings of one or more cameras including the number of recording or motion sequence, the amount of time in the given time period with recordings or motion, and the percent of time in the given time period with recordings or motion.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Long description</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-CameraRecordingStats</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>Id</maml:name>
          <maml:description>
            <maml:para>Specifies the Id's of cameras for which to retrieve recording statistics</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
          <dev:type>
            <maml:name>Guid[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>StartTime</maml:name>
          <maml:description>
            <maml:para>Specifies the timestamp from which to start retrieving recording statistics. Default is 7 days prior to 12:00am of the current day.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">DateTime</command:parameterValue>
          <dev:type>
            <maml:name>DateTime</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>(Get-Date).Date.AddDays(-7)</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>EndTime</maml:name>
          <maml:description>
            <maml:para>Specifies the timestamp marking the end of the time period for which to retrieve recording statistics. The default is 12:00am of the current day.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">DateTime</command:parameterValue>
          <dev:type>
            <maml:name>DateTime</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>(Get-Date).Date</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>SequenceType</maml:name>
          <maml:description>
            <maml:para>Specifies the type of sequence to get statistics on. Default is RecordingSequence.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">RecordingSequence</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">MotionSequence</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>RecordingSequence</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>RunspacePool</maml:name>
          <maml:description>
            <maml:para>Specifies the runspacepool to use. If no runspacepool is provided, one will be created.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RunspacePool</command:parameterValue>
          <dev:type>
            <maml:name>RunspacePool</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AsHashTable</maml:name>
          <maml:description>
            <maml:para>Specifies that the output should be provided in a complete hashtable instead of one pscustomobject value at a time</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AsHashTable</maml:name>
        <maml:description>
          <maml:para>Specifies that the output should be provided in a complete hashtable instead of one pscustomobject value at a time</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>EndTime</maml:name>
        <maml:description>
          <maml:para>Specifies the timestamp marking the end of the time period for which to retrieve recording statistics. The default is 12:00am of the current day.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">DateTime</command:parameterValue>
        <dev:type>
          <maml:name>DateTime</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>(Get-Date).Date</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>Id</maml:name>
        <maml:description>
          <maml:para>Specifies the Id's of cameras for which to retrieve recording statistics</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
        <dev:type>
          <maml:name>Guid[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>RunspacePool</maml:name>
        <maml:description>
          <maml:para>Specifies the runspacepool to use. If no runspacepool is provided, one will be created.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RunspacePool</command:parameterValue>
        <dev:type>
          <maml:name>RunspacePool</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>SequenceType</maml:name>
        <maml:description>
          <maml:para>Specifies the type of sequence to get statistics on. Default is RecordingSequence.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>RecordingSequence</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>StartTime</maml:name>
        <maml:description>
          <maml:para>Specifies the timestamp from which to start retrieving recording statistics. Default is 7 days prior to 12:00am of the current day.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">DateTime</command:parameterValue>
        <dev:type>
          <maml:name>DateTime</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>(Get-Date).Date.AddDays(-7)</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Select-Camera | Get-CameraRecordingStats</dev:code>
        <dev:remarks>
          <maml:para>Opens a camera selection dialog and the selected camera will be sent to Get-CameraRecordingStats. The result will be a PSCustomObject with the DeviceID and a nested PSCustomObject under the RecordingStats property name.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-camerarecordingstats/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-ConfigurationItemProperty</command:name>
      <command:verb>Get</command:verb>
      <command:noun>ConfigurationItemProperty</command:noun>
      <maml:description>
        <maml:para>Gets the value of a given ConfigurationItem property by key</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>A ConfigurationItem may have zero or more Property objects in the Properties array. Each property has a key name and a value. Since the Properties property on a ConfigurationItem has no string-based indexer, you are required to search the array of properties for the one with the Key you're interested in, and then get the Value property of it.</maml:para>
      <maml:para>This cmdlet is a simple wrapper which does the Where-Object for you, and throws an error if the Key does not exist.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-ConfigurationItemProperty</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>A [VideoOS.ConfigurationApi.ClientService.ConfigurationItem] with a property to be retrieved.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ConfigurationItem</command:parameterValue>
          <dev:type>
            <maml:name>ConfigurationItem</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Key</maml:name>
          <maml:description>
            <maml:para>A string representing the key of the property from which the value should be retrieved.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>A [VideoOS.ConfigurationApi.ClientService.ConfigurationItem] with a property to be retrieved.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ConfigurationItem</command:parameterValue>
        <dev:type>
          <maml:name>ConfigurationItem</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Key</maml:name>
        <maml:description>
          <maml:para>A string representing the key of the property from which the value should be retrieved.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>$description = Get-ConfigurationItem -Path / | Get-ConfigurationItemProperty -Key Description</dev:code>
        <dev:remarks>
          <maml:para>Gets a ConfigurationItem representing the Management Server, and returns the Description value. The alternative is to do ((Get-ConfigurationItem -Path /).Properties | Where-Object Key -eq Description).Value.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-configurationitemproperty/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-CurrentDeviceStatus</command:name>
      <command:verb>Get</command:verb>
      <command:noun>CurrentDeviceStatus</command:noun>
      <maml:description>
        <maml:para>Gets the current device status of all devices of the desired type from one or more recording servers</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses the RecorderStatusService2 client to call GetCurrentDeviceStatus and receive the current status of all devices of the desired type(s). Specify one or more types in the DeviceType parameter to receive status of more device types than cameras.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-CurrentDeviceStatus</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="Id">
          <maml:name>RecordingServerId</maml:name>
          <maml:description>
            <maml:para>Specifies one or more Recording Server ID's to which the results will be limited. Omit this parameter if you want device status from all Recording Servers</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
          <dev:type>
            <maml:name>Guid[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>DeviceType</maml:name>
          <maml:description>
            <maml:para>Specifies the type of devices to include in the results. By default only cameras will be included and you can expand this to include all device types</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Camera</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Microphone</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Speaker</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Metadata</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Input event</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Output</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Event</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Hardware</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">All</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Camera</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>RunspacePool</maml:name>
          <maml:description>
            <maml:para>Specifies the runspacepool to use. If no runspacepool is provided, one will be created.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RunspacePool</command:parameterValue>
          <dev:type>
            <maml:name>RunspacePool</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AsHashTable</maml:name>
          <maml:description>
            <maml:para>Specifies that the output should be provided in a complete hashtable instead of one pscustomobject value at a time</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AsHashTable</maml:name>
        <maml:description>
          <maml:para>Specifies that the output should be provided in a complete hashtable instead of one pscustomobject value at a time</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>DeviceType</maml:name>
        <maml:description>
          <maml:para>Specifies the type of devices to include in the results. By default only cameras will be included and you can expand this to include all device types</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Camera</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="Id">
        <maml:name>RecordingServerId</maml:name>
        <maml:description>
          <maml:para>Specifies one or more Recording Server ID's to which the results will be limited. Omit this parameter if you want device status from all Recording Servers</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
        <dev:type>
          <maml:name>Guid[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>RunspacePool</maml:name>
        <maml:description>
          <maml:para>Specifies the runspacepool to use. If no runspacepool is provided, one will be created.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RunspacePool</command:parameterValue>
        <dev:type>
          <maml:name>RunspacePool</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Management.Automation.PSObject</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-RecordingServer -Name 'My Recording Server' | Get-CurrentDeviceStatus -DeviceType All</dev:code>
        <dev:remarks>
          <maml:para>Gets the status of all devices of all device types from the Recording Server named 'My Recording Server'.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Get-CurrentDeviceStatus -DeviceType Camera, Microphone</dev:code>
        <dev:remarks>
          <maml:para>Gets the status of all cameras and microphones from all recording servers.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-currentdevicestatus/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-LicenseDetails</command:name>
      <command:verb>Get</command:verb>
      <command:noun>LicenseDetails</command:noun>
      <maml:description>
        <maml:para>{{ Fill in the Synopsis }}</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>{{ Fill in the Description }}</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-LicenseDetails</maml:name>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters />
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LicenseDetailChildItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>{{ Add example code here }}</dev:code>
        <dev:remarks>
          <maml:para>{{ Add example description here }}</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-licensedetails/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-LicensedProducts</command:name>
      <command:verb>Get</command:verb>
      <command:noun>LicensedProducts</command:noun>
      <maml:description>
        <maml:para>{{ Fill in the Synopsis }}</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>{{ Fill in the Description }}</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-LicensedProducts</maml:name>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters />
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LicenseInstalledProductChildItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>{{ Add example code here }}</dev:code>
        <dev:remarks>
          <maml:para>{{ Add example description here }}</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-licensedproducts/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-LicenseInfo</command:name>
      <command:verb>Get</command:verb>
      <command:noun>LicenseInfo</command:noun>
      <maml:description>
        <maml:para>{{ Fill in the Synopsis }}</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>{{ Fill in the Description }}</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-LicenseInfo</maml:name>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters />
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LicenseInformation</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>{{ Add example code here }}</dev:code>
        <dev:remarks>
          <maml:para>{{ Add example description here }}</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-licenseinfo/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-LicenseOverview</command:name>
      <command:verb>Get</command:verb>
      <command:noun>LicenseOverview</command:noun>
      <maml:description>
        <maml:para>{{ Fill in the Synopsis }}</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>{{ Fill in the Description }}</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-LicenseOverview</maml:name>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters />
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LicenseOverviewAllChildItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>{{ Add example code here }}</dev:code>
        <dev:remarks>
          <maml:para>{{ Add example description here }}</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-licenseoverview/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-ManagementServerConfig</command:name>
      <command:verb>Get</command:verb>
      <command:noun>ManagementServerConfig</command:noun>
      <maml:description>
        <maml:para>{{ Fill in the Synopsis }}</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>{{ Fill in the Description }}</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-ManagementServerConfig</maml:name>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters />
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>{{ Add example code here }}</dev:code>
        <dev:remarks>
          <maml:para>{{ Add example description here }}</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-managementserverconfig/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-MobileServerInfo</command:name>
      <command:verb>Get</command:verb>
      <command:noun>MobileServerInfo</command:noun>
      <maml:description>
        <maml:para>Gets details about the local Milestone XProtect Mobile Server installation.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets details about the local Milestone XProtect Mobile Server installation. Properties include:</maml:para>
      <maml:para>- Version</maml:para>
      <maml:para>- ExePath</maml:para>
      <maml:para>- ConfigPath</maml:para>
      <maml:para>- ManagementServerIp</maml:para>
      <maml:para>- ManagementServerPort</maml:para>
      <maml:para>- HttpIp</maml:para>
      <maml:para>- HttpPort</maml:para>
      <maml:para>- HttpsIp</maml:para>
      <maml:para>- HttpsPort</maml:para>
      <maml:para>- CertHash</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-MobileServerInfo</maml:name>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters />
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-MobileServerInfo</dev:code>
        <dev:remarks>
          <maml:para>Gets a collection of useful Mobile Server properties.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-mobileserverinfo/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-PlaybackInfo</command:name>
      <command:verb>Get</command:verb>
      <command:noun>PlaybackInfo</command:noun>
      <maml:description>
        <maml:para>Gets the UTC timestamp of the first and last record in the media database for a device.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets the UTC timestamp of the first and last record in the media database for a device. The result is returned as a PSCustomObject with a Begin and End property representing the first and last record timestamps in the media database.</maml:para>
      <maml:para>The method for retrieving this data used to be based on the RawDataSource class, but a faster method is now used which is based on a SequenceDataSource class. Sequences represent timespans in the media database where recordings, or motion are present. To use the SequenceDataSource in this function, we ask for the first sequence occuring sometime between unix epoch and now, and we use the StartDateTime property. We then ask for the first sequence occuring between now and unix epoch in the reverse direction, and use the EndDateTime property.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-PlaybackInfo</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Camera</maml:name>
          <maml:description>
            <maml:para>Deprecated. Specifies a camera object - typically the output of a Get-Camera command.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera</command:parameterValue>
          <dev:type>
            <maml:name>Camera</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CameraId</maml:name>
          <maml:description>
            <maml:para>Deprecated. Specifies the Guid value of a Camera object.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
          <dev:type>
            <maml:name>Guid</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Parallel</maml:name>
          <maml:description>
            <maml:para>Specifies that multiple requests should be processed in parallel. If fewer than 60 devices are specified in the Path or Device parameters, then this switch has no impact. Using multiple threads for a small number of devices can end up taking longer than doing them sequentially, especially with the operation completes relatively quickly to begin with.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>SequenceType</maml:name>
          <maml:description>
            <maml:para>Specifies the type of sequence to return playback info for. The default is RecordingSequence, and that makes the most sense to use with this cmdlet. This parameter is provided in case it is interesting to know the first and last "motion" sequence instead.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">MotionSequence</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">RecordingSequence</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">TimelineMotionDetected</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">TimelineRecording</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>RecordingSequence</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>UseLocalTime</maml:name>
          <maml:description>
            <maml:para>Deprecated. Convert the UTC timestamps from the Recording Server(s) to local time using the region settings of the current session.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-PlaybackInfo</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Device</maml:name>
          <maml:description>
            <maml:para>Specifies the Camera, Microphone, Speaker, or Metadata object. The Path property is used from these objects to construct the VideoOS.Platform.ConfigItem used to construct the SequenceDataSource.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem[]</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Parallel</maml:name>
          <maml:description>
            <maml:para>Specifies that multiple requests should be processed in parallel. If fewer than 60 devices are specified in the Path or Device parameters, then this switch has no impact. Using multiple threads for a small number of devices can end up taking longer than doing them sequentially, especially with the operation completes relatively quickly to begin with.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>SequenceType</maml:name>
          <maml:description>
            <maml:para>Specifies the type of sequence to return playback info for. The default is RecordingSequence, and that makes the most sense to use with this cmdlet. This parameter is provided in case it is interesting to know the first and last "motion" sequence instead.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">MotionSequence</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">RecordingSequence</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">TimelineMotionDetected</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">TimelineRecording</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>RecordingSequence</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-PlaybackInfo</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Parallel</maml:name>
          <maml:description>
            <maml:para>Specifies that multiple requests should be processed in parallel. If fewer than 60 devices are specified in the Path or Device parameters, then this switch has no impact. Using multiple threads for a small number of devices can end up taking longer than doing them sequentially, especially with the operation completes relatively quickly to begin with.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the Milestone "Configuration API" path for the device. The format of a Configuration API path is ItemType[guid]. For example, Camera[5cb24b72-d946-4e87-83a2-9ad79da2f40b]. This property is available on all Configuration API generic item types, and strongly typed objects like Cameras and Microphones. The format provides both the ItemType value and the ID which are used to locate the VideoOS.Platform.ConfigItem representing the camera in VideoOS.Platform.Configuration.Instance, and this item is used to construct the SequenceDataSource.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>SequenceType</maml:name>
          <maml:description>
            <maml:para>Specifies the type of sequence to return playback info for. The default is RecordingSequence, and that makes the most sense to use with this cmdlet. This parameter is provided in case it is interesting to know the first and last "motion" sequence instead.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">MotionSequence</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">RecordingSequence</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">TimelineMotionDetected</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">TimelineRecording</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>RecordingSequence</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Camera</maml:name>
        <maml:description>
          <maml:para>Deprecated. Specifies a camera object - typically the output of a Get-Camera command.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Camera</command:parameterValue>
        <dev:type>
          <maml:name>Camera</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>CameraId</maml:name>
        <maml:description>
          <maml:para>Deprecated. Specifies the Guid value of a Camera object.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
        <dev:type>
          <maml:name>Guid</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Device</maml:name>
        <maml:description>
          <maml:para>Specifies the Camera, Microphone, Speaker, or Metadata object. The Path property is used from these objects to construct the VideoOS.Platform.ConfigItem used to construct the SequenceDataSource.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IConfigurationItem[]</command:parameterValue>
        <dev:type>
          <maml:name>IConfigurationItem[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Parallel</maml:name>
        <maml:description>
          <maml:para>Specifies that multiple requests should be processed in parallel. If fewer than 60 devices are specified in the Path or Device parameters, then this switch has no impact. Using multiple threads for a small number of devices can end up taking longer than doing them sequentially, especially with the operation completes relatively quickly to begin with.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the Milestone "Configuration API" path for the device. The format of a Configuration API path is ItemType[guid]. For example, Camera[5cb24b72-d946-4e87-83a2-9ad79da2f40b]. This property is available on all Configuration API generic item types, and strongly typed objects like Cameras and Microphones. The format provides both the ItemType value and the ID which are used to locate the VideoOS.Platform.ConfigItem representing the camera in VideoOS.Platform.Configuration.Instance, and this item is used to construct the SequenceDataSource.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>SequenceType</maml:name>
        <maml:description>
          <maml:para>Specifies the type of sequence to return playback info for. The default is RecordingSequence, and that makes the most sense to use with this cmdlet. This parameter is provided in case it is interesting to know the first and last "motion" sequence instead.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>RecordingSequence</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>UseLocalTime</maml:name>
        <maml:description>
          <maml:para>Deprecated. Convert the UTC timestamps from the Recording Server(s) to local time using the region settings of the current session.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para>The original version of Get-PlaybackInfo only worked for cameras, and we realize now the UseLocalTime switch was unnecessary. It's easy enough to call ToLocalTime() if you want to switch to your local timezone. As such, the Camera, CameraId, and UseLocalTime parameters are deprecated. They'll still work for a while, but with warnings. Instead of explicitly using them, consider piping your devices into this function, or using the -Device or -Path parameters.</maml:para>
        <maml:para>A bonus of using the new parameters is that you can provide an array of objects or configuration item paths, include the Parallel switch, and the results may be returned faster through the use of runspaces for running requests in parallel.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Select-Camera -SingleSelect | Get-PlaybackInfo</dev:code>
        <dev:remarks>
          <maml:para>Begin End Path ----- --- ---- 9/17/2021 11:21:53 PM 10/17/2021 5:15:15 PM Camera[9c55377a-c2e4-4f03-99b6-d684e730c4e1]</maml:para>
          <maml:para>Presents a camera selection dialog, and after you've selected a camera, it returns an object with the first and last image timestamps.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-playbackinfo/</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>MIP SDK Docs - SequenceDataSource</maml:linkText>
        <maml:uri>https://doc.developer.milestonesys.com/html/index.html?base=miphelp/class_video_o_s_1_1_platform_1_1_data_1_1_sequence_data_source.html&amp;tree=tree_search.html?search=sequencedatasource</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-RecorderConfig</command:name>
      <command:verb>Get</command:verb>
      <command:noun>RecorderConfig</command:noun>
      <maml:description>
        <maml:para>{{ Fill in the Synopsis }}</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>{{ Fill in the Description }}</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-RecorderConfig</maml:name>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters />
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>{{ Add example code here }}</dev:code>
        <dev:remarks>
          <maml:para>{{ Add example description here }}</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-recorderconfig/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-StreamProperties</command:name>
      <command:verb>Get</command:verb>
      <command:noun>StreamProperties</command:noun>
      <maml:description>
        <maml:para>Get a list of configuration properties from the designated camera stream</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Get a list of configuration properties from the designated camera stream. These properties provide detailed information including the property key, current value, the value type, and in the case of certain value types, a list of valid values or a range of valid values.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-StreamProperties</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Camera</maml:name>
          <maml:description>
            <maml:para>Specifies the camera to retrieve stream properties for</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera</command:parameterValue>
          <dev:type>
            <maml:name>Camera</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>StreamName</maml:name>
          <maml:description>
            <maml:para>Specifies a StreamUsageChildItem from Get-Stream</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-StreamProperties</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Camera</maml:name>
          <maml:description>
            <maml:para>Specifies the camera to retrieve stream properties for</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera</command:parameterValue>
          <dev:type>
            <maml:name>Camera</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>StreamNumber</maml:name>
          <maml:description>
            <maml:para>Specifies the stream number starting from 0. For example, "Video stream 1" is usually in the 0'th position in the StreamChildItems collection.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>0</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Camera</maml:name>
        <maml:description>
          <maml:para>Specifies the camera to retrieve stream properties for</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Camera</command:parameterValue>
        <dev:type>
          <maml:name>Camera</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>StreamName</maml:name>
        <maml:description>
          <maml:para>Specifies a StreamUsageChildItem from Get-Stream</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>StreamNumber</maml:name>
        <maml:description>
          <maml:para>Specifies the stream number starting from 0. For example, "Video stream 1" is usually in the 0'th position in the StreamChildItems collection.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>0</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.ConfigurationApi.ClientService.Property[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Select-Camera | Get-StreamProperties -StreamName 'Video stream 1'</dev:code>
        <dev:remarks>
          <maml:para>Opens a dialog to select a camera, then returns the stream properties for 'Video stream 1'. The objects returned are rich property objects with a number of properties attached to them in addition to their keys and values.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-streamproperties/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-ValueDisplayName</command:name>
      <command:verb>Get</command:verb>
      <command:noun>ValueDisplayName</command:noun>
      <maml:description>
        <maml:para>Gets the display name of the value of a property.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Some propertie values such as FPS or Resolution might have different property names by which those values are referenced depending on the camera driver. For example, some cameras use the propery name 'Resolution' to refer to camera resolution, and others might use 'StreamProperty'. And the value for resolution might be '6' internally, while the display name for that value might be 1920x1080 for example.</maml:para>
      <maml:para>This function simplifies the process of finding out the best display name to use for the value of a property.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-ValueDisplayName</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>DefaultValue</maml:name>
          <maml:description>
            <maml:para>The default value to return if the property is not found in any of the items in PropertyList</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>NotAvailable</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Properties</maml:name>
          <maml:description>
            <maml:para>{{ Fill Properties Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ConfigurationApiProperties</command:parameterValue>
          <dev:type>
            <maml:name>ConfigurationApiProperties</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PropertyName</maml:name>
          <maml:description>
            <maml:para>One or more related property names to look for such as FPS, Framerate</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-ValueDisplayName</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>DefaultValue</maml:name>
          <maml:description>
            <maml:para>The default value to return if the property is not found in any of the items in PropertyList</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>NotAvailable</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PropertyList</maml:name>
          <maml:description>
            <maml:para>The collection of properties associated with a configuration item such as a camera's stream settings.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Property[]</command:parameterValue>
          <dev:type>
            <maml:name>Property[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PropertyName</maml:name>
          <maml:description>
            <maml:para>One or more related property names to look for such as FPS, Framerate</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>DefaultValue</maml:name>
        <maml:description>
          <maml:para>The default value to return if the property is not found in any of the items in PropertyList</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>NotAvailable</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Properties</maml:name>
        <maml:description>
          <maml:para>{{ Fill Properties Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ConfigurationApiProperties</command:parameterValue>
        <dev:type>
          <maml:name>ConfigurationApiProperties</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PropertyList</maml:name>
        <maml:description>
          <maml:para>The collection of properties associated with a configuration item such as a camera's stream settings.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Property[]</command:parameterValue>
        <dev:type>
          <maml:name>Property[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PropertyName</maml:name>
        <maml:description>
          <maml:para>One or more related property names to look for such as FPS, Framerate</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-ValueDisplayName -PropertyList (Select-Camera | Get-StreamProperties -StreamNumber 0) -PropertyName 'Resolution', 'StreamProperty'</dev:code>
        <dev:remarks>
          <maml:para>Presents a camera selection dialog and then returns the display name for the configured resolution for the camera from the first video stream's settings.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-valuedisplayname/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VideoDeviceStatistics</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VideoDeviceStatistics</command:noun>
      <maml:description>
        <maml:para>Gets the camera device statistics including used storage space, and the properties of each video stream being retrieved from the camera</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses the RecorderStatusService2 client to call GetVideoDeviceStatistics and receive the current video device statistics of all cameras, or filtered by Recording Server.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VideoDeviceStatistics</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="Id">
          <maml:name>RecordingServerId</maml:name>
          <maml:description>
            <maml:para>Specifies one or more Recording Server ID's to which the results will be limited. Omit this parameter if you want device status from all Recording Servers</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
          <dev:type>
            <maml:name>Guid[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>RunspacePool</maml:name>
          <maml:description>
            <maml:para>Specifies the runspacepool to use. If no runspacepool is provided, one will be created.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RunspacePool</command:parameterValue>
          <dev:type>
            <maml:name>RunspacePool</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AsHashTable</maml:name>
          <maml:description>
            <maml:para>Specifies that the output should be provided in a complete hashtable instead of one pscustomobject value at a time</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AsHashTable</maml:name>
        <maml:description>
          <maml:para>Specifies that the output should be provided in a complete hashtable instead of one pscustomobject value at a time</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="Id">
        <maml:name>RecordingServerId</maml:name>
        <maml:description>
          <maml:para>Specifies one or more Recording Server ID's to which the results will be limited. Omit this parameter if you want device status from all Recording Servers</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
        <dev:type>
          <maml:name>Guid[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>RunspacePool</maml:name>
        <maml:description>
          <maml:para>Specifies the runspacepool to use. If no runspacepool is provided, one will be created.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RunspacePool</command:parameterValue>
        <dev:type>
          <maml:name>RunspacePool</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-RecordingServer -Name 'My Recording Server' | Get-VideoDeviceStatistics</dev:code>
        <dev:remarks>
          <maml:para>Gets the video statistics of all cameras on the Recording Server named 'My Recording Server'.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Get-VideoDeviceStatistics -AsHashTable</dev:code>
        <dev:remarks>
          <maml:para>Gets the video statistics of all cameras and returns the result as a hashtable where the keys are the camera ID's.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-videodevicestatistics/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsArchiveStorage</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsArchiveStorage</command:noun>
      <maml:description>
        <maml:para>Gets the ArchiveStorage objects representing the children of a given live storage configuration.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets the ArchiveStorage objects representing the children of a given live storage configuration.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsArchiveStorage</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Storage</maml:name>
          <maml:description>
            <maml:para>Specifies a Storage object such as you get from Get-VmsStorage</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Storage</command:parameterValue>
          <dev:type>
            <maml:name>Storage</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the storage configuration to return. Supports wildcards.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>*</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the storage configuration to return. Supports wildcards.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>*</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Storage</maml:name>
        <maml:description>
          <maml:para>Specifies a Storage object such as you get from Get-VmsStorage</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Storage</command:parameterValue>
        <dev:type>
          <maml:name>Storage</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ArchiveStorage</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-RecordingServer -Name 'Recorder 1' | Get-VmsStorage -Name Primary | Get-VmsArchiveStorage</dev:code>
        <dev:remarks>
          <maml:para>Gets all archive storage configurations associated with the live storage configuration named 'Primary', on the recording server named 'Recorder 1'.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>$camera | Get-VmsStorage | Get-VmsArchiveStorage | Sort-Object RetainMinutes -Descending |Select-Object -First 1</dev:code>
        <dev:remarks>
          <maml:para>Gets the oldest archive path associated with $camera.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsarchivestorage/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsBasicUser</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsBasicUser</command:noun>
      <maml:description>
        <maml:para>Gets VMS basic user entries.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-VmsBasicUser` cmdlet returns basic user entries from the VMS. Basic users are users created directly in Milestone with a username and password. A basic user entry will also be created when users from an external login provider have authenticated, and have been matched to one or more roles based on the registered claims and the values of those claims in the token issued for the user by the external login provider.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsBasicUser</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the literal name of the basic user record to retrieve.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Status</maml:name>
          <maml:description>
            <maml:para>Specifies that only basic users with the provided status should be returned.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Enabled</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">LockedOutByAdmin</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">LockedOutBySystem</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>External</maml:name>
          <maml:description>
            <maml:para>Specifies that only users associated with an external login provider should be returned.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>External</maml:name>
        <maml:description>
          <maml:para>Specifies that only users associated with an external login provider should be returned.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the literal name of the basic user record to retrieve.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Status</maml:name>
        <maml:description>
          <maml:para>Specifies that only basic users with the provided status should be returned.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.BasicUser</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsBasicUser</dev:code>
        <dev:remarks>
          <maml:para>Gets all basic user entries present on the management server.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>Get-VmsBasicUser -Name 'User 54'</dev:code>
        <dev:remarks>
          <maml:para>Gets the basic user named 'User 54', or returns an error if the user does not exist.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 3 --------------------------</maml:title>
        <dev:code>Get-VmsBasicUser | Where-Object Name -match 'josh'</dev:code>
        <dev:remarks>
          <maml:para>Gets all basic users with a name containing the string 'josh'.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 4 --------------------------</maml:title>
        <dev:code>Get-VmsBasicUser -External</dev:code>
        <dev:remarks>
          <maml:para>Gets all basic user entries that represent a user from an external login provider. If no external basic users exist, no value is returned and no error is emitted.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 5 --------------------------</maml:title>
        <dev:code>Get-VmsBasicUser -Status LockedOutByAdmin</dev:code>
        <dev:remarks>
          <maml:para>Gets all basic user entries where the user has been locked out by the VMS administrator.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsbasicuser/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsBasicUserClaim</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsBasicUserClaim</command:noun>
      <maml:description>
        <maml:para>Gets the claims associated with an external user's login provider.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-VmsBasicUserClaim` cmdlet applies only to basic users where the "IsExternal" property is `$true`. When an external user authenticates with the VMS, a collection of claims and their values are included in the token issued by the external login provider. These claims can be inspected using this cmdlet.</maml:para>
      <maml:para>| ClaimName | ClaimValue | | -------------- | ---------------------------------- | | email | username@domain.ext | | email_verified | True | | name | username@domain.ext | | nickname | username | | picture | https://s.gravatar.com/avatar/.... | | vms_roles | Administrators |</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsBasicUserClaim</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Specifies one or more basic user objects returned by `Get-VmsBasicUser`.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">BasicUser[]</command:parameterValue>
          <dev:type>
            <maml:name>BasicUser[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Specifies one or more basic user objects returned by `Get-VmsBasicUser`.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">BasicUser[]</command:parameterValue>
        <dev:type>
          <maml:name>BasicUser[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.BasicUser[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ClaimChildItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsBasicUser -Name 'username@domain.ext' | Get-VmsBasicUserClaim | Select-Object ClaimName, ClaimValue</dev:code>
        <dev:remarks>
          <maml:para>Gets the claim names and values associated with the basic user with name 'username@domain.ext'.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsbasicuserclaim/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsCamera</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsCamera</command:noun>
      <maml:description>
        <maml:para>Gets the matching camera records from the Milestone XProtect Management Server.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses Milestone's Configuration API to retrieve matching camera records. The objects returned are read/write representations of the matching cameras. You may use these for reporting purposes, or for changing configuration properties.</maml:para>
      <maml:para>To change properties on the camera records, you may directly modify the value of properties, or you may use the Set-VmsCamera cmdlet. When directly modifying the object's properties, you must call the ".Save()" method, or the changes will not be communicated to the Management Server.</maml:para>
      <maml:para>By default, this cmdlet only returns enabled cameras. To return cameras that are disabled, or to return all cameras, use the EnableFilter parameter to set your preference.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsCamera</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Channel</maml:name>
          <maml:description>
            <maml:para>Specifies the camera channel number, or numbers, to return. Numbering starts at zero, so channel 0 corresponds to the first camera on the hardware device.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32[]</command:parameterValue>
          <dev:type>
            <maml:name>Int32[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Comparison</maml:name>
          <maml:description>
            <maml:para>Specifies the type of string comparison to perform when searching by name, or description. By default, cameras will be returned if the camera name contains the values specified in the Name or Description parameters anywhere in the string, and the comparison will be case-insensitive.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Equals</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">NotEquals</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Contains</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">BeginsWith</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">Operator</command:parameterValue>
          <dev:type>
            <maml:name>Operator</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Contains</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies a camera description, or any part of a camera description to search for. Any cameras with a matching description will be returned. The default behavior is to return cameras where the supplied value appears anywhere in the camera's description. You may change this behavior by providing an alternate comparison operator using the Comparison parameter.</maml:para>
            <maml:para>Please note that if you supply both a Name and a Description value, the search results returned will include only cameras where the name and description both match the query.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>EnableFilter</maml:name>
          <maml:description>
            <maml:para>Specifies whether to return enabled, disabled, or all cameras when querying by hardware or searching by name or description. The default is to return only enabled cameras.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">All</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Enabled</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Disabled</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">EnableFilter</command:parameterValue>
          <dev:type>
            <maml:name>EnableFilter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Enabled</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>MaxResults</maml:name>
          <maml:description>
            <maml:para>Specifies the maximum number of results to return when searching by name or description. By default, the maximum number of results is 2147483647.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>[int]::MaxValue</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies a camera name, or any part of a camera name to search for. Any cameras with a matching name will be returned. The default behavior is to return cameras where the supplied value appears anywhere in the camera's name. You may change this behavior by providing an alternate comparison operator using the Comparison parameter.</maml:para>
            <maml:para>Please note that if you supply both a Name and a Description value, the search results returned will include only cameras where the name and description both match the query.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Timeout</maml:name>
          <maml:description>
            <maml:para>Specifies a timeout value for searches by name or description. On a large installation, or when there are a high number of matches, the query can take a very long time. You may adjust the timeout to be shorter, or longer, than the default of 15 seconds.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">TimeSpan</command:parameterValue>
          <dev:type>
            <maml:name>TimeSpan</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>[timespan]::FromSeconds(15)</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsCamera</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Channel</maml:name>
          <maml:description>
            <maml:para>Specifies the camera channel number, or numbers, to return. Numbering starts at zero, so channel 0 corresponds to the first camera on the hardware device.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32[]</command:parameterValue>
          <dev:type>
            <maml:name>Int32[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>EnableFilter</maml:name>
          <maml:description>
            <maml:para>Specifies whether to return enabled, disabled, or all cameras when querying by hardware or searching by name or description. The default is to return only enabled cameras.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">All</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Enabled</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Disabled</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">EnableFilter</command:parameterValue>
          <dev:type>
            <maml:name>EnableFilter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Enabled</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Hardware</maml:name>
          <maml:description>
            <maml:para>Specifies the hardware object from which to return matching cameras. Results can be filtered further by providing values for one or more additional parameters.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Hardware[]</command:parameterValue>
          <dev:type>
            <maml:name>Hardware[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies a camera name, or any part of a camera name to search for. Any cameras with a matching name will be returned. The default behavior is to return cameras where the supplied value appears anywhere in the camera's name. You may change this behavior by providing an alternate comparison operator using the Comparison parameter.</maml:para>
            <maml:para>Please note that if you supply both a Name and a Description value, the search results returned will include only cameras where the name and description both match the query.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsCamera</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
          <maml:name>Id</maml:name>
          <maml:description>
            <maml:para>Specifies one or more camera ID's in GUID format. All cameras matching the supplied GUID's will be returned.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
          <dev:type>
            <maml:name>Guid[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Channel</maml:name>
        <maml:description>
          <maml:para>Specifies the camera channel number, or numbers, to return. Numbering starts at zero, so channel 0 corresponds to the first camera on the hardware device.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32[]</command:parameterValue>
        <dev:type>
          <maml:name>Int32[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Comparison</maml:name>
        <maml:description>
          <maml:para>Specifies the type of string comparison to perform when searching by name, or description. By default, cameras will be returned if the camera name contains the values specified in the Name or Description parameters anywhere in the string, and the comparison will be case-insensitive.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Operator</command:parameterValue>
        <dev:type>
          <maml:name>Operator</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Contains</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies a camera description, or any part of a camera description to search for. Any cameras with a matching description will be returned. The default behavior is to return cameras where the supplied value appears anywhere in the camera's description. You may change this behavior by providing an alternate comparison operator using the Comparison parameter.</maml:para>
          <maml:para>Please note that if you supply both a Name and a Description value, the search results returned will include only cameras where the name and description both match the query.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>EnableFilter</maml:name>
        <maml:description>
          <maml:para>Specifies whether to return enabled, disabled, or all cameras when querying by hardware or searching by name or description. The default is to return only enabled cameras.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">EnableFilter</command:parameterValue>
        <dev:type>
          <maml:name>EnableFilter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Enabled</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Hardware</maml:name>
        <maml:description>
          <maml:para>Specifies the hardware object from which to return matching cameras. Results can be filtered further by providing values for one or more additional parameters.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Hardware[]</command:parameterValue>
        <dev:type>
          <maml:name>Hardware[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
        <maml:name>Id</maml:name>
        <maml:description>
          <maml:para>Specifies one or more camera ID's in GUID format. All cameras matching the supplied GUID's will be returned.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
        <dev:type>
          <maml:name>Guid[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>MaxResults</maml:name>
        <maml:description>
          <maml:para>Specifies the maximum number of results to return when searching by name or description. By default, the maximum number of results is 2147483647.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>[int]::MaxValue</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies a camera name, or any part of a camera name to search for. Any cameras with a matching name will be returned. The default behavior is to return cameras where the supplied value appears anywhere in the camera's name. You may change this behavior by providing an alternate comparison operator using the Comparison parameter.</maml:para>
          <maml:para>Please note that if you supply both a Name and a Description value, the search results returned will include only cameras where the name and description both match the query.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Timeout</maml:name>
        <maml:description>
          <maml:para>Specifies a timeout value for searches by name or description. On a large installation, or when there are a high number of matches, the query can take a very long time. You may adjust the timeout to be shorter, or longer, than the default of 15 seconds.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">TimeSpan</command:parameterValue>
        <dev:type>
          <maml:name>TimeSpan</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>[timespan]::FromSeconds(15)</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Hardware[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Int32[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Guid</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Camera</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
Get-VmsCamera
 
&lt;# OUTPUT
Name Channel Enabled LastModified Id
---- ------- ------- ------------ --
Axis A8105-E (10.1.77.153) - Camera 1 0 True 1/15/2022 12:22:27 PM 3DCCE3DA-021D-4968-831C-24F09031EEDA
Axis M1125 (10.1.77.129) - Camera 1 0 True 1/15/2022 11:29:10 AM 44E1D43D-4A54-4B8A-8E3D-513EB7007AAC
Axis P1375 (10.1.77.178) - Camera 1 0 True 1/15/2022 11:22:44 AM DD9F523E-AFB2-4E6F-A11D-262A4E760B5A
Axis P3225-LV (10.1.77.130) - Camera 1 0 True 1/15/2022 11:22:48 AM 71D46BAA-9810-45B0-8461-DD5B369FFB0B
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>In this example, we first ensure we are logged in to the Management Server. Then we call the "Get-VmsCamera" cmdlet with no parameters which will return all enabled cameras. By piping these results to "Out-GridView" we can view the output in a sortable, searchable table.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>Get-VmsCamera -Name 'Garage'
 
&lt;# OUTPUT
Name Channel Enabled LastModified Id
---- ------- ------- ------------ --
Garage Camera 0 True 1/18/2022 3:41:21 PM CA146DFD-72C9-4BBA-83DD-8B680E70DA1B
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>This example demonstrates how to find all enabled cameras with the word "Garage" anywhere in the camera name. The search is case-insensitive and will return cameras named "Shop Garage" or "Rear garage door".</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 3 --------------------------</maml:title>
        <dev:code>Get-VmsCamera -Name 'Garage' -EnableFilter All
 
&lt;# OUTPUT
Name Channel Enabled LastModified Id
---- ------- ------- ------------ --
Garage 1 0 True 12/1/2021 4:23:24 PM 430FA37D-CBE6-4248-9CBA-989AEF7F0428
Garage 2 1 False 1/13/2022 1:27:42 PM 22436AA5-CC64-4F82-A35C-3EF9ADEFED74
Garage 3 0 True 1/17/2022 4:32:00 PM 80DA2327-D178-457A-8216-0F7D6CF2F746
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>Find all cameras, enabled or disabled, with the word "Garage" anywhere in the camera name. The search is case-insensitive, and uses a fast search feature introduced in XProtect 2020 R2.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 4 --------------------------</maml:title>
        <dev:code>Get-Hardware | Where-Object Name -like '*Elevator*' | Get-VmsCamera -EnableFilter All
 
&lt;# OUTPUT
Name Channel Enabled LastModified Id
---- ------- ------- ------------ --
North Elevator 0 True 1/18/2022 3:41:21 PM CA146DFD-72C9-4BBA-83DD-8B680E70DA1B
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>Find all hardware where the word "elevator" appears in the name, and then return all camera channels associated with those hardware devices, both enabled and disabled.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 5 --------------------------</maml:title>
        <dev:code>Get-VmsCamera -Id '42C055AA-3EAC-45AF-B956-5C253384BDF1'
 
&lt;# OUTPUT
Name Channel Enabled LastModified Id
---- ------- ------- ------------ --
Garage Cam 1 0 True 1/18/2022 3:41:21 PM 42C055AA-3EAC-45AF-B956-5C253384BDF1
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>Returns one camera matching the supplied ID.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 6 --------------------------</maml:title>
        <dev:code>(Get-ItemState -CamerasOnly | Where-Object State -ne 'Responding').FQID.ObjectId | Get-VmsCamera
 
&lt;#
Name Channel Enabled LastModified Id
---- ------- ------- ------------ --
Canon VB-M40 - Camera 1 0 True 12/7/2021 3:37:23 PM 3E337A3D-8C48-4B9E-A61A-972CDD261B27
Canon VB-S900F - Camera 1 0 True 12/7/2021 3:04:59 PM 539FDA6D-1167-4C3D-854D-577B60FEAB88
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>Retrieves the state of all enabled cameras, and extracts the ID of all cameras that are not responding, according to the Milestone Event Server. These camera ID's are then used to retrieve the camera configuration records for these cameras.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 7 --------------------------</maml:title>
        <dev:code>Get-Hardware | Get-VmsCamera -Channel (1..15)
 
&lt;# OUTPUT
Name Channel Enabled LastModified Id
---- ------- ------- ------------ --
TH6TC2 1 True 1/17/2022 4:32:00 PM 96F49AF3-861C-4037-8950-8B933644E861
TH6TC3 2 True 1/17/2022 4:32:00 PM 8A175713-823A-46EF-A0E4-1768EA7A5A04
TH6TC4 3 True 1/17/2022 4:32:00 PM C958EE67-4C72-4884-A77F-A3882FB12F97
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>Returns all enabled cameras from all hardware devices where the channel number is between 1 and 15, representing camera 2 through camera 16. You might use this if you only want the first channel enabled, and you want to use the results of this query to disable unwanted camera channels.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmscamera/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsCameraGeneralSetting</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsCameraGeneralSetting</command:noun>
      <maml:description>
        <maml:para>Gets the general settings for one or more cameras.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet returns a hashtable with all the general settings available for a camera, including read-only settings and settings usually hidden from the Management Client user interface.</maml:para>
      <maml:para>General settings often include properties like "Rotation", "Saturation", and "Brightness", which usually apply to all streams available from the camera.</maml:para>
      <maml:para>Each camera model will have a different set of general settings, and some cameras may not have any general settings at all.</maml:para>
      <maml:para>The values returned by this cmdlet are the "display values" you should see in the Management Client. To see the raw, internal values used by the MIP SDK, you may use the "-RawValues" switch.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsCameraGeneralSetting</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Camera</maml:name>
          <maml:description>
            <maml:para>Specifies one or more camera objects such as are returned by Get-VmsCamera.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
          <dev:type>
            <maml:name>Camera[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RawValues</maml:name>
          <maml:description>
            <maml:para>Specifies that the raw, internal values of settings should be returned instead of returning the display values seen in Management Client.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ValueTypeInfo</maml:name>
          <maml:description>
            <maml:para>Specifies that the hashtable should contain a "ValueTypeInfo" collection for each general setting, instead of the value of the setting. The "ValueTypeInfo" collections can be used to discover the valid ranges or values for each setting.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Camera</maml:name>
        <maml:description>
          <maml:para>Specifies one or more camera objects such as are returned by Get-VmsCamera.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
        <dev:type>
          <maml:name>Camera[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RawValues</maml:name>
        <maml:description>
          <maml:para>Specifies that the raw, internal values of settings should be returned instead of returning the display values seen in Management Client.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ValueTypeInfo</maml:name>
        <maml:description>
          <maml:para>Specifies that the hashtable should contain a "ValueTypeInfo" collection for each general setting, instead of the value of the setting. The "ValueTypeInfo" collections can be used to discover the valid ranges or values for each setting.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Camera[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VmsDeviceGeneralSettings</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$camera = Select-Camera -SingleSelect -Title 'Select a camera (double-click)'
$camera | Get-VmsCameraGeneralSetting
 
&lt;# OUTPUT (display values)
Name Value
---- -----
RecorderMode Disabled
MulticastVideoPort 0
RecorderRetentionTime 336
Saturation 50
RecorderAudioEnabled No
Sharpness 50
Brightness 50
EdgeStorageRecording Continuous
EdgeStorageStreamIndex 0
Rotation 0
MulticastAddress 239.244.177.82
RecorderStreamIndex 1
OSDDateTime Disabled
RecorderPostTriggerTime 0
MulticastTTL 5
EdgeStorageEnabled false
BlackAndWhiteMode Color
MulticastForceSSM No
WhiteBalance Automatic
RecorderPreTriggerTime 0
#&gt;
 
$camera | Get-VmsCameraGeneralSetting -RawValues
 
&lt;# OUTPUT (raw values)
Name Value
---- -----
RecorderMode Disabled
MulticastVideoPort 0
RecorderRetentionTime 336
Saturation 50
RecorderAudioEnabled no
Sharpness 50
Brightness 50
EdgeStorageRecording Continuous
EdgeStorageStreamIndex 0
Rotation 0
MulticastAddress 239.244.177.82
RecorderStreamIndex 1
OSDDateTime Disabled
RecorderPostTriggerTime 0
MulticastTTL 5
EdgeStorageEnabled False
BlackAndWhiteMode Yes
MulticastForceSSM no
WhiteBalance Automatic
RecorderPreTriggerTime 0
#&gt;
 
($camera | Get-VmsCameraGeneralSetting -ValueTypeInfo).BlackAndWhiteMode
 
&lt;# OUTPUT
TranslationId Name Value
------------- ---- -----
d65be37a-9416-4bbf-8ed3-36ebd12cd837 Color Yes
f7729675-9e20-4593-9611-f53c11c6fdd4 Black &amp; White No
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>In this example we show how to login, select a camera using an interactive camera selection dialog, and then display the general settings for the camera using the default "display values". Then we show how the same settings appear when using the raw values. For example, the display value for BlackAndWhiteMode is "Color", and the raw value is "Yes".</maml:para>
          <maml:para>For reference, the ValueTypeInfo collection for the BlackAndWhiteMode setting is displayed. You can see how the ValueTypeInfo collection maps the raw value "Yes" to the display value "Color".</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmscamerageneralsetting/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsCameraReport</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsCameraReport</command:noun>
      <maml:description>
        <maml:para>Gets a detailed report at the camera device level for all cameras added to the current Milestone XProtect VMS site.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Returns a report with detailed camera status and configuration information. A popular use of a report like this is to verify configuration properties are consistent between cameras, or to check that the desired video retention is being reached for all cameras. The report is returned as an array of [PSCustomObject]'s which you can then process in your script, or pipe directly to a CSV file. See the examples for inspiration.</maml:para>
      <maml:para>For additional information about the output, including detailed column information, see the about_Get-VmsCameraReport help topic by using "Get-Help about_Get-VmsCameraReport".</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsCameraReport</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Specifies one or more RecordingServer objects such as returned by Get-RecordingServer. Omit this parameter and the report will include cameras from all recording servers on the current site.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
          <dev:type>
            <maml:name>RecordingServer[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>SnapshotTimeoutMS</maml:name>
          <maml:description>
            <maml:para>Specifies the number of milliseconds to wait for a live image to arrive when used with IncludeSnapshots. The default timeout for Get-VmsCameraReport is 10000 or 10 seconds, though the default timeout for Get-Snapshot is 2000 or 2 seconds.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>10000</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>SnapshotHeight</maml:name>
          <maml:description>
            <maml:para>Specifies the image height for snapshots if included. Default is 300 pixels in height. Aspect ratio will be maintained.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>300</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>EnableFilter</maml:name>
          <maml:description>
            <maml:para>Specifies which devices to include in the report. Default is to include only enabled devices.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">All</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Disabled</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Enabled</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Enabled</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>IncludePlainTextPasswords</maml:name>
          <maml:description>
            <maml:para>Specifies that a plain text password should be included in the report for each device.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>IncludeRecordingStats</maml:name>
          <maml:description>
            <maml:para>Specifies that the % of time each camera has been recording over the last 7 days should be included in the report. Note that including this may result in a long time to complete the report.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>IncludeRetentionInfo</maml:name>
          <maml:description>
            <maml:para>Specifies that the report should timestamps for the first and last recorded images, and whether each camera meets the configured retention settings for the storage configuration.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>IncludeSnapshots</maml:name>
          <maml:description>
            <maml:para>Specifies that a bitmap object should be included in the results of the report. You must decide how to handle this snapshot yourself. If you try to export to CSV with snapshots, the Snapshot column will contain only the name of the bitmap type.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>EnableFilter</maml:name>
        <maml:description>
          <maml:para>Specifies which devices to include in the report. Default is to include only enabled devices.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Enabled</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>IncludePlainTextPasswords</maml:name>
        <maml:description>
          <maml:para>Specifies that a plain text password should be included in the report for each device.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>IncludeRecordingStats</maml:name>
        <maml:description>
          <maml:para>Specifies that the % of time each camera has been recording over the last 7 days should be included in the report. Note that including this may result in a long time to complete the report.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>IncludeRetentionInfo</maml:name>
        <maml:description>
          <maml:para>Specifies that the report should timestamps for the first and last recorded images, and whether each camera meets the configured retention settings for the storage configuration.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>IncludeSnapshots</maml:name>
        <maml:description>
          <maml:para>Specifies that a bitmap object should be included in the results of the report. You must decide how to handle this snapshot yourself. If you try to export to CSV with snapshots, the Snapshot column will contain only the name of the bitmap type.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Specifies one or more RecordingServer objects such as returned by Get-RecordingServer. Omit this parameter and the report will include cameras from all recording servers on the current site.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
        <dev:type>
          <maml:name>RecordingServer[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>SnapshotHeight</maml:name>
        <maml:description>
          <maml:para>Specifies the image height for snapshots if included. Default is 300 pixels in height. Aspect ratio will be maintained.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>300</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>SnapshotTimeoutMS</maml:name>
        <maml:description>
          <maml:para>Specifies the number of milliseconds to wait for a live image to arrive when used with IncludeSnapshots. The default timeout for Get-VmsCameraReport is 10000 or 10 seconds, though the default timeout for Get-Snapshot is 2000 or 2 seconds.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>10000</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
Get-VmsCameraReport -RecordingServer (Get-RecordingServer | Out-GridView -OutputMode Multiple) | Out-GridView</dev:code>
        <dev:remarks>
          <maml:para>Presents a gridview dialog for you to select one or more recording servers, then generates a camera report for cameras on those recording servers, and presents the results in gridview.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$fileName = "camera-report_$((Get-Date).ToString('yyyy-MM-dd_HH-mm-ss')).csv"
$filePath = Join-Path -Path "~\Desktop" -ChildPath $fileName
Get-VmsCameraReport -IncludeRetentionInfo -IncludeRecordingStats | Export-Csv -Path $filePath</dev:code>
        <dev:remarks>
          <maml:para>Creates a camera report with video retention information and recording statistics, and saves the results to the current user's desktop with a timestamp in the file name.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmscamerareport/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsCameraStream</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsCameraStream</command:noun>
      <maml:description>
        <maml:para>Gets stream configuration information for the specified camera(s).</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Video stream configuration in a Milestone XProtect VMS includes properties of the video stream(s) themselves, such as framerate, codec, and resolution, in addition to whether the VMS will use those video streams, and for what purpose.</maml:para>
      <maml:para>The results returned from this cmdlet include the immutable name of the video stream such as "Video stream 1", which is displayed in the settings tab for each camera in Management Client. A collection of key-value pairs representing the properties of the video stream is available in the "Settings" property of the [VmsCameraStreamConfig] object.</maml:para>
      <maml:para>A second hashtable with keys matching the keys of the Settings hashtable is available under a property named "ValueTypeInfo. Each element in the ValueTypeInfo hashtable is a collection of ValueTypeInformation objects representing the valid values, or ranges for each setting for the stream. See the examples for more information.</maml:para>
      <maml:para>If the stream is in use by the VMS for either live streaming, or for recording, then the stream's "Enabled" property will be $true. When a stream is in use, it will have a DisplayName value representing the name of the stream displayed to anyone using a client application like XProtect Smart Client. The Name property is immutable, but you may name the DisplayName property as needed.</maml:para>
      <maml:para>Also included are the LiveMode, LiveDefault, and Recorded properties. These indicate whether the stream is selected as the default live stream, and/or the recorded stream. And whether the stream is available for live viewing Always, Never, or WhenNeeded.</maml:para>
      <maml:para>The LiveMode of a stream can only be set to "Never" when the stream is exclusively used for recording. This is to allow administrators to record at a very high quality, while avoiding unnecessary bandwidth usage by enabling only a lower-bandwidth stream for live viewing. When the LiveMode is set to "WhenNeeded", the recording server will only pull that stream from the camera when a client requests it.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsCameraStream</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Camera</maml:name>
          <maml:description>
            <maml:para>Specifies one or more camera objects such as are returned by Get-VmsCamera.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
          <dev:type>
            <maml:name>Camera[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Enabled</maml:name>
          <maml:description>
            <maml:para>Specifies that only enabled streams should be returned. This includes any stream that is used as the default live stream, recorded stream, or is otherwise added and displayed in the "Streams" tab for the camera in Management Client. It includes all streams that are configured for any kind of use by the VMS.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RawValues</maml:name>
          <maml:description>
            <maml:para>Specifies that the raw, internal values of settings should be returned instead of returning the display values seen in Management Client.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsCameraStream</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Camera</maml:name>
          <maml:description>
            <maml:para>Specifies one or more camera objects such as are returned by Get-VmsCamera.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
          <dev:type>
            <maml:name>Camera[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>LiveDefault</maml:name>
          <maml:description>
            <maml:para>Specifies that only the default live stream for the given camera should be returned.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RawValues</maml:name>
          <maml:description>
            <maml:para>Specifies that the raw, internal values of settings should be returned instead of returning the display values seen in Management Client.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsCameraStream</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Camera</maml:name>
          <maml:description>
            <maml:para>Specifies one or more camera objects such as are returned by Get-VmsCamera.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
          <dev:type>
            <maml:name>Camera[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the video stream as displayed in the Settings tab for the camera in Management Client.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RawValues</maml:name>
          <maml:description>
            <maml:para>Specifies that the raw, internal values of settings should be returned instead of returning the display values seen in Management Client.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsCameraStream</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Camera</maml:name>
          <maml:description>
            <maml:para>Specifies one or more camera objects such as are returned by Get-VmsCamera.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
          <dev:type>
            <maml:name>Camera[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RawValues</maml:name>
          <maml:description>
            <maml:para>Specifies that the raw, internal values of settings should be returned instead of returning the display values seen in Management Client.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Recorded</maml:name>
          <maml:description>
            <maml:para>Specifies that only the recorded stream for the given camera should be returned.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Camera</maml:name>
        <maml:description>
          <maml:para>Specifies one or more camera objects such as are returned by Get-VmsCamera.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
        <dev:type>
          <maml:name>Camera[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Enabled</maml:name>
        <maml:description>
          <maml:para>Specifies that only enabled streams should be returned. This includes any stream that is used as the default live stream, recorded stream, or is otherwise added and displayed in the "Streams" tab for the camera in Management Client. It includes all streams that are configured for any kind of use by the VMS.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>LiveDefault</maml:name>
        <maml:description>
          <maml:para>Specifies that only the default live stream for the given camera should be returned.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the video stream as displayed in the Settings tab for the camera in Management Client.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RawValues</maml:name>
        <maml:description>
          <maml:para>Specifies that the raw, internal values of settings should be returned instead of returning the display values seen in Management Client.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Recorded</maml:name>
        <maml:description>
          <maml:para>Specifies that only the recorded stream for the given camera should be returned.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Camera</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VmsCameraStreamConfig</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$camera = Select-Camera -SingleSelect -Title 'Select a camera (double-click)'
$camera | Get-VmsCameraStream -LiveDefault
 
&lt;# OUTPUT
Camera Name DisplayName Enabled LiveMode LiveDefault Recorded
------ ---- ----------- ------- -------- ----------- --------
Cam Lab Video stream 1 Live stream True WhenNeeded True True
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>After first logging in to the Management Server, we use a helpful camera selection dialog. Select any camera, and the properties of the default live stream will be displayed. The properties include Settings and ValueTypeInfo collections as hashtables, but they are not rendered in the PowerShell terminal by default because hashtables don't display very useful information unless they are expanded. The next example will show how to display more information about the stream settings.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$camera = Select-Camera -SingleSelect -Title 'Select a camera (double-click)'
$stream = $camera | Get-VmsCameraStream -LiveDefault
$stream.Settings
 
&lt;# OUTPUT
Name Value
---- -----
ZFpsMode Fixed
Compression 30
StreamingMode RTP/RTSP/TCP
ControlMode Variable bit rate
TargetBitrate 2000
MaxBitrate 0
Resolution 1280x720
FPS 10
MaxGOPMode Default (determined by driver)
ControlPriority None
IncludeTime No
EdgeStorageSupported true
ZGopLength 300
ZGopMode Fixed
MaxGOPSize 30
ZStrength Low
RetentionTime 7
IncludeDate No
Codec H.265
#&gt;
 
($camera | Get-VmsCameraStream -LiveDefault -RawValues).Settings
 
&lt;# OUTPUT (raw values)
Name Value
---- -----
ZFpsMode fixed
Compression 30
StreamingMode TCP
ControlMode VariableBitRate
TargetBitrate 2000
MaxBitrate 0
Resolution 1280x720
FPS 10
MaxGOPMode default
ControlPriority None
IncludeTime no
EdgeStorageSupported True
ZGopLength 300
ZGopMode fixed
MaxGOPSize 30
ZStrength low
RetentionTime 7
IncludeDate no
Codec h265
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>This example begins the same as the last, using a camera selection dialog. Then we store the VmsCameraStreamConfig reference in the "$stream" variable, and display the content of "$stream.Settings". The results are a collection of key/value pairs representing a variety of properties of the default live stream for the selected camera.</maml:para>
          <maml:para>The properties will vary widely by camera make, model, and Milestone device pack driver. For instance, not every camera will have an "FPS" or "Resolution" property, and in some cases, they may be present, but with different names or value formats. For example, Resolution for one camera might be formatted like "1920x1080", while another camera stores resolution values like "MP 1080p". The properties and their available values are determined by the device pack driver on the recording server.</maml:para>
          <maml:para>By default, the values for settings are the "display values". For example, the raw value for Codec might be "4", but that is not meaningful for a report, so the display value for "4" is retrieved from the ValueTypeInfo collection. If raw values are preferred, you can use the "-RawValues" switch.</maml:para>
          <maml:para>Note that there are some settings, such as "EdgeStorageSupported" which are read-only. However, there is currently no method to discover this using this cmdlet.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 3 --------------------------</maml:title>
        <dev:code># This example will show the properties of an Axis camera using the ONVIF driver
$camera = Select-Camera -SingleSelect -Title 'Select a camera (double-click)'
$stream = $camera | Get-VmsCameraStream -LiveDefault -RawValues
$stream.Settings
 
&lt;# OUTPUT (partial)
Name Value
---- -----
Codec 4
#&gt;
 
$stream.ValueTypeInfo.Codec
 
&lt;# OUTPUT
TranslationId Name Value
------------- ---- -----
f98cc65b-4b3c-43c6-b59e-25003f32b9a5 JPEG 0
e6d2aa07-39fc-49d7-a632-3ceb08b754c6 H.264 Baseline Profile 3
83f64935-44f7-40aa-860d-20fe57be44ce H.264 Main Profile 4
83c9a259-d54e-4179-91e9-d7c053dc0de8 H.264 High Profile 6
5acf7ca5-e822-460b-a70d-d3c82e28af48 H.265 Main Profile 7
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>Building on the last example, here we dig deeper to understand the meaning of the codec setting value of "4". The setting name "Codec" is a key in the ValueTypeInfo hashtable and when we reveal the contents, we see a list of ValueTypeInformation objects showing the display name (Name) and internal value (Value) for each value available for that setting.</maml:para>
          <maml:para>We also see a TranslationId property. This can be used in combination with the "Get-Translation" cmdlet to get a localized display name for each value.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 4 --------------------------</maml:title>
        <dev:code># This example will show the properties of an Axis camera using the ONVIF driver
$camera = Select-Camera -SingleSelect -Title 'Select a camera (double-click)'
$stream = $camera | Get-VmsCameraStream -LiveDefault
$stream.Settings
 
&lt;# OUTPUT (partial)
Name Value
---- -----
Quality 70
#&gt;
 
$stream.ValueTypeInfo.Quality
 
&lt;# OUTPUT
TranslationId Name Value
------------- ---- -----
              MinValue 0
              MaxValue 100
              StepValue 1
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>This example shows a different type of value you will encounter - a range. You will typically see these value types when working with numeric settings like FPS, Quality, Compression, and so on.</maml:para>
          <maml:para>When we check the ValueTypeInfo collection for the Quality property, we see the range defined as 0-100 using the MinValue and MaxValue entries. There is also a StepValue indicated, and from this we can determine that only whole numbers between 0 and 100 are accepted as values for the Quality setting. This value includes a StepValue, but not every range does.</maml:para>
          <maml:para>Since this value is not an "enumeration" type with fixed values like "Low" or "High", there are no words to translate, and we do not see any TranslationId values.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 5 --------------------------</maml:title>
        <dev:code>$codec = @{
    Name = 'Codec'
    Expression = {$_.Settings.Codec}
}
$fps = @{
    Name = 'FPS'
    Expression = {$_.Settings.FPS}
}
Get-Hardware | Get-VmsCamera | Get-VmsCameraStream -LiveDefault | `
    Select-Object Camera, Name, DisplayName, Recorded, $codec, $fps | `
    Select-Object -First 10 | `
    Format-Table
 
&lt;# OUTPUT
Camera Name DisplayName Recorded Codec FPS
------ ---- ----------- -------- ----- ---
Learning &amp; Performance (Bos... Video stream 1 Video stream 1 True 15
US101 at Lincoln City - Log... Video stream 1 Video stream 1 True MJPEG 0.5
I-405 at MP 0.8: West Valle... Video stream 1 Video stream 1 True MJPEG 0.5
Camera Lab (AXIS P1435-LE) Video stream 2 Video stream 2 False H.264 15
Southwest Corner - Rear Ent... Video stream 2 Video stream 2 False H.264 15
Halo Smart Sensor Video stream 1 Video stream 1 True H.264 10
I-84 at LePage Park - John ... Video stream 1 Video stream 1 True MJPEG 0.5
Gameroom door (AXIS P3245-V... Video stream 2 Video stream 2 False H.264 15
Southwest Corner - Rear Par... Video stream 2 Video stream 2 False H.264 15
Lobby Fisheye (Bosch 7000 M... Video stream 2 Video stream 2 False 15
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>This example shows how you might use the cmdlet to learn about how all camera live streams are configured. With the "Select-Object -First 10" we limit the results. The $codec, and $fps hashtables are used to add "calculated properties" to our use of "Select-Object". When you want to include the nested value of a property in your results, this is one way to do that.</maml:para>
          <maml:para>The camera name is included in the default view for these results, and if you need more information from the camera object, you can use the hidden "Camera" property attached to the VmsCameraStreamConfig object returned by this cmdlet.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmscamerastream/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsConnectionString</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsConnectionString</command:noun>
      <maml:description>
        <maml:para>Gets the Management Server's SQL connection string from the registry.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The Get-VmsConnectionString cmdlet gets the connection string value from either HKLM:\SOFTWARE\VideoOS\Server\Common, or on versions 2022 R3 and later, HKLM:\SOFTWARE\VideoOS\Server\ConnectionString.</maml:para>
      <maml:para>IMPORTANT: It is not recommended, or supported, to manipulate data in the SQL database(s) used by Milestone XProtect products. The database schema is not documented, and may change without warning between product versions.</maml:para>
      <maml:para>However, it is occasionally useful to read or modify database contents. If you choose to do so, it is at your own risk. Please be sure to create a configuration backup from Management Client, or a SQL database backup, before making any changes.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsConnectionString</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Component</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the connection string value to retrieve from the registry. On VMS versions 2022 R3 and later, these may include EventServer, IDP, IncidentManager, LogServer, ManagementServer, ReportServer, and ServerService.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>ManagementServer</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Component</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the connection string value to retrieve from the registry. On VMS versions 2022 R3 and later, these may include EventServer, IDP, IncidentManager, LogServer, ManagementServer, ReportServer, and ServerService.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>ManagementServer</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-VmsConnectionString</dev:code>
        <dev:remarks>
          <maml:para>Gets the current ManagementServer connection string value from the registry.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Get-VmsConnectionString LogServer</dev:code>
        <dev:remarks>
          <maml:para>Gets the current LogServer connection string value from the registry, but only on VMS versions 2022 R3 and later.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsconnectionstring/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsDeviceGroup</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsDeviceGroup</command:noun>
      <maml:description>
        <maml:para>Gets the device groups matching the specified criteria.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets the device groups matching the specified criteria. This cmdlet can return device groups of the following types: Camera, Microphone, Speaker, Metadata, Input and Output.</maml:para>
      <maml:para>Device groups are hierarchical and can each have any number of siblings and children. The MilestonePSTools module adds a unix-style path feature where the device group "path" can be specified like "/Top-level group/subgroup/subgroup".</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsDeviceGroup</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of a device group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="DeviceCategory">
          <maml:name>Type</maml:name>
          <maml:description>
            <maml:para>Specifies the type of device group to return. The default is "Camera".</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Camera</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Microphone</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Speaker</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Input</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Output</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Metadata</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Camera</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>ParentGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the parent device group. Only children of this group will be returned.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Recurse</maml:name>
          <maml:description>
            <maml:para>Specifies that the matching device group, and all child device groups should be returned recursively.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsDeviceGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies a full unix-style path to the desired device group. See the examples for reference.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="DeviceCategory">
          <maml:name>Type</maml:name>
          <maml:description>
            <maml:para>Specifies the type of device group to return. The default is "Camera".</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Camera</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Microphone</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Speaker</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Input</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Output</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Metadata</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Camera</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Recurse</maml:name>
          <maml:description>
            <maml:para>Specifies that the matching device group, and all child device groups should be returned recursively.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of a device group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>ParentGroup</maml:name>
        <maml:description>
          <maml:para>Specifies the parent device group. Only children of this group will be returned.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
        <dev:type>
          <maml:name>IConfigurationItem</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies a full unix-style path to the desired device group. See the examples for reference.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Recurse</maml:name>
        <maml:description>
          <maml:para>Specifies that the matching device group, and all child device groups should be returned recursively.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="DeviceCategory">
        <maml:name>Type</maml:name>
        <maml:description>
          <maml:para>Specifies the type of device group to return. The default is "Camera".</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Camera</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.IConfigurationItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>$cameraGroup = New-VmsDeviceGroup -Path "/Level 1/Level 2/Level 3"
Get-VmsDeviceGroup -Path "/Level 1/Level 2/Level 3"</dev:code>
        <dev:remarks>
          <maml:para>Creates a three-level deep camera group hierarchy, and then demonstrates how to retrieve that camera group using the Path parameter.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$cameraGroup = New-VmsDeviceGroup -Path "/Level 1/Level 2/Level 3"
Get-VmsDeviceGroup -Name 'Level 1' | Get-VmsDeviceGroup -Name 'Level 2' | Get-VmsDeviceGroup -Name 'Level 3'</dev:code>
        <dev:remarks>
          <maml:para>Creates a three-level deep camera group hierarchy, and then demonstrates how to retrieve that camera group by piping the parent group so that the "Name" parameter will be used to find the group with the matching name within the parent group's device group folder.</maml:para>
          <maml:para>Since no parent group was provided to the first call to Get-VmsDeviceGroup, the lookup began at (Get-VmsManagementServer).CameraGroupFolder.CameraGroups.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 3 --------------------------</maml:title>
        <dev:code>$microphoneGroup = New-VmsDeviceGroup -Path "/Level 1/Level 2/Level 3" -Type Microphone
Get-VmsDeviceGroup -Path "/Level 1/Level 2/Level 3" -Type Microphone</dev:code>
        <dev:remarks>
          <maml:para>Creates a three-level deep microphone group hierarchy, and then demonstrates how to retrieve that microphone group using the Path parameter. Note that the default device group type is "Camera" so when working with other device types you will need to specify the device group type.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsdevicegroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsDeviceGroupMember</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsDeviceGroupMember</command:noun>
      <maml:description>
        <maml:para>Gets all member devices of the specified device group.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets all member devices of the specified device group.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsDeviceGroupMember</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Group</maml:name>
          <maml:description>
            <maml:para>Specifies the device group from which to return member devices.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>EnableFilter</maml:name>
          <maml:description>
            <maml:para>Specifies that the allowed enabled-state for devices returned. By default, only enabled devices are returned.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">All</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Enabled</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Disabled</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">EnableFilter</command:parameterValue>
          <dev:type>
            <maml:name>EnableFilter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Enabled</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>EnableFilter</maml:name>
        <maml:description>
          <maml:para>Specifies that the allowed enabled-state for devices returned. By default, only enabled devices are returned.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">EnableFilter</command:parameterValue>
        <dev:type>
          <maml:name>EnableFilter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Enabled</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Group</maml:name>
        <maml:description>
          <maml:para>Specifies the device group from which to return member devices.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
        <dev:type>
          <maml:name>IConfigurationItem</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.IConfigurationItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.IConfigurationItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsDeviceGroup -Recurse | Get-VmsDeviceGroupMember</dev:code>
        <dev:remarks>
          <maml:para>Returns a list of all cameras in all camera groups, recursively. Note that since a camera may be in more than one device group, this will potentially return multiple instances of the same camera.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsdevicegroupmember/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsDeviceStatus</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsDeviceStatus</command:noun>
      <maml:description>
        <maml:para>Gets the current device status for any streaming device directly from the recording server.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Recording Servers offer a status interface called RecorderStatusService2. This service has a method called GetCurrentDeviceStatus which can return the current state of any streaming device type including cameras, microphones, speakers, and metadata, as well as IO device types including inputs and outputs.</maml:para>
      <maml:para>This cmdlet will return status for one or more of the streaming device types, and the results will include all devices of the specified type(s) that are active on the recording server.</maml:para>
      <maml:para>Note that the Motion property will always be false for anything but the Camera device type.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsDeviceStatus</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="Id">
          <maml:name>RecordingServerId</maml:name>
          <maml:description>
            <maml:para>Specifies one or more Recording Server ID's. Omit this parameter and all recording servers will be queried for status.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
          <dev:type>
            <maml:name>Guid[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>DeviceType</maml:name>
          <maml:description>
            <maml:para>Specifies one or more streaming device types to retrieve status for.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Camera</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="Id">
        <maml:name>RecordingServerId</maml:name>
        <maml:description>
          <maml:para>Specifies one or more Recording Server ID's. Omit this parameter and all recording servers will be queried for status.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
        <dev:type>
          <maml:name>Guid[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>DeviceType</maml:name>
        <maml:description>
          <maml:para>Specifies one or more streaming device types to retrieve status for.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Camera</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[VmsStreamDeviceStatus]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>If one or more status entries have a DeviceId value of "00000000-0000-0000-0000-000000000000", this means the recording server has not been able to load the device configuration yet. This should normally not happen except perhaps for a short period after the recording server is started. If the issue does not resolve on it's own, it's possible you are impacted by an issue solved by a cumulative patch available for your product version. If you're unable to resolve the issue and the camera is unavailable in XProtect Smart Client, you should open a support case with Milestone technical support.</maml:para>
        <maml:para>The following log message from the recording server's RecorderEngine.log file at C:\ProgramData\Milestone\XProtect Recording Server\Logs is one error that is known to result in device status messages like this.</maml:para>
        <maml:para>2022-01-27 16:33:48.620-08:00 [ 7] ERROR - Unable to get driver update changes (Retries: 323). Hardware Id: fbcf40ba-e807-419a-8e11-e782551190a5; Hardware model: Bosch1ch;</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
Get-VmsDeviceStatus -DeviceType Camera, Microphone
 
&lt;# OUTPUT
  DeviceName : Learning &amp; Performance (Bosch 7000VR)
  DeviceType : Camera
  RecorderName : Milestone Demo
  RecorderId : 72080191-d39d-4229-b151-65bcd740c393
  Motion : False
  Recording : False
  DbMoveInProgress : False
  ErrorOverflow : False
  ErrorWritingGop : False
  DbRepairInProgress : False
  DeviceId : 004962d3-b129-4099-8c6e-0f8bff8385b0
  IsChange : False
  Enabled : True
  Started : True
  Error : False
  ErrorNotLicensed : False
  ErrorNoConnection : False
  Time : 1/27/2022 11:33:32 PM
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>After logging in to the Management Server, the status of all enabled cameras and microphones is returned. The example shows all properties available on the resulting VmsStreamDeviceStatus object.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Get-VmsDeviceStatus</dev:code>
        <dev:remarks>
          <maml:para>Returns the status of all cameras on all recording servers. The default DeviceType value is 'Cameras', so if that is all you need, you may omit the DeviceType parameter like this. And when no recording server ID's are provided, status requests are sent to all recording servers.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 3 --------------------------</maml:title>
        <dev:code>Get-RecordingServer -Name 'Recorder1' | Get-VmsDeviceStatus</dev:code>
        <dev:remarks>
          <maml:para>Returns the status of all cameras on recording server named "Recorder1". The RecordingServerId property has an alias of "Id" and accepts values from the pipeline by property name, so you can pipe a Recording Server object to this cmdlet.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsdevicestatus/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsFailoverGroup</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsFailoverGroup</command:noun>
      <maml:description>
        <maml:para>Gets one or more failover groups from the current Milestone XProtect VMS site.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-VmsFailoverGroup` cmdlet gets one or more existing failover groups, which can each contain one or more failover recording servers.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsFailoverGroup</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>Id</maml:name>
          <maml:description>
            <maml:para>Specifies the ID of an existing failover group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
          <dev:type>
            <maml:name>Guid</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>Id</maml:name>
        <maml:description>
          <maml:para>Specifies the ID of an existing failover group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
        <dev:type>
          <maml:name>Guid</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.FailoverGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
 
Get-VmsFailoverGroup | Where-Object Name -eq 'FO Group 1'</dev:code>
        <dev:remarks>
          <maml:para>Prompts user to login to a Milestone VMS, then gets the failover group named 'FO Group 1' if it exists.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsfailovergroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsHardwareDriver</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsHardwareDriver</command:noun>
      <maml:description>
        <maml:para>Gets the HardwareDriver associated with an existing Hardware object, or all HardwareDrivers available on a recording server.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-VmsHardwareDriver` cmdlet returns the HardwareDriver object associated with an existing Hardware device, or if provided with a recording server, it returns all HardwareDrivers available on the recording server.</maml:para>
      <maml:para>The HardwareDriver object provides information about a hardware driver including: GroupName (Axis, Bosch, Milestone, Sony), Number, DriverVersion, DriverRevision, DriverType, Name, and others.</maml:para>
      <maml:para>The DriverVersion and DriverRevision properties can be used to compare drivers between two recording servers to determine if the same device pack driver version is being used.</maml:para>
      <maml:para>A HardwareDriver object can be used with the `Set-VmsHardwareDriver` cmdlet instead of relying on the Driver argument transformation to look up a driver number or name when changing the driver to use for a given hardware device.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsHardwareDriver</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Hardware</maml:name>
          <maml:description>
            <maml:para>Specifies a Hardware object which can be retrieved using `Get-VmsHardware`.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Hardware[]</command:parameterValue>
          <dev:type>
            <maml:name>Hardware[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsHardwareDriver</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Specifies a RecordingServer object which can be retrieved using `Get-VmsRecordingServer`. The recording server name can also be provided, and the matching RecordingServer(s) will be retrieved automatically.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
          <dev:type>
            <maml:name>RecordingServer[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Hardware</maml:name>
        <maml:description>
          <maml:para>Specifies a Hardware object which can be retrieved using `Get-VmsHardware`.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Hardware[]</command:parameterValue>
        <dev:type>
          <maml:name>Hardware[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Specifies a RecordingServer object which can be retrieved using `Get-VmsRecordingServer`. The recording server name can also be provided, and the matching RecordingServer(s) will be retrieved automatically.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
        <dev:type>
          <maml:name>RecordingServer[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.RecordingServer[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>This cmdlet accepts one or more RecordingServer objects from the pipeline.</maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Hardware[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>This cmdlet accepts one or more Hardware objects from the pipeline.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.HardwareDriver</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsRecordingServer | Select-Object -First 1 | Get-VmsHardwareDriver</dev:code>
        <dev:remarks>
          <maml:para>Returns all HardwareDrivers associated with the first recording server returned by `Get-VmsRecordingServer`.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsHardware | Select-Object -First 1 | Get-VmsHardwareDriver</dev:code>
        <dev:remarks>
          <maml:para>Returns the HardwareDriver associated with the first hardware device returned by `Get-VmsHardware`.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmshardwaredriver/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsHardwarePassword</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsHardwarePassword</command:noun>
      <maml:description>
        <maml:para>Gets the password used by the VMS to authenticate with the hardware.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets the password used by the VMS to authenticate with the hardware.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsHardwarePassword</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Hardware</maml:name>
          <maml:description>
            <maml:para>Specifies the hardware for which to retrieve the password.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Hardware</command:parameterValue>
          <dev:type>
            <maml:name>Hardware</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Hardware</maml:name>
        <maml:description>
          <maml:para>Specifies the hardware for which to retrieve the password.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Hardware</command:parameterValue>
        <dev:type>
          <maml:name>Hardware</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Hardware</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsHardware | Foreach-Object {
    [pscustomobject]@{
        Address = $_.Address
        UserName = $_.UserName
        Password = $_ | Get-VmsHardwarePassword
    }
}</dev:code>
        <dev:remarks>
          <maml:para>Gets the address, username, and password for all hardware on all recording servers.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmshardwarepassword/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsLoginProvider</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsLoginProvider</command:noun>
      <maml:description>
        <maml:para>Gets the configured external login provider(s).</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-VmsLoginProvider` cmdlet gets the configured external login provider. As of XProtect VMS versions 2023 R1 there can be only one external login provider. In the future, it may be possible to have more than one external login provider, and this cmdlet should be capable of returning one, or more, or all login providers configured on the VMS.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsLoginProvider</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the literal name of an existing login provider entry.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the literal name of an existing login provider entry.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LoginProvider</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsLoginProvider</dev:code>
        <dev:remarks>
          <maml:para>Gets all configured login providers.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>Get-VmsLoginProvider -Name Auth0</dev:code>
        <dev:remarks>
          <maml:para>Gets the login provider Auth0, or results in an error if no matching login provider is found in the VMS configuration.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsloginprovider/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsLoginProviderClaim</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsLoginProviderClaim</command:noun>
      <maml:description>
        <maml:para>Gets the registered claims associated with the specified login provider.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-VmsLoginProviderClaim` cmdlet returns the registered claims associated with the provided login provider. The claims returned by this cmdlet are the only claims allowed to be used with roles to determine privileges for users from the external login provider on the VMS.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsLoginProviderClaim</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>LoginProvider</maml:name>
          <maml:description>
            <maml:para>The login provider from which to return the registered claims.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
          <dev:type>
            <maml:name>LoginProvider</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the claim to return from the specified login provider.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>LoginProvider</maml:name>
        <maml:description>
          <maml:para>The login provider from which to return the registered claims.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
        <dev:type>
          <maml:name>LoginProvider</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the claim to return from the specified login provider.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LoginProvider</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.RegisteredClaim</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsLoginProvider | Get-VmsLoginProviderClaim | Select-Object Name, DisplayName, CaseSensitive</dev:code>
        <dev:remarks>
          <maml:para>Gets all registered claims from all configured login providers an displays the relevant configuration properties: name, display name, and whether the name of the claim is case sensitive.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version:</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsloginproviderclaim</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsloginproviderclaim/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsRecordingServer</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsRecordingServer</command:noun>
      <maml:description>
        <maml:para>Gets one or more matching recording servers from the VMS.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets one or more matching recording servers from the VMS. Recording servers can be retrieved by name, ID, or hostname.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsRecordingServer</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="ComputerName">
          <maml:name>HostName</maml:name>
          <maml:description>
            <maml:para>Specifies the hostname of the recording server to retrieve, with support for wildcards.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsRecordingServer</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Id</maml:name>
          <maml:description>
            <maml:para>Specifies the ID of the recording server to retrieve.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
          <dev:type>
            <maml:name>Guid</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsRecordingServer</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the recording server to retrieve, with support for wildcards.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="ComputerName">
        <maml:name>HostName</maml:name>
        <maml:description>
          <maml:para>Specifies the hostname of the recording server to retrieve, with support for wildcards.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Id</maml:name>
        <maml:description>
          <maml:para>Specifies the ID of the recording server to retrieve.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
        <dev:type>
          <maml:name>Guid</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the recording server to retrieve, with support for wildcards.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Guid</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.RecordingServer</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>These configuration api objects are cached in the PowerShell session. Additions, removals, or changes to these objects outside of the current PowerShell session may not be reflected until you execute the `Clear-VmsCache` cmdlet, login again, or start a new PowerShell session.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsRecordingServer</dev:code>
        <dev:remarks>
          <maml:para>Gets a list of all recording servers in the VMS.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>Get-VmsRecordingServer -Name "Portland*"</dev:code>
        <dev:remarks>
          <maml:para>Gets a list of all recording servers with a name starting with "Portland".</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 3 --------------------------</maml:title>
        <dev:code>Get-VmsRecordingServer -Id 4a10679c-a8c6-4aa9-a418-1898f2b0198d</dev:code>
        <dev:remarks>
          <maml:para>Gets the recording server with ID "4a10679c-a8c6-4aa9-a418-1898f2b0198d". Note that when retrieving items by ID, it typically bypasses the local configuration api cache. This means it guarantees an API call to the management server which may, or may not be an advantage.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsrecordingserver/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsRole</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsRole</command:noun>
      <maml:description>
        <maml:para>Gets one or more of the roles already configured in the VMS.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-VmsRole` cmdlet gets roles configured in the VMS. Users and groups can be a member of one or more roles, and permissions are granted (or denied) to a role.</maml:para>
      <maml:para>Permissions for a role are divided into two categories: overall security, and item-level security. For example, a role can be granted "Allow" for "GENERIC_READ", "VIEW_LIVE", and "PLAYBACK" for all cameras using overall security. Alternatively, a role can be granted those permissions for only a select set of cameras.</maml:para>
      <maml:para>Permissions can be mixed as well. For example, if you want all members of a role to have permission to view live video from all cameras, you can set "GENERIC_READ" and "VIEW_LIVE" to "Allow" under overall security, and then grant playback permission to a subset of cameras.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsRole</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="RoleId">
          <maml:name>Id</maml:name>
          <maml:description>
            <maml:para>Specifies the `[guid]` of an existing role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
          <dev:type>
            <maml:name>Guid</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsRole</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of a role with support for wildcards.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RoleType</maml:name>
          <maml:description>
            <maml:para>Specifies the type of role to return: Administrative, or UserDefined. Please note that the typo on "Adminstrative" intentionally matches the typo for the RoleType property in MIP SDK.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="RoleId">
        <maml:name>Id</maml:name>
        <maml:description>
          <maml:para>Specifies the `[guid]` of an existing role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
        <dev:type>
          <maml:name>Guid</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of a role with support for wildcards.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RoleType</maml:name>
        <maml:description>
          <maml:para>Specifies the type of role to return: Administrative, or UserDefined. Please note that the typo on "Adminstrative" intentionally matches the typo for the RoleType property in MIP SDK.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsRole</dev:code>
        <dev:remarks>
          <maml:para>Gets all roles defined in the VMS, including the default Administrators role.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>Get-VmsRole -Name Operators</dev:code>
        <dev:remarks>
          <maml:para>Gets the role named "Operators" if it exists, or returns an error if the role could not be found.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 3 --------------------------</maml:title>
        <dev:code>Get-VmsRole -RoleType UserDefined</dev:code>
        <dev:remarks>
          <maml:para>Gets all user-defined roles. This is useful when checking/changing permissions for many roles since it is invalid to change permissions for the Administrator role.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsrole/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsRoleClaim</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsRoleClaim</command:noun>
      <maml:description>
        <maml:para>Gets the claim names and values added to the specified role(s).</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-VmsRoleClaim` cmdlet returns claims that have been added to a role. The claim names and values are used to determine whether an external user should be granted the privileges associated with the role.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsRoleClaim</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="RoleName">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies the role from which to return claims.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
          <dev:type>
            <maml:name>Role[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>ClaimName</maml:name>
          <maml:description>
            <maml:para>Specifies the name(s) of claims to return from the role configuration.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>LoginProvider</maml:name>
          <maml:description>
            <maml:para>Only claims associated with the specified external login provider will be returned. The default is to return claims from all login providers.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
          <dev:type>
            <maml:name>LoginProvider</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>ClaimName</maml:name>
        <maml:description>
          <maml:para>Specifies the name(s) of claims to return from the role configuration.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>LoginProvider</maml:name>
        <maml:description>
          <maml:para>Only claims associated with the specified external login provider will be returned. The default is to return claims from all login providers.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
        <dev:type>
          <maml:name>LoginProvider</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="RoleName">
        <maml:name>Role</maml:name>
        <maml:description>
          <maml:para>Specifies the role from which to return claims.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
        <dev:type>
          <maml:name>Role[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ClaimChildItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>function Get-VmsRoleClaimReport {
    $providers = Get-VmsLoginProvider
    foreach ($role in Get-VmsRole) {
        foreach ($claim in Get-VmsRoleClaim) {
            [pscustomobject]@{
                Role = $role.Name
                Provider = ($providers | Where-Object Id -eq $claim.ClaimProvider).Name
                Claim = $claim.ClaimName
                Value = $claim.ClaimValue
            }
        }
    }
}
Get-VmsRoleClaimReport | Export-Csv -Path ~\Desktop\Vms-Role-Claim-Report.csv -NoTypeInformation</dev:code>
        <dev:remarks>
          <maml:para>A short function to produce a four-column report in CSV format providing all claims and values associated with all external login providers, for all roles. The completed CSV file is saved to the desktop of the current user.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsroleclaim/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsRoleMember</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsRoleMember</command:noun>
      <maml:description>
        <maml:para>Gets the members of the specified VMS role.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets the members of the specified VMS role. Members can be local Windows users and groups, Active Directory users and groups, Milestone Basic Users, users from a customer-managed external identity provider.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsRoleMember</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="RoleName">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies the role object, or the name of the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
          <dev:type>
            <maml:name>Role[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="RoleName">
        <maml:name>Role</maml:name>
        <maml:description>
          <maml:para>Specifies the role object, or the name of the role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
        <dev:type>
          <maml:name>Role[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.User</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsRole -Name Operators | Get-VmsRoleMember</dev:code>
        <dev:remarks>
          <maml:para>Gets all the members of the role named "Operators".</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>Get-VmsRoleMember -Role "Instructor"</dev:code>
        <dev:remarks>
          <maml:para>Gets all the members of the role named "Instructor".</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 3 --------------------------</maml:title>
        <dev:code>Get-VmsRoleMember</dev:code>
        <dev:remarks>
          <maml:para>Gets all the members of all roles. Note that there is no way to know which role a role member was returned from as the "User" objects do not have a property on them to identify the role they were returned from. Users may be a member of multiple roles, so when you do not provide a role with this cmdlet, you may see duplicate user entries and this is to be expected.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsrolemember/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsRoleOverallSecurity</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsRoleOverallSecurity</command:noun>
      <maml:description>
        <maml:para>Gets the overall security settings per security namespace for a role.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets the overall security settings per security namespace for a role. With the exception of the default Administrators role, roles have a collection of "Overall Security" namespaces, each with their own set of permissions.</maml:para>
      <maml:para>A security namespace defines a group of related permissions such as "Cameras" or "Management Server". The "Cameras" security namespace defines permissions like "VIEW_LIVE" or "PLAYBACK". The values of all permissions in overall security are either "Allow", "Deny" or "None" with the default value of "None".</maml:para>
      <maml:para>Permissions in Milestone are cumulative, with a "Deny" taking priority over any "Allow". For example, if you are a member of Role A and Role B, with Role A giving you permission to export video, but Role B has a "Deny" for the same security attribute, then you will not be allowed to export video.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsRoleOverallSecurity</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="RoleName">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies the role object, or the name of the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role</command:parameterValue>
          <dev:type>
            <maml:name>Role</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>SecurityNamespace</maml:name>
          <maml:description>
            <maml:para>Specifies the name or ID of an existing security namespace.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="RoleName">
        <maml:name>Role</maml:name>
        <maml:description>
          <maml:para>Specifies the role object, or the name of the role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role</command:parameterValue>
        <dev:type>
          <maml:name>Role</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>SecurityNamespace</maml:name>
        <maml:description>
          <maml:para>Specifies the name or ID of an existing security namespace.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsRoleOverallSecurity -Role 'Operators' -SecurityNamespace Alarms</dev:code>
        <dev:remarks>
          <maml:para>Gets the overall security settings for Alarms, for the role named "Operators".</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsroleoverallsecurity/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsSiteInfo</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsSiteInfo</command:noun>
      <maml:description>
        <maml:para>Gets one or more site information fields.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet gets the site information values. Each line of information is returned as pscustomobject with a DisplayName, Property, and Value property.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsSiteInfo</maml:name>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>Property</maml:name>
          <maml:description>
            <maml:para>Specifies the property name to get. The default is to return all values.</maml:para>
            <maml:para>The values as of 2022 R2 are: address.Name, address.Address, address.State, address.Phone, address.Country, address.ZipCode, admin.Name, admin.Address, admin.Phone, additional.AdditionalInfo</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>Property</maml:name>
        <maml:description>
          <maml:para>Specifies the property name to get. The default is to return all values.</maml:para>
          <maml:para>The values as of 2022 R2 are: address.Name, address.Address, address.State, address.Phone, address.Country, address.ZipCode, admin.Name, admin.Address, admin.Phone, additional.AdditionalInfo</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>PSCustomObject</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-VmsManagementServer -ShowDialog -AcceptEula
Get-VmsSiteInfo
 
&lt;# OUTPUT
  DisplayName Property Value
  ----------- -------- -----
  Address - Name address.Name Milestone Systems
  Address - Address address.Address 5300 Meadows Rd STE 400
  Address - Address address.Address Lake Oswego, OR 97035
  Address - Country address.Country United States
  Address - Phone address.Phone +1 503-350-1100
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>After logging in to the Management Server, this example returns all site information. This information could be piped directly to a CSV file and then imported on a different site if you have many sites that you manage. See the next example for inspiration.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code># Export current site's site info to csv
Get-VmsSiteInfo | Export-Csv ~\Desktop\siteinfo.csv
 
# Update the site info on a different site
Clear-VmsSiteInfo -Verbose
Import-Csv ~\Desktop\siteinfo.csv | Set-VmsSiteInfo -Append -Verbose</dev:code>
        <dev:remarks>
          <maml:para>This example shows how you might export the site information, and then import that information on a different site. On the new site, we first use Clear-VmsSiteInfo to ensure that we don't add new data to existing site info properties. Then we import the rows from the csv file which as the columns "DisplayName", "Property", and "Value" by default because that is the name of the properties returned by Get-VmsSiteInfo.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmssiteinfo/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsStorage</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsStorage</command:noun>
      <maml:description>
        <maml:para>Gets the Storage objects representing the live recording storages on Milestone XProtect recording servers</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets the Storage objects representing the live recording storages on Milestone XProtect recording servers</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsStorage</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="RecordingStorage, Path">
          <maml:name>ItemPath</maml:name>
          <maml:description>
            <maml:para>Specifies the Milestone Configuration API path for the storage configuration. For example, Storage[eef84b4a-1e7a-4f99-ac5f-671ae76d520b] Note: You may pipe a camera object to this cmdlet and the RecordingStorage alias will be used to identify the correct storage configuration</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsStorage</maml:name>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the storage configuration to return. Supports wildcards.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>*</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
          <maml:name>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Specifies the Recording Server object from which to return storage configurations</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
          <dev:type>
            <maml:name>RecordingServer[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="RecordingStorage, Path">
        <maml:name>ItemPath</maml:name>
        <maml:description>
          <maml:para>Specifies the Milestone Configuration API path for the storage configuration. For example, Storage[eef84b4a-1e7a-4f99-ac5f-671ae76d520b] Note: You may pipe a camera object to this cmdlet and the RecordingStorage alias will be used to identify the correct storage configuration</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the storage configuration to return. Supports wildcards.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>*</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
        <maml:name>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Specifies the Recording Server object from which to return storage configurations</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
        <dev:type>
          <maml:name>RecordingServer[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Storage</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-RecordingServer -Name 'Recorder 1' | Get-VmsStorage</dev:code>
        <dev:remarks>
          <maml:para>Gets all storage configurations on the recording server named 'Recorder 1</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Get-RecordingServer | Get-VmsStorage -Name 'Local*'</dev:code>
        <dev:remarks>
          <maml:para>Gets all storage configurations on all recording servers where the name begins with 'Local'</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 3 --------------------------</maml:title>
        <dev:code>$camera | Get-VmsStorage</dev:code>
        <dev:remarks>
          <maml:para>Gets the storage configuration associated with the Camera object in the variable $camera</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsstorage/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsStorageRetention</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsStorageRetention</command:noun>
      <maml:description>
        <maml:para>Gets a [timespan] representing the configured storage retention for the specified storage.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>A Milestone Storage object represents both the overall storage configuration and the live storage information for that storage configuration. It has ArchiveStorage child items for each archive path associated with that storage configuration. To determine the retention for the whole storage configuration, you need to find the largest "RetainMinutes" value between the live recording path and all the optional archive storage paths.</maml:para>
      <maml:para>This function saves the step of checking whether archives exist and finding the archive child item with the longest retention.</maml:para>
      <maml:para>The value returned represents the maximum age of data before it will be deleted. The only exception is if you have used the evidence lock feature which can tag video with custom retention policies and even keep video indefinitely.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsStorageRetention</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>Storage</maml:name>
          <maml:description>
            <maml:para>Specifies the the storage object from which to return the maximum retention value. Use Get-VmsStorage to acquire a Storage object.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Storage[]</command:parameterValue>
          <dev:type>
            <maml:name>Storage[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>Storage</maml:name>
        <maml:description>
          <maml:para>Specifies the the storage object from which to return the maximum retention value. Use Get-VmsStorage to acquire a Storage object.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Storage[]</command:parameterValue>
        <dev:type>
          <maml:name>Storage[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.TimeSpan</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-VmsRecordingServer -Name Test | Get-VmsStorage | Foreach-Object { [pscustomobject]@{ Storage = $_.Name; Retention = ($_ | Get-VmsStorageRetention).TotalDays } }</dev:code>
        <dev:remarks>
          <maml:para>Gets all storage configurations associated with the Recording Server named "Test" and returns the storage names and the maximum retention value in days.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsstorageretention/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsToken</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsToken</command:noun>
      <maml:description>
        <maml:para>Gets the current token issued by the Management Server to this PowerShell session.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The Get-VmsToken cmdlet returns the token issued by the Management Server to the current user session. Tokens are used internally to verify a user or service has been authenticated by the Management and is authorized to access resources. Tokens are renewed in the background automatically, and expire in 4 hours by default.</maml:para>
      <maml:para>Note: It is rare that you would need to use this cmdlet. It is added for convenience only for those rare cases when direct access to a token might be needed.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsToken</maml:name>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters />
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-VmsToken</dev:code>
        <dev:remarks>
          <maml:para>Get the current token as a string.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmstoken/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsView</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsView</command:noun>
      <maml:description>
        <maml:para>Gets one or more views which are typically defined in XProtect Smart Client.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets one or more View objects which are children of ViewGroup containers. Views have a layout defined in XML, and contain one ViewItemChildItem for each "pane" in the view where a camera or other view item can be placed.</maml:para>
      <maml:para>The ViewItemChildItem objects are further defined by their own ViewItem xml which describes the content of that view item within the overall view.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsView</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>Id</maml:name>
          <maml:description>
            <maml:para>Specifies the ID of a specific view.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
          <dev:type>
            <maml:name>Guid</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsView</maml:name>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the view name with support for wildcards.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>ViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the parent view group from which views should be returned.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup[]</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>Id</maml:name>
        <maml:description>
          <maml:para>Specifies the ID of a specific view.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
        <dev:type>
          <maml:name>Guid</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the view name with support for wildcards.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>ViewGroup</maml:name>
        <maml:description>
          <maml:para>Specifies the parent view group from which views should be returned.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup[]</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.View</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>Due to a bug in XProtect VMS versions released before 2022 R2, views that are nested in subgroups will all appear to be duplicated in each parent group when accessing the view group configuration through the Configuration API. Since MilestonePSTools uses the Configuration API to access view group information, view locations may not appear to match XProtect Smart Client unless you are running version 2022 R2 or later, or unless the issue is resolved in a cumulative patch for your VMS version.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
Get-VmsView
 
&lt;# OUTPUT
DisplayName ViewSize Shortcut Id LastModified
----------- -------- -------- -- ------------
New View (1 x 2) 2 78904DC2-20FF-4F47-97... 3/25/2020 3:23:19 PM
New View (1 + 7) 8 7BE65A12-2997-4783-A5... 3/25/2020 1:24:12 PM
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we retrieve a list of all views in all view groups.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$parentViewGroup = Get-VmsViewGroup | Out-GridView -OutputMode Single
$parentViewGroup | Get-VmsViewGroup -Recurse | Get-VmsView
 
&lt;# OUTPUT
DisplayName ViewSize Shortcut Id LastModified
----------- -------- -------- -- ------------
New View (1 x 2) 2 78904DC2-20FF-4F47-97... 3/25/2020 3:23:19 PM
New View (1 + 7) 8 7BE65A12-2997-4783-A5... 3/25/2020 1:24:12 PM
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>Returns all views from all child view groups of the selected parent view group.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsview/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsViewGroup</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsViewGroup</command:noun>
      <maml:description>
        <maml:para>Gets one or more top-level or child view groups as seen in XProtect Smart Client.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>View groups are containers for groups and views. Top-level view groups are defined in Management Client and permissions can be set per role for these top-level groups.</maml:para>
      <maml:para>In XProtect Smart Client, you will normally see a "Private" view group which is unique to your user account, and zero or more additional view groups depending on your system configuration. These view groups cannot directly contain views, but they can contain one or more child view groups. Views and view groups can be nested.</maml:para>
      <maml:para>Use this command to retrieve view groups and inspect or modify their contents, or adjust permissions for roles using the `*-VmsViewGroupAcl` commands.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsViewGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>Id</maml:name>
          <maml:description>
            <maml:para>Specifies the ID of a specific view group. It can be a top-level, or child view group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
          <dev:type>
            <maml:name>Guid</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsViewGroup</maml:name>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the view group name with support for wildcards.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Parent</maml:name>
          <maml:description>
            <maml:para>Specifies a parent view group object. Useful for retrieving child view groups from a specific parent view group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Recurse</maml:name>
          <maml:description>
            <maml:para>Specifies that all child view groups should be returned recursively.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>Id</maml:name>
        <maml:description>
          <maml:para>Specifies the ID of a specific view group. It can be a top-level, or child view group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
        <dev:type>
          <maml:name>Guid</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the view group name with support for wildcards.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Parent</maml:name>
        <maml:description>
          <maml:para>Specifies a parent view group object. Useful for retrieving child view groups from a specific parent view group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Recurse</maml:name>
        <maml:description>
          <maml:para>Specifies that all child view groups should be returned recursively.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
Get-VmsViewGroup
 
&lt;# OUTPUT
DisplayName Id LastModified
----------- -- ------------
Private 5C72A7B2-E3A8-4FF1-9F97-85C99D91E9D1 10/5/2017 5:21:01 PM
Main View Group 95DA86DD-386D-4159-87D8-00885CE29407 10/22/2017 9:38:44 PM
LPR B3E356AF-1F4A-4557-A8D5-CAE7641384D6 10/19/2018 11:03:10 PM
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we retrieve a list of all view groups.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$viewgroup = Get-VmsViewGroup | Out-GridView -OutputMode Single
$viewGroup | Get-VmsViewGroup -Recurse
 
&lt;# OUTPUT
DisplayName Id LastModified
----------- -- ------------
New Group 9CDCFC6C-CE51-403E-8410-C8EB1F317D12 3/13/2019 9:27:21 PM
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>In this example you will be prompted to select from one of the top-level view groups, and then all child view groups, recursively, will be returned.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 3 --------------------------</maml:title>
        <dev:code>Get-VmsViewGroup -Name 'Main View Group' -Recurse | Get-VmsView
 
&lt;# OUTPUT
DisplayName ViewSize Shortcut Id LastModified
----------- -------- -------- -- ------------
New View (1 x 2) 2 78904DC2-20FF-4F47-97... 3/25/2020 3:23:19 PM
New View (1 + 7) 8 7BE65A12-2997-4783-A5... 3/25/2020 1:24:12 PM
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>In this example, we recursively seek all view groups inside the top-level 'Main View Group` group, and then return all views in all child view groups.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsviewgroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VmsViewGroupAcl</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VmsViewGroupAcl</command:noun>
      <maml:description>
        <maml:para>Gets the security permissions for one or more roles on a given XProtect Smart Client view group.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Top-level view groups defined in the Management Client can be accessed and modified only if a user's role has permission to that top-level view group. This command enables you to retrieve the permissions, or "access control list" (ACL), for a view group. You may modify the permissions and push the changes back to the Management Server using the Set-VmsViewGroupAcl command.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VmsViewGroupAcl</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies one or more existing, user-defined roles. If you omit this parameter, the ACL for every user-defined role will be returned.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
          <dev:type>
            <maml:name>Role[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
          <maml:name>ViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the view group from which to retrieve the ACL(s).</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsViewGroupAcl</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>RoleId</maml:name>
          <maml:description>
            <maml:para>Specifies the ID of a given role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role</command:parameterValue>
          <dev:type>
            <maml:name>Role</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
          <maml:name>ViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the view group from which to retrieve the ACL(s).</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-VmsViewGroupAcl</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>RoleName</maml:name>
          <maml:description>
            <maml:para>Specifies the display name of a given role with support for wildcards.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
          <maml:name>ViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the view group from which to retrieve the ACL(s).</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Role</maml:name>
        <maml:description>
          <maml:para>Specifies one or more existing, user-defined roles. If you omit this parameter, the ACL for every user-defined role will be returned.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
        <dev:type>
          <maml:name>Role[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>RoleId</maml:name>
        <maml:description>
          <maml:para>Specifies the ID of a given role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role</command:parameterValue>
        <dev:type>
          <maml:name>Role</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>RoleName</maml:name>
        <maml:description>
          <maml:para>Specifies the display name of a given role with support for wildcards.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="named" aliases="none">
        <maml:name>ViewGroup</maml:name>
        <maml:description>
          <maml:para>Specifies the view group from which to retrieve the ACL(s).</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VmsViewGroupAcl</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$viewGroup = Get-VmsViewGroup | Out-GridView -OutputMode Single -Title "Select a View Group"
$roles = Get-VmsRole -RoleType UserDefined
$role = $roles | Out-GridView -OutputMode Single -Title "Select a Role"
 
$acl = $viewGroup | Get-VmsViewGroupAcl -Role $role
$acl
 
&lt;# OUTPUT
Role Path SecurityAttributes
---- ---- ------------------
Remote Guard ViewGroup[2B9E3912-3145-4EE8-8C44-244848D1A1C5] {OPERATE, GENERIC_READ...}</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we prompt for a view group selection, and a role selection. The ACL for role on the specified view group is then displayed.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$acl.SecurityAttributes
 
&lt;# OUTPUT
  Name Value
  ---- -----
  OPERATE False
  GENERIC_READ False
  DELETE False
  GENERIC_WRITE False
#&gt;
 
$acl.SecurityAttributes.GENERIC_READ = 'True'
$acl.SecurityAttributes.OPERATE = 'True'
$acl | Set-VmsViewGroupAcl -WhatIf</dev:code>
        <dev:remarks>
          <maml:para>Continuing from the previous example, the security attributes are expanded so we can read them all. Then, we change the permissions and push the changes back to the Management Server using the `Set-VmsViewGroupAcl` cmdlet.</maml:para>
          <maml:para>The -WhatIf switch parameter is present, so we see what would happen, without making any changes. Remove the -WhatIf switch to make permanent changes, and add the -Verbose switch to see which changes are made.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/get-vmsviewgroupacl/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Import-VmsHardware</command:name>
      <command:verb>Import</command:verb>
      <command:noun>VmsHardware</command:noun>
      <maml:description>
        <maml:para>Imports devices from a CSV file and adds them to Milestone XProtect recording servers.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Imports devices from a CSV file and adds them to Milestone XProtect recording servers. There are many supported columns to define enabled devices, names, device groups and more. However, there are only three mandatory columns: Address, UserName, and Password. Technically you can even omit UserName and Password to force a scan using the default driver passwords.</maml:para>
      <maml:para>The CSV file is read using Import-Csv, so the order of the columns is not important. Like most things in PowerShell, the column names are not case-sensitive. You can also safely add custom columns that you might use for other purposes as long as the column names do not collide with the columns expected by this command.</maml:para>
      <maml:para>There are some columns which accept multiple values using semicolons to delimit values. Because of this, and because there is currently no support for escaping characters in the CSV, the use of semicolons is not allowed as part of a device name. Below you will find a list of all supported columns with descriptions and examples. You can also use the SaveTemplate switch to save a sample CSV file that you can use as a template.</maml:para>
      <maml:para>- Address Address can be provided in IPv4, IPv6, or as a hostname or full DNS name. If using HTTPS or a custom port number, the address can be provided as a URI like http://192.168.1.100:8080. If the address is not provided as a URI, it is assumed to use HTTP and port 80.</maml:para>
      <maml:para>- UserName, Password, Username2, Password2, Username3, Pasword3, UseDefaultCredentials You can provide zero, or up to 3 credentials to try for each camera. If you do not specify any credentials, UseDefaultCredentials defaults to True, even if the parameter is not present.</maml:para>
      <maml:para>- DriverNumber, DriverFamily For the best performance you should provide at least one DriverNumber, and as few additional drivers as possible. The DriverNumber values can be found on the Supported Hardware List at https://www.milestonesys.com/community/business-partner-tools/supported-devices/ listed as the "Hardware id". You can also discover them from existing Recording Servers or Hardware in PowerShell using the Get-HardwareDriver cmdlet.</maml:para>
      <maml:para>The DriverFamily column provides an easy shortcut to select all driver numbers under the group in a similar fashion to the Add Hardware dialog in Management Client. The valid DriverFamily values can be found by running `Get-RecordingServer | Select-Object -First 1 | Get-HardwareDriver | Select-Object -ExpandProperty GroupName -Unique`</maml:para>
      <maml:para>Multiple values for either DriverNumber or DriverFamily can be specified by separating each value with a semicolon (;) symbol.</maml:para>
      <maml:para>- HardwareName Cameras are represented in Milestone with the "physical" hardware as a child of the Recording Server, and then each camera channel, microphone, speaker and other devices attached as children of the hardware. The HardwareName field allows you to provide a meaningful name for the hardware. If this field is left blank, the hardware will retain the default name which looks like "Bosch Dinion IP Starlight 8000 MP (192.168.1.100)" with the make, model and IP.</maml:para>
      <maml:para>Note: If you provide a HardwareName and no names for cameras and other child devices, then all child devices will be named like "HardwareName - DeviceType ChannelNumber". For example, "Bosch Dinion IP Starlight 8000 MP (192.168.1.100) - Camera 1".</maml:para>
      <maml:para>- CameraName, MicrophoneName, SpeakerName, MetadataName, InputName, OutputName If any device names are provided, then the default value will be replaced with the values in the csv. Multiple values can be provided, so you can name all 4 cameras on a 4-channel device by delimiting each value with a semicolon (;) symbol. The first camera, which is considered channel 0, would be named by the first value, and camera 2, which is considered channel 1, would be named by the value after the first semicolon.</maml:para>
      <maml:para>If you wanted to provide a name for Camera 1 and Camera 3, but not other cameras, you would enter the value like "cam1;;cam3". Note that the second value is empty because there is no text between the two semicolons. So the second camera channel would not be renamed.</maml:para>
      <maml:para>- EnabledCameraChannels, EnabledMicrophoneChannels, Enabled*Channels The various Enabled*Channels provide a way for you to decide which channels should be enabled automatically after the Add-VmsHardware process is complete. By default, the hardware, and the first camera channel are enabled while all other devices are disabled. To change the behavior you can specify channel numbers, counting from zero, and delimited by semicolons (;).</maml:para>
      <maml:para>Example: "0;2;3" would enable the first, third, and fourth channels.</maml:para>
      <maml:para>You can also specify "All" and it will be treated as if you specified channels 0-511.</maml:para>
      <maml:para>- CameraGroup, MicrophoneGroup, SpeakerGroup, MetadataGroup, InputGroup, OutputGroup Devices are not placed in a device group by default. To place devices in a group, you must provide at least one group path, and multiple groups can be entered by delimiting values with a semicolon (;) symbol.</maml:para>
      <maml:para>Example: /Indoor Cameras/Second Floor/Stairs</maml:para>
      <maml:para>The camera would be added to a group named "Stairs" which is a child group of "Second Floor" which itself is a child of the root group named "Indoor Cameras". If any group in the path does not exist already, then it will be created.</maml:para>
      <maml:para>Example: /New cameras;/Indoor Cameras/Stairs</maml:para>
      <maml:para>This camera would be added to both a "New cameras" group at the root of the camera group list as well as the "Stairs" subgroup of "Indoor Cameras".</maml:para>
      <maml:para>- RecordingServer While the Import-VmsHardware command accepts a RecordingServer object to specify which server to which the devices should be added, each row of the CSV file can override the default server by specifying an existing Recording Server name. The name should match the display name shown in Management Client for the destination Recording Server, but the value is not case sensitive.</maml:para>
      <maml:para>Only one Recording Server can be specified per row, but you can add the same camera to multiple servers by having more than one row for the same camera.</maml:para>
      <maml:para>- Description The default hardware description is "Added using PowerShell on &lt;datetime&gt;". You can provide your own hardware description, or if you want to avoid setting a description you can put in the special value "blank". You cannot set a description for the camera or other devices using Import-VmsHardware at this time.</maml:para>
      <maml:para>Suggestion: If you want to do some extra configuration after the hardware has been added using Import-VmsHardware, you could put a unique value such as a GUID in the Description column, then match the Hardware objects in the VMS back to the CSV row using this unique value. Since you can add any number of additional custom columns to your CSV, this is a good way to extend this command to do additional custom configuration like changing stream settings.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Import-VmsHardware</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Minimal</maml:name>
          <maml:description>
            <maml:para>Specifies that a minimilist template should be saved. There are a lot of columns you can fill, but only a few are mandatory. Only mandatory columns are included in the template when this is parameter is used, with the exception of the Description column. Descriptions are not required but is included in the minimal template as a way to offer more detail about the values in each row.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the file path to the CSV file to import. If you're not sure what format the CSV should be in, use the SaveTemplate switch to save a template file to the path specified in this parameter.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>SaveTemplate</maml:name>
          <maml:description>
            <maml:para>Instead of importing a CSV file, this will save a CSV file to the path specified. The CSV file can be used as a template.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Import-VmsHardware</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the file path to the CSV file to import. If you're not sure what format the CSV should be in, use the SaveTemplate switch to save a template file to the path specified in this parameter.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Specifies the Recording Server instance where cameras should be added. If rows contain a recording server name in the RecordingServer column, the value in the CSV file will override this parameter for that row. Think of this parameter as a "default recording server" which will be used unless a more specific recording server is specified in the CSV file.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RecordingServer</command:parameterValue>
          <dev:type>
            <maml:name>RecordingServer</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Minimal</maml:name>
        <maml:description>
          <maml:para>Specifies that a minimilist template should be saved. There are a lot of columns you can fill, but only a few are mandatory. Only mandatory columns are included in the template when this is parameter is used, with the exception of the Description column. Descriptions are not required but is included in the minimal template as a way to offer more detail about the values in each row.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the file path to the CSV file to import. If you're not sure what format the CSV should be in, use the SaveTemplate switch to save a template file to the path specified in this parameter.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Specifies the Recording Server instance where cameras should be added. If rows contain a recording server name in the RecordingServer column, the value in the CSV file will override this parameter for that row. Think of this parameter as a "default recording server" which will be used unless a more specific recording server is specified in the CSV file.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RecordingServer</command:parameterValue>
        <dev:type>
          <maml:name>RecordingServer</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>SaveTemplate</maml:name>
        <maml:description>
          <maml:para>Instead of importing a CSV file, this will save a CSV file to the path specified. The CSV file can be used as a template.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Import-VmsHardware -Path ~\Desktop\new-hardware.csv</dev:code>
        <dev:remarks>
          <maml:para>Imports all hardware defined in new-hardware.csv. Since the RecordingServer parameter was not specified, the RecordingServer column must be specified for each row in the CSV file.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Get-RecordingServer -Name Server5 | Import-VmsHardware -Path ~\Desktop\new-hardware.csv</dev:code>
        <dev:remarks>
          <maml:para>Imports all hardware defined in new-hardware.csv. Since the RecordingServer parameter was specified, cameras will be added to Server5. If a row has a RecordingServer value specified in the CSV, then the camera will be added to that recording server instead.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 3 --------------------------</maml:title>
        <dev:code>Import-VmsHardware -Path ~\Desktop\new-hardware-template.csv -SaveTemplate</dev:code>
        <dev:remarks>
          <maml:para>Saves a CSV template to new-hardware-template.csv. The template will provide examples of all supported columns and some information about how the values are entered.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 4 --------------------------</maml:title>
        <dev:code>Import-VmsHardware -Path ~\Desktop\new-hardware-minimal-template.csv -SaveTemplate -Minimal</dev:code>
        <dev:remarks>
          <maml:para>Saves a CSV template to new-hardware-minimal-template.csv. The template will provides the minimal set of columns required to successfully use Import-VmsHardware.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/import-vmshardware/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Import-VmsLicense</command:name>
      <command:verb>Import</command:verb>
      <command:noun>VmsLicense</command:noun>
      <maml:description>
        <maml:para>Imports a Milestone XProtect VMS initial license file or activated license file.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Imports a Milestone XProtect VMS initial license file or activated license file. This function cannot be used to change to a different software license code. For that, you must use Set-VmsLicense instead.</maml:para>
      <maml:para>You will typically use this function in tandem with Export-VmsLicenseRequest. The expected workflow would be:</maml:para>
      <maml:para>1. Export a license request file from the VMS because it doesn't have an internet connection. 2. Take the license request file to an internet-connected PC to perform a manual license activation on My Milestone and download the activated license file. 3. Copy the activated license file to the VMS server or network, and import the activated license file.</maml:para>
      <maml:para>Alternatively, you might need to import a new "Initial license file" in order to enable a new licensed feature before you can perform license activation. In that case you would import the initial license file, export a license request, activate the license request and import the activated license file.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Import-VmsLicense</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path to an existing license file on disk. Typically this file has a .LIC extension.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the path to an existing license file on disk. Typically this file has a .LIC extension.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LicenseInformation</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LicenseInformation</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>Support for license management in Milestone's MIP SDK / Configuration API was introduced in version 2020 R2. If the Management Server version is earlier than 2020 R2, this function will not work.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Import-VmsLicense -Path C:\path\to\license.lic</dev:code>
        <dev:remarks>
          <maml:para>Imports the license file 'license.lic' and if successful, returns updated license information properties.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/import-vmslicense/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Import-VmsViewGroup</command:name>
      <command:verb>Import</command:verb>
      <command:noun>VmsViewGroup</command:noun>
      <maml:description>
        <maml:para>Exports an XProtect Smart Client view group and all contents to a JSON file.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Imports an XProtect Smart Client view group from a JSON file previously generated using the `Export-VmsViewGroup` command. You may import an exported view group on the same Management Server, or a different Management Server than the original view group.</maml:para>
      <maml:para>The selected view group can be a top-level view group, or a child view group. However, if you import a view group which has directly-attached views that are not nested in a child view group, those views will be lost when importing the view group as a top-level view group.</maml:para>
      <maml:para>When a parent ViewGroup is provided in the ParentViewGroup parameter, the imported view group will be inserted as a child of the designated parent.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Import-VmsViewGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path to a file where a JSON representation of the view group will be imported. The file should be generated using Export-VmsViewGroup.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>NewName</maml:name>
          <maml:description>
            <maml:para>Specifies an optional new name for the imported view group. If a view group with the same name already exists, the import will not proceed.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>ParentViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies an optional parent view group within which the imported view group should be nested. If omitted, the imported view group will become a new top-level view group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>NewName</maml:name>
        <maml:description>
          <maml:para>Specifies an optional new name for the imported view group. If a view group with the same name already exists, the import will not proceed.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>ParentViewGroup</maml:name>
        <maml:description>
          <maml:para>Specifies an optional parent view group within which the imported view group should be nested. If omitted, the imported view group will become a new top-level view group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the path to a file where a JSON representation of the view group will be imported. The file should be generated using Export-VmsViewGroup.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$viewGroup = Get-VmsViewGroup | Out-GridView -OutputMode Single
$viewGroup | Export-VmsViewGroup -Path C:\temp\viewgroup.json -Force
Import-VmsViewGroup -Path 'C:\temp\viewgroup.json' -NewName "$($viewGroup.DisplayName) Copy"</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we prompt for a view group selection. The selected view group is then exported to a json file at C:\temp\viewgroup.json. Next, the view group is imported under the same name with "Copy" appended to it.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$viewGroup = Get-VmsViewGroup | Out-GridView -OutputMode Single
$viewGroup | Export-VmsViewGroup -Path C:\temp\viewgroup.json -Force
 
$viewGroup = New-VmsViewGroup -Name "$($viewGroup.DisplayName) Copy" -Force
$dstViewGroup = $viewGroup | New-VmsViewGroup -Name "Child View Group"
$params = @{
    Path = 'C:\temp\viewgroup.json'
    ParentViewGroup = $dstViewGroup
    NewName = 'Example 2'
}
Import-VmsViewGroup @params</dev:code>
        <dev:remarks>
          <maml:para>This example demonstrates that it is possible to export a top-level view group and then import the view group as a nested child view group inside a different parent view group.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/import-vmsviewgroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Install-StableFPS</command:name>
      <command:verb>Install</command:verb>
      <command:noun>StableFPS</command:noun>
      <maml:description>
        <maml:para>Install the StableFPS driver on a Recording Server</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The StableFPS driver is used to add any number of virtual cameras simulated from static video files. It includes support for multiple video codecs, audio, metadata, input and output. See the Milestone MIP SDK documentation for more information.</maml:para>
      <maml:para>This command must be run with elevated permissions due to the fact it must add/modify files in the Device Pack installation path which is typically placed in the protected C:\Program Files (x86)\ path. It also must stop and start the Recording Server service in order for the new driver to be made available.</maml:para>
      <maml:para>If you re-install the StableFPS driver with different parameters, or if you add new video/audio to the %DevicePackPath%\StableFPS_DATA folder, you will need to perform "Replace Hardware" on each StableFPS hardware device you require to use the new settings/media.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Install-StableFPS</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Source</maml:name>
          <maml:description>
            <maml:para>The path to the StableFPS folder included with the MIP SDK installation. The default path is "C:\Program Files\Milestone\MIPSDK\Tools\StableFPS". To execute this command on a system without MIP SDK installed, make sure to copy the StableFPS folder to a path available to the target system. If you specify "-Path C:\StableFPS" then this command expects to find the folders C:\StableFPS\StableFPS_DATA and C:\StableFPS\vLatest</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>C:\Program Files\Milestone\MIPSDK\Tools\StableFPS</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Cameras</maml:name>
          <maml:description>
            <maml:para>Each StableFPS hardware device can have between 1 and 200 camera channels associated with it. The default value is 32.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>32</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Streams</maml:name>
          <maml:description>
            <maml:para>Each camera channel can provide up to 5 streams. By default, each channel will provide only one stream.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>1</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>DevicePackPath</maml:name>
          <maml:description>
            <maml:para>By default the DevicePackPath will be determined from the Get-RecorderConfig cmdlet which assumes the StableFPS driver is intended to be installed on the local machine which is also a Recording Server. In some cases you may wish to install the StableFPS driver to a remote machine. If this property is provided, then the driver will be deployed to the path without attempting to restart any Recording Server service or validating the presence of a Recording Server installation. It will then be your responsibility to restart the remote Recording Server to make the new driver available.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Cameras</maml:name>
        <maml:description>
          <maml:para>Each StableFPS hardware device can have between 1 and 200 camera channels associated with it. The default value is 32.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>32</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>DevicePackPath</maml:name>
        <maml:description>
          <maml:para>By default the DevicePackPath will be determined from the Get-RecorderConfig cmdlet which assumes the StableFPS driver is intended to be installed on the local machine which is also a Recording Server. In some cases you may wish to install the StableFPS driver to a remote machine. If this property is provided, then the driver will be deployed to the path without attempting to restart any Recording Server service or validating the presence of a Recording Server installation. It will then be your responsibility to restart the remote Recording Server to make the new driver available.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Source</maml:name>
        <maml:description>
          <maml:para>The path to the StableFPS folder included with the MIP SDK installation. The default path is "C:\Program Files\Milestone\MIPSDK\Tools\StableFPS". To execute this command on a system without MIP SDK installed, make sure to copy the StableFPS folder to a path available to the target system. If you specify "-Path C:\StableFPS" then this command expects to find the folders C:\StableFPS\StableFPS_DATA and C:\StableFPS\vLatest</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>C:\Program Files\Milestone\MIPSDK\Tools\StableFPS</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Streams</maml:name>
        <maml:description>
          <maml:para>Each camera channel can provide up to 5 streams. By default, each channel will provide only one stream.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>1</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Install-StableFPS -Source C:\StableFPS -Cameras 4 -Streams 2</dev:code>
        <dev:remarks>
          <maml:para>Installs the StableFPS driver from the source already present at C:\StableFPS. Each StableFPS device added to the Recording Server will have 4 camera channels, each with the option of up to 2 streams.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/install-stablefps/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Invoke-LicenseActivation</command:name>
      <command:verb>Invoke</command:verb>
      <command:noun>LicenseActivation</command:noun>
      <maml:description>
        <maml:para>{{ Fill in the Synopsis }}</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>{{ Fill in the Description }}</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Invoke-LicenseActivation</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Credential</maml:name>
          <maml:description>
            <maml:para>{{ Fill Credential Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">PSCredential</command:parameterValue>
          <dev:type>
            <maml:name>PSCredential</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>EnableAutomaticActivation</maml:name>
          <maml:description>
            <maml:para>{{ Fill EnableAutomaticActivation Description }}</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Passthru</maml:name>
          <maml:description>
            <maml:para>{{ Fill Passthru Description }}</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Credential</maml:name>
        <maml:description>
          <maml:para>{{ Fill Credential Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">PSCredential</command:parameterValue>
        <dev:type>
          <maml:name>PSCredential</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>EnableAutomaticActivation</maml:name>
        <maml:description>
          <maml:para>{{ Fill EnableAutomaticActivation Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Passthru</maml:name>
        <maml:description>
          <maml:para>{{ Fill Passthru Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>{{ Add example code here }}</dev:code>
        <dev:remarks>
          <maml:para>{{ Add example description here }}</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/invoke-licenseactivation/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Invoke-ServerConfigurator</command:name>
      <command:verb>Invoke</command:verb>
      <command:noun>ServerConfigurator</command:noun>
      <maml:description>
        <maml:para>Invokes the Milestone Server Configurator utility using command-line arguments</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The Server Configurator is the utility responsible for managing the registration of Management Servers, Recording Servers and Data Collectors as well as the configuration of certificates for Management/Recorder communication, Client/Recorder communication and Mobile Server/Web Client/Mobile communication.</maml:para>
      <maml:para>In the 2020 R3 release, command-line parameters were introduced for the Server Configurator making it possible to automate registration and certificate configuration processes. Since PowerShell offers a more rich environment for discovering parameters and valid values as well as more useful object-based output, this cmdlet was written to wrap the utility with a PowerShell-friendly interface.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Invoke-ServerConfigurator</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AuthAddress</maml:name>
          <maml:description>
            <maml:para>Specifies the address of the Authorization Server which is usually the Management Server address. A [uri] value is expected, but only the URI host value will be used. The scheme and port will be inferred based on whether encryption is enabled/disabled and is fixed to port 80/443 as this is how Server Configurator is currently designed.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
          <dev:type>
            <maml:name>Uri</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>OverrideLocalManagementServer</maml:name>
          <maml:description>
            <maml:para>When using the `AuthAddress` parameter to specify a custom URL during registration directly on the management server, supply this switch parameter and serverconfigurator.exe will be invoked with the `/overridelocalmanagementserver` argument.</maml:para>
            <maml:para>You would do this when DNS name other than the management server's fully-qualified domain name (FQDN) will be used to access the VMS. Note that "server" encryption cannot be enabled, or disabled, once the management server DNS name has been overridden. This is a limitation of serverconfigurator.exe. To enable server encryption if it is currently disabled, or to disable it if it is currently enabled, you must open the Server Configurator application, and click the "undo" button on the address field in the "Register" activity tab.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the standard output from the Server Configurator utility should be written after the operation is completed. The output will include the following properties: - StandardOutput</maml:para>
            <maml:para>- StandardError</maml:para>
            <maml:para>- ExitCode</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the Server Configurator utility. Omit this path and the path will be discovered using Get-RecorderConfig or Get-ManagementServerConfig by locating the installation path of the Management Server or Recording Server and assuming the Server Configurator is located in the same path.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Register</maml:name>
          <maml:description>
            <maml:para>Register all local components with the optionally specified AuthAddress. If no AuthAddress is provided, the last-known address will be used.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Invoke-ServerConfigurator</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CertificateGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the CertificateGroup [guid] identifying which component for which encryption should be enabled or disabled. Omit this parameter to modify the encryption state for all components managed by server configurator.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
          <dev:type>
            <maml:name>Guid</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>EnableEncryption</maml:name>
          <maml:description>
            <maml:para>Enable encryption for all components managed by server configurator, or only for the CertificateGroup specified.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the standard output from the Server Configurator utility should be written after the operation is completed. The output will include the following properties: - StandardOutput</maml:para>
            <maml:para>- StandardError</maml:para>
            <maml:para>- ExitCode</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the Server Configurator utility. Omit this path and the path will be discovered using Get-RecorderConfig or Get-ManagementServerConfig by locating the installation path of the Management Server or Recording Server and assuming the Server Configurator is located in the same path.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Thumbprint</maml:name>
          <maml:description>
            <maml:para>Specifies the thumbprint of the certificate to be used to encrypt communications with the component designated by the CertificateGroup id.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Invoke-ServerConfigurator</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CertificateGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the CertificateGroup [guid] identifying which component for which encryption should be enabled or disabled. Omit this parameter to modify the encryption state for all components managed by server configurator.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
          <dev:type>
            <maml:name>Guid</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>DisableEncryption</maml:name>
          <maml:description>
            <maml:para>Disable encryption for all components managed by server configurator, or only for the CertificateGroup specified.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the standard output from the Server Configurator utility should be written after the operation is completed. The output will include the following properties: - StandardOutput</maml:para>
            <maml:para>- StandardError</maml:para>
            <maml:para>- ExitCode</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the Server Configurator utility. Omit this path and the path will be discovered using Get-RecorderConfig or Get-ManagementServerConfig by locating the installation path of the Management Server or Recording Server and assuming the Server Configurator is located in the same path.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Invoke-ServerConfigurator</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ListCertificateGroups</maml:name>
          <maml:description>
            <maml:para>List the available certificate groups on the local machine. Output will be a [hashtable] where the keys are the certificate group names (which may contain spaces) and the values are the associated [guid] id's.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the Server Configurator utility. Omit this path and the path will be discovered using Get-RecorderConfig or Get-ManagementServerConfig by locating the installation path of the Management Server or Recording Server and assuming the Server Configurator is located in the same path.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AuthAddress</maml:name>
        <maml:description>
          <maml:para>Specifies the address of the Authorization Server which is usually the Management Server address. A [uri] value is expected, but only the URI host value will be used. The scheme and port will be inferred based on whether encryption is enabled/disabled and is fixed to port 80/443 as this is how Server Configurator is currently designed.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
        <dev:type>
          <maml:name>Uri</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>CertificateGroup</maml:name>
        <maml:description>
          <maml:para>Specifies the CertificateGroup [guid] identifying which component for which encryption should be enabled or disabled. Omit this parameter to modify the encryption state for all components managed by server configurator.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
        <dev:type>
          <maml:name>Guid</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>DisableEncryption</maml:name>
        <maml:description>
          <maml:para>Disable encryption for all components managed by server configurator, or only for the CertificateGroup specified.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>EnableEncryption</maml:name>
        <maml:description>
          <maml:para>Enable encryption for all components managed by server configurator, or only for the CertificateGroup specified.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ListCertificateGroups</maml:name>
        <maml:description>
          <maml:para>List the available certificate groups on the local machine. Output will be a [hashtable] where the keys are the certificate group names (which may contain spaces) and the values are the associated [guid] id's.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>OverrideLocalManagementServer</maml:name>
        <maml:description>
          <maml:para>When using the `AuthAddress` parameter to specify a custom URL during registration directly on the management server, supply this switch parameter and serverconfigurator.exe will be invoked with the `/overridelocalmanagementserver` argument.</maml:para>
          <maml:para>You would do this when DNS name other than the management server's fully-qualified domain name (FQDN) will be used to access the VMS. Note that "server" encryption cannot be enabled, or disabled, once the management server DNS name has been overridden. This is a limitation of serverconfigurator.exe. To enable server encryption if it is currently disabled, or to disable it if it is currently enabled, you must open the Server Configurator application, and click the "undo" button on the address field in the "Register" activity tab.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the standard output from the Server Configurator utility should be written after the operation is completed. The output will include the following properties: - StandardOutput</maml:para>
          <maml:para>- StandardError</maml:para>
          <maml:para>- ExitCode</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the path to the Server Configurator utility. Omit this path and the path will be discovered using Get-RecorderConfig or Get-ManagementServerConfig by locating the installation path of the Management Server or Recording Server and assuming the Server Configurator is located in the same path.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Register</maml:name>
        <maml:description>
          <maml:para>Register all local components with the optionally specified AuthAddress. If no AuthAddress is provided, the last-known address will be used.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Thumbprint</maml:name>
        <maml:description>
          <maml:para>Specifies the thumbprint of the certificate to be used to encrypt communications with the component designated by the CertificateGroup id.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Invoke-ServerConfigurator -ListCertificateGroups</dev:code>
        <dev:remarks>
          <maml:para>Lists the available Certificate Groups such as 'Server certificate', 'Streaming media certificate' and 'Mobile streaming media certificate', and their ID's.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Invoke-ServerConfigurator -Register -AuthAddress http://MGMT -PassThru</dev:code>
        <dev:remarks>
          <maml:para>Registers all local Milestone components with the authorization server at http://MGMT and outputs a [pscustomobject] with the exit code, and standard output/error from the invocation of the Server Configurator executable.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/invoke-serverconfigurator/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Invoke-VmsLicenseActivation</command:name>
      <command:verb>Invoke</command:verb>
      <command:noun>VmsLicenseActivation</command:noun>
      <maml:description>
        <maml:para>Perform an online license activation using My Milestone credentials.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Perform an online license activation using My Milestone credentials. Requires that the Management Server have an internet connection and access to the Milestone Systems license activation service on HTTPS port 443.</maml:para>
      <maml:para>The credentials used for license activation must match a valid My Milestone user with at least License User privelege and the software license code must already be registered to the company account.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Invoke-VmsLicenseActivation</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Credential</maml:name>
          <maml:description>
            <maml:para>Specifies a My Milestone username and password. The username is usually your e-mail address.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">PSCredential</command:parameterValue>
          <dev:type>
            <maml:name>PSCredential</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>EnableAutoActivation</maml:name>
          <maml:description>
            <maml:para>Specifies that any system changes requiring license activation should trigger an automatic license activation using these credentials in the future. If omitted, automatic license activation will be disabled if it is currently enabled.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Credential</maml:name>
        <maml:description>
          <maml:para>Specifies a My Milestone username and password. The username is usually your e-mail address.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">PSCredential</command:parameterValue>
        <dev:type>
          <maml:name>PSCredential</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>EnableAutoActivation</maml:name>
        <maml:description>
          <maml:para>Specifies that any system changes requiring license activation should trigger an automatic license activation using these credentials in the future. If omitted, automatic license activation will be disabled if it is currently enabled.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LicenseInformation</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LicenseInformation</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>Support for license management in Milestone's MIP SDK / Configuration API was introduced in version 2020 R2. If the Management Server version is earlier than 2020 R2, this function will not work.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Invoke-VmsLicenseActivation -Credential (Get-Credential)</dev:code>
        <dev:remarks>
          <maml:para>Performs an online license activation and does not enable automatic license activation.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/invoke-vmslicenseactivation/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Join-VmsDeviceGroupPath</command:name>
      <command:verb>Join</command:verb>
      <command:noun>VmsDeviceGroupPath</command:noun>
      <maml:description>
        <maml:para>Joins an array of strings into a valid device group path with escaped forward-slashes as needed.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet can be used to safely construct a device group path from an array of names representing the device group hierarchy. Any unescaped forward-slashes will be automatically escaped for you in the return value.</maml:para>
      <maml:para>For example, the string "/People Counting/Entrances`/Exits" could represent a camera group named "Entrances/Exits" in a parent group named "People Counting", using the device group path format implemented by MilestonePSTools.</maml:para>
      <maml:para>This device group path can be safely constructed using the individual group names, without concern over how to escape any unescaped forward-slashes. If a forward-slash is intended to be a part of a device group name and the device group is created using `New-VmsDeviceGroup -Path`, then an unescaped forward-slash will end up splitting that device group name into two parts, and you will have an unexpected subgroup.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Join-VmsDeviceGroupPath</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>PathParts</maml:name>
          <maml:description>
            <maml:para>Specifies a hierarchy of device group names to use to construct a device group path with a unix directory-style path format. The order of strings is important: the first string represents the "root" device group, and the last string represents the "leaf" device group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>PathParts</maml:name>
        <maml:description>
          <maml:para>Specifies a hierarchy of device group names to use to construct a device group path with a unix directory-style path format. The order of strings is important: the first string represents the "root" device group, and the last string represents the "leaf" device group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>'People Counting', 'Entrances/Exits' | Join-VmsDeviceGroupPath</dev:code>
        <dev:remarks>
          <maml:para>This example constructs a device group path like `/People Counting/Entrances`/Exits`. Note the backtick added before "/Exits". Without the backtick, creating a device group with this path would result in a total of three device groups with a "leaf" group named "Exits". This cmdlet joined the parts of the path and escaped the previously unescaped directory separator character "/" with a backtick to signal that the forward slash is a part of the device group name instead of a directory separator.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/join-vmsdevicegrouppath/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-VmsBasicUser</command:name>
      <command:verb>New</command:verb>
      <command:noun>VmsBasicUser</command:noun>
      <maml:description>
        <maml:para>Creates a new Milestone basic user with the specified username and password.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `New-VmsBasicUser` cmdlet creates a new Milestone basic user. Basic users created within Milestone are unique to the Milestone VMS on which they were created. They are not compatible with the Milestone Federated Architecture feature as of VMS versions 2023 R1.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-VmsBasicUser</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the username for the new basic user.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>Password</maml:name>
          <maml:description>
            <maml:para>Specifies the password for the new basic user. The password should be provided as a `[securestring]` but a plain text string will be accepted as well.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
          <dev:type>
            <maml:name>SecureString</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>An optional description of the basic user. This is displayed in the management client and can be be used for any purpose. Sometimes the description is used to indicate why a user account has been locked or why the account was created.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="none">
          <maml:name>CanChangePassword</maml:name>
          <maml:description>
            <maml:para>Specifies whether the new basic user is allowed to change their own password.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="4" aliases="none">
          <maml:name>ForcePasswordChange</maml:name>
          <maml:description>
            <maml:para>Specifies that the new user must change their password upon first login.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="5" aliases="none">
          <maml:name>Status</maml:name>
          <maml:description>
            <maml:para>Specifies the status for the new basic user account. The default is 'Enabled' and the other option configurable by the administrator is 'LockedOutByAdmin'. A third status value exists named 'LockedOutBySystem', but only the VMS can set this status value. Usually after multiple login failures.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Enabled</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">LockedOutByAdmin</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Enabled</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="none">
        <maml:name>CanChangePassword</maml:name>
        <maml:description>
          <maml:para>Specifies whether the new basic user is allowed to change their own password.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>An optional description of the basic user. This is displayed in the management client and can be be used for any purpose. Sometimes the description is used to indicate why a user account has been locked or why the account was created.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="4" aliases="none">
        <maml:name>ForcePasswordChange</maml:name>
        <maml:description>
          <maml:para>Specifies that the new user must change their password upon first login.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the username for the new basic user.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>Password</maml:name>
        <maml:description>
          <maml:para>Specifies the password for the new basic user. The password should be provided as a `[securestring]` but a plain text string will be accepted as well.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
        <dev:type>
          <maml:name>SecureString</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="5" aliases="none">
        <maml:name>Status</maml:name>
        <maml:description>
          <maml:para>Specifies the status for the new basic user account. The default is 'Enabled' and the other option configurable by the administrator is 'LockedOutByAdmin'. A third status value exists named 'LockedOutBySystem', but only the VMS can set this status value. Usually after multiple login failures.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Enabled</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Security.SecureString</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Boolean</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.BasicUser</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>New-VmsBasicUser -Name 'user1' -Password (Read-Host -Prompt 'Password' -AsSecureString)</dev:code>
        <dev:remarks>
          <maml:para>Prompts for a password and then creates the user 'user1' with the provided password with the default settings including: Status = Enabled, CanChangePassword = True, ForcePasswordChange = False.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>New-VmsBasicUser -Name 'user2' -Password 'P4ssw@rd'</dev:code>
        <dev:remarks>
          <maml:para>Creates the user 'user2' with the password 'P4ssw@rd'. While the Password parameter is expected to be of type `[securestring]`, it can be provided as a plain text string as well. It is however recommended not to expose credentials in a script or terminal.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version:</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/new-vmsloginprovider/</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/new-vmsbasicuser/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-VmsDeviceGroup</command:name>
      <command:verb>New</command:verb>
      <command:noun>VmsDeviceGroup</command:noun>
      <maml:description>
        <maml:para>Creates a new device group.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Creates a new device group. Device groups exist for cameras, microphones, speakers, inputs, outputs, and metadata.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-VmsDeviceGroup</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>ParentGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the parent device group as is returned from Get-VmsDeviceGroup.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies a name for the new device group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies an optional description for the device group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="DeviceCategory">
          <maml:name>Type</maml:name>
          <maml:description>
            <maml:para>Specifies the type of device group to return. The default is "Camera".</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Camera</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Microphone</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Speaker</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Input</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Output</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Metadata</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Camera</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>New-VmsDeviceGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies a full unix-style path to the desired device group. See the examples for reference.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies an optional description for the device group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="DeviceCategory">
          <maml:name>Type</maml:name>
          <maml:description>
            <maml:para>Specifies the type of device group to return. The default is "Camera".</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Camera</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Microphone</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Speaker</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Input</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Output</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Metadata</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Camera</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies an optional description for the device group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies a name for the new device group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>ParentGroup</maml:name>
        <maml:description>
          <maml:para>Specifies the parent device group as is returned from Get-VmsDeviceGroup.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
        <dev:type>
          <maml:name>IConfigurationItem</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies a full unix-style path to the desired device group. See the examples for reference.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="DeviceCategory">
        <maml:name>Type</maml:name>
        <maml:description>
          <maml:para>Specifies the type of device group to return. The default is "Camera".</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Camera</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.IConfigurationItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.IConfigurationItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>$cameraGroup = New-VmsDeviceGroup -Path "/Level 1/Level 2/Level 3"
Get-VmsDeviceGroup -Path "/Level 1/Level 2/Level 3"</dev:code>
        <dev:remarks>
          <maml:para>Creates a three-level deep camera group hierarchy, and then demonstrates how to retrieve that camera group using the Path parameter.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$cameraGroup = New-VmsDeviceGroup -Path "/Level 1/Level 2/Level 3"
Get-VmsDeviceGroup -Name 'Level 1' | Get-VmsDeviceGroup -Name 'Level 2' | Get-VmsDeviceGroup -Name 'Level 3'</dev:code>
        <dev:remarks>
          <maml:para>Creates a three-level deep camera group hierarchy, and then demonstrates how to retrieve that camera group by piping the parent group so that the "Name" parameter will be used to find the group with the matching name within the parent group's device group folder.</maml:para>
          <maml:para>Since no parent group was provided to the first call to Get-VmsDeviceGroup, the lookup began at (Get-VmsManagementServer).CameraGroupFolder.CameraGroups.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 3 --------------------------</maml:title>
        <dev:code>$microphoneGroup = New-VmsDeviceGroup -Path "/Level 1/Level 2/Level 3" -Type Microphone
Get-VmsDeviceGroup -Path "/Level 1/Level 2/Level 3" -Type Microphone</dev:code>
        <dev:remarks>
          <maml:para>Creates a three-level deep microphone group hierarchy, and then demonstrates how to retrieve that microphone group using the Path parameter. Note that the default device group type is "Camera" so when working with other device types you will need to specify the device group type.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 4 --------------------------</maml:title>
        <dev:code>New-VmsDeviceGroup -Name "Level 1" | New-VmsDeviceGroup -Name "Level 2" | New-VmsDeviceGroup -Name "Level 3"</dev:code>
        <dev:remarks>
          <maml:para>Creates a three-level deep camera group hierarchy by creating the first level, then piping it to `New-VmsDeviceGroup` to create a child group, and piping that child group to `New-VmsDeviceGroup` again to create the "Level 3" camera group which has the root-level camera group "Level 1" as a grand-parent.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/new-vmsdevicegroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-VmsLoginProvider</command:name>
      <command:verb>New</command:verb>
      <command:noun>VmsLoginProvider</command:noun>
      <maml:description>
        <maml:para>Adds a new external login provider to enable authentication by an external identity provider.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `New-VmsLoginProvider` cmdlet adds a new external login provider to enable authentication by an external identity provider. This functionality was introduced to the XProtect VMS in version 2022 R1, and enables authentication to be managed not only by Windows, Active Directory, or Milestone "basic users", but by an external identity provider with support for OpenID Connect or OIDC.</maml:para>
      <maml:para>Note: Only identity providers with support for OpenID Connect are supported with this feature. Future versions of the XProtect VMS may introduce support for additional protocols such as SAML.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-VmsLoginProvider</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the display name for the external login provider. This value will be displayed in the list of authentication options in supported clients including Smart Client, Web Client, Mobile Client, and Management Client.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>ClientId</maml:name>
          <maml:description>
            <maml:para>Specifies the client id value unique to the external login provider.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>ClientSecret</maml:name>
          <maml:description>
            <maml:para>Specifies the client secret value unique to the external login provider.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
          <dev:type>
            <maml:name>SecureString</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>CallbackPath</maml:name>
          <maml:description>
            <maml:para>Specifies the path to which users will be redirected after completing the login process with the external login provider. The CallbackPath value represents the portion of the management server URI that comes after the dns name and port. The default value is '/signin-oidc' and the value is not normally changed.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>/signin-oidc</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>Authority</maml:name>
          <maml:description>
            <maml:para>Specifies the URI for the external login provider to which VMS users will be redirected for authentication.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
          <dev:type>
            <maml:name>Uri</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
          <maml:name>UserNameClaim</maml:name>
          <maml:description>
            <maml:para>Specifies the claim name to use to generate a unique user name for the user in the VMS. See the Unique user names for external IDP users (https://doc.milestonesys.com/latest/en-US/standard_features/sf_mc/sf_systemoverview/mc_external_idpexplained.htm#Unique_user_names_for_external_IDP_users_)documentation for more information about how user names are created within the VMS.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
          <maml:name>Scopes</maml:name>
          <maml:description>
            <maml:para>Use scopes to limit the number of claims that you get from an external IDP. If you know that the claims that are relevant for your VMS are in a specific scope, you can use the scope to limit the number of claims that you get from the external IDP.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="7" aliases="none">
          <maml:name>PromptForLogin</maml:name>
          <maml:description>
            <maml:para>Specify to the external IDP if the user should stay logged in or if a verification of the user is required. Depending on the external IDP, the verification can include a password verification or a full log-in.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>True</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="8" aliases="none">
          <maml:name>Enabled</maml:name>
          <maml:description>
            <maml:para>Specifies whether the external login provider should be enabled immediately. The default value is `$true`.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>Authority</maml:name>
        <maml:description>
          <maml:para>Specifies the URI for the external login provider to which VMS users will be redirected for authentication.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
        <dev:type>
          <maml:name>Uri</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>CallbackPath</maml:name>
        <maml:description>
          <maml:para>Specifies the path to which users will be redirected after completing the login process with the external login provider. The CallbackPath value represents the portion of the management server URI that comes after the dns name and port. The default value is '/signin-oidc' and the value is not normally changed.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>/signin-oidc</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>ClientId</maml:name>
        <maml:description>
          <maml:para>Specifies the client id value unique to the external login provider.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>ClientSecret</maml:name>
        <maml:description>
          <maml:para>Specifies the client secret value unique to the external login provider.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
        <dev:type>
          <maml:name>SecureString</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="8" aliases="none">
        <maml:name>Enabled</maml:name>
        <maml:description>
          <maml:para>Specifies whether the external login provider should be enabled immediately. The default value is `$true`.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the display name for the external login provider. This value will be displayed in the list of authentication options in supported clients including Smart Client, Web Client, Mobile Client, and Management Client.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="7" aliases="none">
        <maml:name>PromptForLogin</maml:name>
        <maml:description>
          <maml:para>Specify to the external IDP if the user should stay logged in or if a verification of the user is required. Depending on the external IDP, the verification can include a password verification or a full log-in.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>True</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
        <maml:name>Scopes</maml:name>
        <maml:description>
          <maml:para>Use scopes to limit the number of claims that you get from an external IDP. If you know that the claims that are relevant for your VMS are in a specific scope, you can use the scope to limit the number of claims that you get from the external IDP.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
        <maml:name>UserNameClaim</maml:name>
        <maml:description>
          <maml:para>Specifies the claim name to use to generate a unique user name for the user in the VMS. See the Unique user names for external IDP users (https://doc.milestonesys.com/latest/en-US/standard_features/sf_mc/sf_systemoverview/mc_external_idpexplained.htm#Unique_user_names_for_external_IDP_users_)documentation for more information about how user names are created within the VMS.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LoginProvider</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>if (Get-VmsLoginProvider) {
    throw "Existing login provider found. To run this example, please remove the existing login provider using 'Get-VmsLoginProvider | Remove-VmsLoginProvider -Force'."
}
 
# While this script has been tested and confirmed to work at the time of writing,
# the clientid, clientsecret, and authority below are fictional values.
$providerParams = @{
    Name = 'Auth0'
    ClientId = 'qgrWLy9ho81mKErhK7ZD4k82rLXKLGgB'
    ClientSecret = 'M_4P4IZQo0X4oxPwrrxWkh8y8Hjas9yl8VOFM6DQR4jlvMdJB3S0oL768b25MtIA' | ConvertTo-SecureString -AsPlainText -Force
    Authority = 'https://dev-hYz2AYg0WmmTSE4C.us.auth0.com'
    UserNameClaim = 'email'
    Scopes = 'email', 'profile'
    Verbose = $true
    ErrorAction = 'Stop'
}
# Adds the external login provider
$loginProvider = New-VmsLoginProvider @providerParams
 
# Registers a claim so that a claim name/value can later be added to a role
$loginProvider | Add-VmsLoginProviderClaim -Name 'vms_role' -Verbose
 
# Adds the "vms_role" claim to all roles, with a value matching the name of the role.
# Any user from the external login provider with the "vms_role" claim will now be a member of the matching role.
Get-VmsRole | Foreach-Object { $_ | Add-VmsRoleClaim -LoginProvider $loginProvider -ClaimName 'vms_role' -ClaimValue $_.Name -Verbose }</dev:code>
        <dev:remarks>
          <maml:para>This example script performs all the necessary configuration to add a new external identity provider (IDP). In the case of this example, it is expected that users will have a claim in their token named "vms_role", and the value of that claim will match the name of a role in the VMS.</maml:para>
          <maml:para>Note that the ClientId, ClientSecret, and Authority are always unique to every production identity provider. And identity provider will also likely have a unique set of scopes, and claims, so you should not expect this example to work as-is, unless you have confirmed with the administrator for your identity management system that users will have a claim named "vms_role", and that the value of this claim will match the name of a role in the VMS.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/new-vmsloginprovider/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-VmsRole</command:name>
      <command:verb>New</command:verb>
      <command:noun>VmsRole</command:noun>
      <maml:description>
        <maml:para>Creates a new role on the connected VMS.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Creates a new role on the connected VMS. Permissions are associated with roles, and roles can have any number of users and groups, or "members".</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-VmsRole</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies a name for the new role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies an optional description for the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="RoleClientLogOnTimeProfile">
          <maml:name>ClientLogOnTimeProfile</maml:name>
          <maml:description>
            <maml:para>Specifies the time profile within which members of this role are allowed to logon.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">TimeProfile</command:parameterValue>
          <dev:type>
            <maml:name>TimeProfile</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="RoleDefaultTimeProfile">
          <maml:name>DefaultTimeProfile</maml:name>
          <maml:description>
            <maml:para>Specifies the default time profile to use for permissions such as when members are allowed to play back recordings.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">TimeProfile</command:parameterValue>
          <dev:type>
            <maml:name>TimeProfile</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>AllowMobileClientLogOn</maml:name>
          <maml:description>
            <maml:para>Allow members of this role to logon using a mobile client.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>AllowSmartClientLogOn</maml:name>
          <maml:description>
            <maml:para>Allow members of this role to logon using Smart Client.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>AllowWebClientLogOn</maml:name>
          <maml:description>
            <maml:para>Allow members of this role to logon using a web browser.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>DualAuthorizationRequired</maml:name>
          <maml:description>
            <maml:para>Specifies that dual authorization is required for members of the role.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>MakeUsersAnonymousDuringPTZSession</maml:name>
          <maml:description>
            <maml:para>Specifies that PTZ operations should not be attributed to a specific user for members of the role.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the new role should be returned to the caller. Normal behavior for a "New-*" cmdlet is to return the new item by default. However, when creating a large number of roles, the added time to make an extra API call to retrieve the new role, or to enumerate through the cached role collection to find it may not be preferred.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>AllowMobileClientLogOn</maml:name>
        <maml:description>
          <maml:para>Allow members of this role to logon using a mobile client.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>AllowSmartClientLogOn</maml:name>
        <maml:description>
          <maml:para>Allow members of this role to logon using Smart Client.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>AllowWebClientLogOn</maml:name>
        <maml:description>
          <maml:para>Allow members of this role to logon using a web browser.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="RoleClientLogOnTimeProfile">
        <maml:name>ClientLogOnTimeProfile</maml:name>
        <maml:description>
          <maml:para>Specifies the time profile within which members of this role are allowed to logon.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">TimeProfile</command:parameterValue>
        <dev:type>
          <maml:name>TimeProfile</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="RoleDefaultTimeProfile">
        <maml:name>DefaultTimeProfile</maml:name>
        <maml:description>
          <maml:para>Specifies the default time profile to use for permissions such as when members are allowed to play back recordings.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">TimeProfile</command:parameterValue>
        <dev:type>
          <maml:name>TimeProfile</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies an optional description for the role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>DualAuthorizationRequired</maml:name>
        <maml:description>
          <maml:para>Specifies that dual authorization is required for members of the role.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>MakeUsersAnonymousDuringPTZSession</maml:name>
        <maml:description>
          <maml:para>Specifies that PTZ operations should not be attributed to a specific user for members of the role.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies a name for the new role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the new role should be returned to the caller. Normal behavior for a "New-*" cmdlet is to return the new item by default. However, when creating a large number of roles, the added time to make an extra API call to retrieve the new role, or to enumerate through the cached role collection to find it may not be preferred.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Management.Automation.SwitchParameter</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula -Force -DisableAutoLogin -PassThru
New-VmsRole -Name "My new role" -AllowMobileClientLogOn -AllowSmartClientLogOn -AllowWebClientLogOn</dev:code>
        <dev:remarks>
          <maml:para>Prompts the user to login to a management server, then creates a new role named "My new role" with permission to logon to the mobile client, smart client, and web client. Note that the role does not yet have any members, and it has not been assigned permissions to any cameras.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/new-vmsrole/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-VmsView</command:name>
      <command:verb>New</command:verb>
      <command:noun>VmsView</command:noun>
      <maml:description>
        <maml:para>Creates a new view as a child item of the specified XProtect Smart Client view group.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Creates a new XProtect Smart Client view in the specified view group and places cameras into the view if one or more camera objects are provided.</maml:para>
      <maml:para>Views have a complex layout defined in XML, and this command offers advanced users an easy way to create new views with their own custom layout and view item definitions. However, the command also enables simple view creation without the need to construct or manipulate XML data.</maml:para>
      <maml:para>The default parameter set will accept a collection of cameras, and automatically build a view with enough columns and rows. The simple layout generation has simple logic where the number of columns and rows will always be equal.</maml:para>
      <maml:para>If you pass in four cameras, you will receive a 2x2 view layout and all view items will receive a camera. And if you pass in 5 cameras, a 3x3 view layout will be created, and only the first 5 view items will receive a camera, leaving four empty view items.</maml:para>
      <maml:para>The custom parameter set will let you specify the cameras, and a number of columns and rows. The layout will then be generated for you and all cameras will be placed in the view if there are enough view items. If you pass in 10 cameras but specify only a 3x2 view layout, then the first 6 cameras will fill the view and the last four will be discarded with a warning.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-VmsView</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the new view. Names must be unique within a specific view group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Cameras</maml:name>
          <maml:description>
            <maml:para>Specifies one or more cameras to place into the view.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
          <dev:type>
            <maml:name>Camera[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Columns</maml:name>
          <maml:description>
            <maml:para>Specifies the number of columns the view should have. Think of columns and rows like a spreadsheet where each cell can contain a view item like a camera, map, or other type of view item.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Rows</maml:name>
          <maml:description>
            <maml:para>Specifies the number of rows the view should have. Think of columns and rows like a spreadsheet where each cell can contain a view item like a camera, map, or other type of view item.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>ViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the parent view group within which the new view will be created.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>New-VmsView</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the new view. Names must be unique within a specific view group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Cameras</maml:name>
          <maml:description>
            <maml:para>Specifies one or more cameras to place into the view.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
          <dev:type>
            <maml:name>Camera[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>LayoutDefinitionXml</maml:name>
          <maml:description>
            <maml:para>Specifies the XML definition for the view layout. This is only needed if automating the creation of views with complex view layouts that cannot be accomplished by defining row and column counts. It is recommended to manually create a view in XProtect Smart Client, and then inspect the LayoutDefinitionXml for that view to see what format and information is required.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>ViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the parent view group within which the new view will be created.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ViewItemDefinitionXml</maml:name>
          <maml:description>
            <maml:para>Specifies the XML definition for each view item in the view. This is only needed if automating the creation of views that have non-camera elements in them. It is recommended to manually create a view in XProtect Smart Client, and then inspect the ViewItemDefinitionXml for that view to see what format and information is required.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>New-VmsView</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the new view. Names must be unique within a specific view group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Cameras</maml:name>
          <maml:description>
            <maml:para>Specifies one or more cameras to place into the view.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
          <dev:type>
            <maml:name>Camera[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>StreamName</maml:name>
          <maml:description>
            <maml:para>Specifies the display name of the camera stream to use for live viewing by default. If no matching stream can be found for a given camera, the default live stream will be used.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>ViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies the parent view group within which the new view will be created.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Cameras</maml:name>
        <maml:description>
          <maml:para>Specifies one or more cameras to place into the view.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
        <dev:type>
          <maml:name>Camera[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Columns</maml:name>
        <maml:description>
          <maml:para>Specifies the number of columns the view should have. Think of columns and rows like a spreadsheet where each cell can contain a view item like a camera, map, or other type of view item.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>LayoutDefinitionXml</maml:name>
        <maml:description>
          <maml:para>Specifies the XML definition for the view layout. This is only needed if automating the creation of views with complex view layouts that cannot be accomplished by defining row and column counts. It is recommended to manually create a view in XProtect Smart Client, and then inspect the LayoutDefinitionXml for that view to see what format and information is required.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the new view. Names must be unique within a specific view group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Rows</maml:name>
        <maml:description>
          <maml:para>Specifies the number of rows the view should have. Think of columns and rows like a spreadsheet where each cell can contain a view item like a camera, map, or other type of view item.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>StreamName</maml:name>
        <maml:description>
          <maml:para>Specifies the display name of the camera stream to use for live viewing by default. If no matching stream can be found for a given camera, the default live stream will be used.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>ViewGroup</maml:name>
        <maml:description>
          <maml:para>Specifies the parent view group within which the new view will be created.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ViewItemDefinitionXml</maml:name>
        <maml:description>
          <maml:para>Specifies the XML definition for each view item in the view. This is only needed if automating the creation of views that have non-camera elements in them. It is recommended to manually create a view in XProtect Smart Client, and then inspect the ViewItemDefinitionXml for that view to see what format and information is required.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$topViewGroup = Get-VmsViewGroup | Out-GridView -OutputMode Single
$newViewGroup = $topViewGroup | New-VmsViewGroup -Name 'New-VmsView Test'
$cameras = Select-Camera -AllowFolders
$newView = $newViewGroup | New-VmsView -Name 'Example 1' -Camera $cameras
$newView
 
&lt;# OUTPUT
  DisplayName ViewSize Shortcut Id LastModified
  ----------- -------- -------- -- ------------
  Example 1 25 184AB678-C9DC-4149-B925-... 2/18/2022 3:53:34 PM
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we prompt for a view group selection, and then create a child group in the selected view group named "New-VmsView Test".</maml:para>
          <maml:para>Then, we prompt for a selection of cameras to place in the view. Inside the new view group, we create a new view named "Example 1" large enough for all cameras and place the selected cameras into the view.</maml:para>
          <maml:para>The new view object is then displayed in the terminal. There are more properties available on the view object than are displayed by default - these are only the most interesting and display-friendly properties.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>function BuildViewsFromCameraGroups {
    param(
        [VideoOS.Platform.ConfigurationItems.ViewGroup]$StartingGroup,
        [VideoOS.Platform.ConfigurationItems.CameraGroup[]]$CameraGroups,
        [int]$MaxViewSize = 4
    )
 
    Clear-VmsCache
    $ms = Get-VmsManagementServer
 
    $stack = [system.collections.generic.stack[hashtable]]::new()
    if ($null -eq $CameraGroups) {
        $CameraGroups = $ms.CameraGroupFolder.CameraGroups
    }
    foreach ($group in $CameraGroups) {
        $stack.Push(
            @{
                ParentViewGroup = $StartingGroup
                CameraGroup = $group
            }
        )
    }
 
    while ($stack.Count -gt 0) {
        $entry = $stack.Pop()
        $vgParams = @{
            Name = $entry.CameraGroup.Name
            Parent = $entry.ParentViewGroup
            Force = $true
        }
        $viewGroup = New-VmsViewGroup @vgParams
 
        if ($entry.CameraGroup.CameraFolder.Cameras.Count -gt 0) {
            for ($i = 0; $i -lt $entry.CameraGroup.CameraFolder.Cameras.Count; $i += $MaxViewSize) {
                $start = $i
                $end = [math]::min($i + $MaxViewSize, $entry.CameraGroup.CameraFolder.Cameras.Count) - 1
                $viewName = if ($start -eq 0 -and $end -eq $entry.CameraGroup.CameraFolder.Cameras.Count - 1) {
                    $viewGroup.DisplayName
                } else {
                    '{0} {1}' -f $viewGroup.DisplayName, (($i / $MaxViewSize) + 1)
                }
                $null = $viewGroup | New-VmsView -Name $viewName -Camera $entry.CameraGroup.CameraFolder.Cameras[$start..$end]
            }
        }
 
        foreach ($childGroup in $entry.CameraGroup.CameraGroupFolder.CameraGroups) {
            $stack.Push(
                @{
                    ParentViewGroup = $viewGroup
                    CameraGroup = $childGroup
                }
            )
        }
    }
}
 
Connect-ManagementServer -ShowDialog -AcceptEula -Force
$cameraGroups = Select-VideoOSItem -AllowFolders -HideServerTab -Kind ([VideoOS.Platform.Kind]::Camera) | Foreach-Object {
    try {
        $item = $_
        [VideoOS.Platform.ConfigurationItems.CameraGroup]::new($_.FQID.ServerId, "CameraGroup[$($item.FQID.ObjectId)]")
    } catch {
        Write-Error "Camera Group '$($item.Name)' not found."
    }
}
$viewGroupName = Read-Host -Prompt "New view group name"
$viewgroup = New-VmsViewGroup -Name $viewGroupName -Force
BuildViewsFromCameraGroups -StartingGroup $viewgroup -CameraGroups $cameraGroups -MaxViewSize 9</dev:code>
        <dev:remarks>
          <maml:para>This example prompts the user to login to the Management Server, and then select one or more camera groups. After receiving a new view group name from a prompt at the terminal, those camera groups are used as templates to generate view groups and views in a new top-level view group.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/new-vmsview/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-VmsViewGroup</command:name>
      <command:verb>New</command:verb>
      <command:noun>VmsViewGroup</command:noun>
      <maml:description>
        <maml:para>Creates a new top-level or child view group for XProtect Smart Client.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>There are two types of view groups - top-level view groups which are usually created or removed in Management Client, and can have permissions applied on a per-role level, and cannot directly contain view child items, and child view groups which can be nested within a top-level view group, and may contain views, and share the permissions of the top-level view group above it.</maml:para>
      <maml:para>This command can be used to create any type of view group - the Milestone SDK does not differentiate between the two, except that you cannot add views directly to a top-level view group, and you cannot change permissions on a child view group.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-VmsViewGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the new view group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies the view group description which is only displayed in Management Client for top-level view groups.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Specifies that the view group should be created, and if it already exists, the existing view group should be returned without error.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Parent</maml:name>
          <maml:description>
            <maml:para>Specifies the parent view group. This parameter is required when creating a nested or "child" view group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies the view group description which is only displayed in Management Client for top-level view groups.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Specifies that the view group should be created, and if it already exists, the existing view group should be returned without error.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the new view group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Parent</maml:name>
        <maml:description>
          <maml:para>Specifies the parent view group. This parameter is required when creating a nested or "child" view group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$parentViewGroup = New-VmsViewGroup -Name 'New-VmsViewGroup Test' -Force
$subgroup1 = $parentViewGroup | New-VmsViewGroup -Name 'SubGroup 1' -Force
$subgroup2 = New-VmsViewGroup -Name 'SubGroup 2' -Parent $subgroup1 -Force</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, three nested groups are created with the top-level view group 'New-VmsViewGroup Test' having a child view group named "SubGroup 1" and the child view group having it's own child view group named "SubGroup 2".</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/new-vmsviewgroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-Hardware</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>Hardware</command:noun>
      <maml:description>
        <maml:para>Removes a Milestone XProtect VMS hardware device and all child devices.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Removes a Milestone XProtect VMS hardware device and all child devices. Any video, audio, and metadata associated with the device will be immediately, and irreverisbly deleted.</maml:para>
      <maml:para>This command supports -WhatIf, and has a ConfirmImpact rating of "High". When running commands interactively, it's a good idea to take advantage of the -WhatIf parameter switch to see what would happen if you really ran the command.</maml:para>
      <maml:para>If you do not want to confirm the operation, you can add -Confirm:$false to your command to disable confirmation.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-Hardware</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Hardware</maml:name>
          <maml:description>
            <maml:para>Specifies one or more Hardware objects to be removed from the VMS. Use Get-Hardware to retrieve the devices you want to delete.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Hardware[]</command:parameterValue>
          <dev:type>
            <maml:name>Hardware[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Hardware</maml:name>
        <maml:description>
          <maml:para>Specifies one or more Hardware objects to be removed from the VMS. Use Get-Hardware to retrieve the devices you want to delete.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Hardware[]</command:parameterValue>
        <dev:type>
          <maml:name>Hardware[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>linenums="1"
Connect-ManagementServer -ShowDialog -Force -AcceptEula
Get-Hardware | Out-GridView -OutputMode Single | Remove-Hardware -WhatIf</dev:code>
        <dev:remarks>
          <maml:para>1. Show a Milestone XProtect login dialog, disconnect from any existing session if present, and accept the end-user license agreement for MIP SDK. 2. Present a list of all hardware on the VMS from which one entry can be selected. The selected hardware will be passed to Remove-Hardware. 3. Thanks to the `-WhatIf` switch parameter, the hardware will not be removed. Instead, the operation will be logged to the terminal to show you what would have happened.</maml:para>
          <maml:para>Note: To actually remove hardware, remove the -WhatIf switch. And if you expect to do this a lot, such as on a test system, you can add `-Confirm:$false` to disable confirmation.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-hardware/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsArchiveStorage</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsArchiveStorage</command:noun>
      <maml:description>
        <maml:para>Removes a Milestone XProtect recording server archive storage configuration</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>If the specified archive is the the last one in the archive chain (it has the largest RetainMinutes value), this function removes the archive from the storage configuration.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsArchiveStorage</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>ArchiveStorage</maml:name>
          <maml:description>
            <maml:para>Specifies the ArchiveStorage object to be removed</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ArchiveStorage</command:parameterValue>
          <dev:type>
            <maml:name>ArchiveStorage</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Remove-VmsArchiveStorage</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the existing archive storage configuration to look for on the specified storage configuration</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Storage</maml:name>
          <maml:description>
            <maml:para>Specifies the Storage object from which to look for matching archive storage configurations</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Storage</command:parameterValue>
          <dev:type>
            <maml:name>Storage</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>ArchiveStorage</maml:name>
        <maml:description>
          <maml:para>Specifies the ArchiveStorage object to be removed</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ArchiveStorage</command:parameterValue>
        <dev:type>
          <maml:name>ArchiveStorage</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the existing archive storage configuration to look for on the specified storage configuration</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Storage</maml:name>
        <maml:description>
          <maml:para>Specifies the Storage object from which to look for matching archive storage configurations</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Storage</command:parameterValue>
        <dev:type>
          <maml:name>Storage</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-RecordingServer | Get-VmsStorage -Name 'Example Storage' | Remove-VmsArchiveStorage -Name 'Retired NAS Storage'</dev:code>
        <dev:remarks>
          <maml:para>Removes all archive storages named 'Retired NAS Storage' from all storage configurations named 'Example Storage' on all recording servers</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsarchivestorage/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsBasicUser</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsBasicUser</command:noun>
      <maml:description>
        <maml:para>Removes the specified basic user(s).</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Remove-VmsBasicUser` cmdlet can be used to remove Milestone, or external basic users from the VMS. Note that an external user will be recreated on their next login to the VMS if one or more registered claims in the user's token match a claim name/value pairs in a role.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsBasicUser</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Specifies one or more basic user objects as returned by the `Get-VmsBasicUser` cmdlet.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">BasicUser[]</command:parameterValue>
          <dev:type>
            <maml:name>BasicUser[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Specifies one or more basic user objects as returned by the `Get-VmsBasicUser` cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">BasicUser[]</command:parameterValue>
        <dev:type>
          <maml:name>BasicUser[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.BasicUser[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsBasicUser -External | Remove-VmsBasicUser</dev:code>
        <dev:remarks>
          <maml:para>Removes all basic user entries representing users from an external login provider.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>Get-VmsBasicUser | Where-Object Name -like '*Houston*' | Remove-VmsBasicUser</dev:code>
        <dev:remarks>
          <maml:para>Removes all basic user entries where the user name contains the case-insensitive string 'Houston'.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsbasicuser/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsDeviceGroup</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsDeviceGroup</command:noun>
      <maml:description>
        <maml:para>Deletes a device group and the underlying hierarchy of devices and subgroups.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Deletes a device group and the underlying hierarchy of devices and subgroups.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsDeviceGroup</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Group</maml:name>
          <maml:description>
            <maml:para>Specifies one or more device groups as is returned by Get-VmsDeviceGroup.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem[]</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Recurse</maml:name>
          <maml:description>
            <maml:para>Specifies that the device group should be removed even if it contains device members or subgroups.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Group</maml:name>
        <maml:description>
          <maml:para>Specifies one or more device groups as is returned by Get-VmsDeviceGroup.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IConfigurationItem[]</command:parameterValue>
        <dev:type>
          <maml:name>IConfigurationItem[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Recurse</maml:name>
        <maml:description>
          <maml:para>Specifies that the device group should be removed even if it contains device members or subgroups.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.IConfigurationItem[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsDeviceGroup -Name TestGroup | Remove-VmsDeviceGroup -Recurse</dev:code>
        <dev:remarks>
          <maml:para>Gets the root-level camera group "TestGroup" if it exists, and removes the group and all child groups and members recursively.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsdevicegroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsDeviceGroupMember</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsDeviceGroupMember</command:noun>
      <maml:description>
        <maml:para>Removes one or more device group members from the specifies device group.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Removes one or more device group members from the specifies device group.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsDeviceGroupMember</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Device</maml:name>
          <maml:description>
            <maml:para>Specifies the device object as is returned by Get-VmsCamera or Get-Microphone for example.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem[]</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Group</maml:name>
          <maml:description>
            <maml:para>Specifies the device group from which the member(s) should be removed. The value for this parameter is returned from Get-VmsDeviceGroup.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Remove-VmsDeviceGroupMember</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>DeviceId</maml:name>
          <maml:description>
            <maml:para>Specifies the ID of the device to be removed.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
          <dev:type>
            <maml:name>Guid[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Group</maml:name>
          <maml:description>
            <maml:para>Specifies the device group from which the member(s) should be removed. The value for this parameter is returned from Get-VmsDeviceGroup.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Device</maml:name>
        <maml:description>
          <maml:para>Specifies the device object as is returned by Get-VmsCamera or Get-Microphone for example.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IConfigurationItem[]</command:parameterValue>
        <dev:type>
          <maml:name>IConfigurationItem[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>DeviceId</maml:name>
        <maml:description>
          <maml:para>Specifies the ID of the device to be removed.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
        <dev:type>
          <maml:name>Guid[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Group</maml:name>
        <maml:description>
          <maml:para>Specifies the device group from which the member(s) should be removed. The value for this parameter is returned from Get-VmsDeviceGroup.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
        <dev:type>
          <maml:name>IConfigurationItem</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.IConfigurationItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsDeviceGroup -Recurse | Remove-VmsDeviceGroupMember -DeviceId '8a4e127d-5a5c-4163-a494-721754864e31' -ErrorAction SilentlyContinue</dev:code>
        <dev:remarks>
          <maml:para>Removes the camera with ID "8a4e127d-5a5c-4163-a494-721754864e31" from all camera groups it happens to be a member of. The "ErrorAction" parameter is set to "SilentlyContinue" to ensure that no errors are emitted to the terminal when the camera is not a member of the camera group when we try to remove it.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsdevicegroupmember/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsFailoverGroup</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsFailoverGroup</command:noun>
      <maml:description>
        <maml:para>Removes an existing failover group from the current Milestone XProtect VMS site.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Remove-VmsFailoverGroup` cmdlet removes an existing failover group, which can each contain one or more failover recording servers.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsFailoverGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>FailoverGroup</maml:name>
          <maml:description>
            <maml:para>Specifies a FailoverGroup object returned by the `Get-VmsFailoverGroup` cmdlet.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">FailoverGroup</command:parameterValue>
          <dev:type>
            <maml:name>FailoverGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>FailoverGroup</maml:name>
        <maml:description>
          <maml:para>Specifies a FailoverGroup object returned by the `Get-VmsFailoverGroup` cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">FailoverGroup</command:parameterValue>
        <dev:type>
          <maml:name>FailoverGroup</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.FailoverGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
 
Get-VmsFailoverGroup | Select-Object -First 1 | Remove-VmsFailoverGroup -WhatIf</dev:code>
        <dev:remarks>
          <maml:para>Prompts user to login to a Milestone VMS, then attempts to remove the first failover group returned by `Get-VmsFailoverGroup` but does not actually remove the failover group thanks to the `-WhatIf` switch.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsfailovergroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsLoginProvider</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsLoginProvider</command:noun>
      <maml:description>
        <maml:para>Removes an external login provider from the VMS.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Remove-VmsLoginProvider` cmdlet can be used to remove a configured external login provider from the VMS. When used without the `-Force` switch, this cmdlet will return an error if there are any claims associated with any roles, or if there are any basic user entries associated with the login provider still present in the VMS configuration.</maml:para>
      <maml:para>With the `-Force` switch, the following operations are performed before removing the login provider: the login provider is disabled to prevent any new logins, all basic users associated with the login provider are removed, and all claims associated with the login provider are removed from all roles.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsLoginProvider</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>LoginProvider</maml:name>
          <maml:description>
            <maml:para>Specifies the external login provider to be removed.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
          <dev:type>
            <maml:name>LoginProvider</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Specifies that all related basic users and claims should be removed automatically.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Specifies that all related basic users and claims should be removed automatically.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>LoginProvider</maml:name>
        <maml:description>
          <maml:para>Specifies the external login provider to be removed.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
        <dev:type>
          <maml:name>LoginProvider</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LoginProvider</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsLoginProvider -Name Auth0 | Remove-VmsLoginProvider -Force</dev:code>
        <dev:remarks>
          <maml:para>The external login provider 'Auth0' is completely removed from the VMS configuration. Since this command can have a significant impact on business safety and operations, the default behavior is to request confirmation before proceeding. To suppress confirmation on any cmdlet implementing `SupportsShouldProcess` you can add the switch `-Confirm:$false`.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsloginprovider/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsLoginProviderClaim</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsLoginProviderClaim</command:noun>
      <maml:description>
        <maml:para>Removes one, or all registered claims from the specified login provider.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Remove-VmsLoginProviderClaim` cmdlet removes one, or all registered claims from a configured external login provider.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsLoginProviderClaim</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>All</maml:name>
          <maml:description>
            <maml:para>Specifies that all claims registered with the login provider should be removed.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Specifies that the associated claim(s) should first be removed from all roles in which it is used.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>LoginProvider</maml:name>
          <maml:description>
            <maml:para>Specifies the login provider from which to remove the registered claim.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
          <dev:type>
            <maml:name>LoginProvider</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Remove-VmsLoginProviderClaim</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ClaimName</maml:name>
          <maml:description>
            <maml:para>Specifies the literal name of the claim to be removed.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Specifies that the associated claim(s) should first be removed from all roles in which it is used.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>LoginProvider</maml:name>
          <maml:description>
            <maml:para>Specifies the login provider from which to remove the registered claim.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
          <dev:type>
            <maml:name>LoginProvider</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>All</maml:name>
        <maml:description>
          <maml:para>Specifies that all claims registered with the login provider should be removed.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ClaimName</maml:name>
        <maml:description>
          <maml:para>Specifies the literal name of the claim to be removed.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Specifies that the associated claim(s) should first be removed from all roles in which it is used.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>LoginProvider</maml:name>
        <maml:description>
          <maml:para>Specifies the login provider from which to remove the registered claim.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
        <dev:type>
          <maml:name>LoginProvider</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LoginProvider</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsLoginProvider | Remove-VmsLoginProviderClaim -Force</dev:code>
        <dev:remarks>
          <maml:para>Removes all registered claims from the configured login provider(s). Since the `-Force` switch is present, the registered claims are first removed from all roles, as it is not possible to remove a registered claim if that claim has been associated with a role.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsloginproviderclaim/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsRole</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsRole</command:noun>
      <maml:description>
        <maml:para>Removes the specified role from the management server.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Removes the specified role from the management server.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsRole</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="RoleId">
          <maml:name>Id</maml:name>
          <maml:description>
            <maml:para>Specifies the unique ID of the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
          <dev:type>
            <maml:name>Guid</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Remove-VmsRole</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="RoleName, Name">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies the role object as is returned by Get-VmsRole, or the role name.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role</command:parameterValue>
          <dev:type>
            <maml:name>Role</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="RoleId">
        <maml:name>Id</maml:name>
        <maml:description>
          <maml:para>Specifies the unique ID of the role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid</command:parameterValue>
        <dev:type>
          <maml:name>Guid</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="RoleName, Name">
        <maml:name>Role</maml:name>
        <maml:description>
          <maml:para>Specifies the role object as is returned by Get-VmsRole, or the role name.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role</command:parameterValue>
        <dev:type>
          <maml:name>Role</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Guid</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsRole -Name 'MilestonePSTools' | Remove-VmsRole -WhatIf</dev:code>
        <dev:remarks>
          <maml:para>If the "WhatIf" parameter were removed, this would remove the role named "MilestonePSTools" if it exists.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsrole/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsRoleClaim</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsRoleClaim</command:noun>
      <maml:description>
        <maml:para>Removes one or more claims from the specified role.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Remove-VmsRoleClaim` cmdlet removes the specified claim(s) from the specified role(s). The claims must be identified by name and the `Get-VmsRoleClaim` cmdlet can be used to retrieve a list of claims and values assigned to the role.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsRoleClaim</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies the role from which to remove the claim(s).</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
          <dev:type>
            <maml:name>Role[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>ClaimName</maml:name>
          <maml:description>
            <maml:para>Specifies one or more literal claim names to be removed.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>ClaimName</maml:name>
        <maml:description>
          <maml:para>Specifies one or more literal claim names to be removed.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
        <maml:name>Role</maml:name>
        <maml:description>
          <maml:para>Specifies the role from which to remove the claim(s).</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
        <dev:type>
          <maml:name>Role[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.String[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsRole | Remove-VmsRoleClaim -ClaimName 'vms_role' -ErrorAction SilentlyContinue -Verbose</dev:code>
        <dev:remarks>
          <maml:para>Removes the claim named 'vms_role' from all roles where it has been added. The `-ErrorAction SilentlyContinue` will suppress errors where that claim is not found on the role.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsroleclaim/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsRoleMember</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsRoleMember</command:noun>
      <maml:description>
        <maml:para>Removes a member from a VMS role.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Removes a member from a VMS role.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsRoleMember</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies the role object, or the name of the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
          <dev:type>
            <maml:name>Role[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>Sid</maml:name>
          <maml:description>
            <maml:para>Specifies the SID of a user or group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Remove-VmsRoleMember</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies the role object, or the name of the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
          <dev:type>
            <maml:name>Role[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>User</maml:name>
          <maml:description>
            <maml:para>Specifies a User object such as is returned by Get-VmsRoleMember.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">User[]</command:parameterValue>
          <dev:type>
            <maml:name>User[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
        <maml:name>Role</maml:name>
        <maml:description>
          <maml:para>Specifies the role object, or the name of the role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
        <dev:type>
          <maml:name>Role[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>Sid</maml:name>
        <maml:description>
          <maml:para>Specifies the SID of a user or group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>User</maml:name>
        <maml:description>
          <maml:para>Specifies a User object such as is returned by Get-VmsRoleMember.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">User[]</command:parameterValue>
        <dev:type>
          <maml:name>User[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>foreach ($role in Get-VmsRole) {
    foreach ($member in $role | Get-VmsRoleMember) {
        if ($member.AccountName -eq 'richard' -and IdentityType -eq 'WindowsUser') {
            $role | Remove-VmsRoleMember -User $member -Confirm:$false
        }
    }
}</dev:code>
        <dev:remarks>
          <maml:para>Removes Windows and/or Active Directory users named "richard" from all roles without confirmation.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsrolemember/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsStorage</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsStorage</command:noun>
      <maml:description>
        <maml:para>Removes a Milestone XProtect recording server storage configuration and all of the child archive storages if present</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>If the specified storage is not marked as the default storage, and there are no devices configured to record to the storage, this function removes the storage configuration including any and all archive storages attached to the live drive represented by the storage configuration.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsStorage</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the existing storage configuration to look for on the specified recording server</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Specifies the RecordingServer object from which to look for matching storage configurations</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RecordingServer</command:parameterValue>
          <dev:type>
            <maml:name>RecordingServer</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Remove-VmsStorage</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Storage</maml:name>
          <maml:description>
            <maml:para>Specifies the Storage object to be removed</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Storage</command:parameterValue>
          <dev:type>
            <maml:name>Storage</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the existing storage configuration to look for on the specified recording server</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Specifies the RecordingServer object from which to look for matching storage configurations</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RecordingServer</command:parameterValue>
        <dev:type>
          <maml:name>RecordingServer</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Storage</maml:name>
        <maml:description>
          <maml:para>Specifies the Storage object to be removed</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Storage</command:parameterValue>
        <dev:type>
          <maml:name>Storage</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-RecordingServer | Remove-VmsStorage -Name 'Old Storage Config'</dev:code>
        <dev:remarks>
          <maml:para>Removes the storage configuration named 'Old Storage Config' from all recording servers</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsstorage/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsView</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsView</command:noun>
      <maml:description>
        <maml:para>Removes one or more XProtect Smart Client views.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Views are typically used in XProtect Smart Client and can contain one or more camera view items or other types of view items like maps, alarm lists, and images and browsers.</maml:para>
      <maml:para>This cmdlet allows you to permanently delete one or more views.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsView</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>View</maml:name>
          <maml:description>
            <maml:para>Specifies one or more views to be deleted. Views are easily selected using Get-VmsView.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">View[]</command:parameterValue>
          <dev:type>
            <maml:name>View[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>View</maml:name>
        <maml:description>
          <maml:para>Specifies one or more views to be deleted. Views are easily selected using Get-VmsView.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">View[]</command:parameterValue>
        <dev:type>
          <maml:name>View[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.View</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.View</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
Get-VmsView | Out-GridView -OutputMode Single | Remove-VmsView -WhatIf</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we retrieve a list of all views in all view groups, present a grid view dialog where one view may be selected, and this view is passed to `Remove-VmsView` with the -WhatIf switch to ensure that no views are actually deleted.</maml:para>
          <maml:para>To delete a view, you can omit the -WhatIf switch parameter. Add the -Verbose switch to see detailed messages for each deleted view.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsview/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-VmsViewGroup</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>VmsViewGroup</command:noun>
      <maml:description>
        <maml:para>Removes one or more XProtect Smart Client view groups.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Views groups are typically used in XProtect Smart Client and can contain one or more views with camera view items or other types of view items like maps, alarm lists, and images and browsers.</maml:para>
      <maml:para>This cmdlet allows you to permanently delete one or more views group containers.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-VmsViewGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>ViewGroup</maml:name>
          <maml:description>
            <maml:para>Specifies one or more view groups to be permanently removed.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup[]</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Recurse</maml:name>
          <maml:description>
            <maml:para>Specifies that all child members, including views and view groups, should be recursively removed.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Recurse</maml:name>
        <maml:description>
          <maml:para>Specifies that all child members, including views and view groups, should be recursively removed.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>ViewGroup</maml:name>
        <maml:description>
          <maml:para>Specifies one or more view groups to be permanently removed.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup[]</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para>On Milestone versions older than 2022 R2, the -Recurse switch does not work. You must delete all child views and view groups before you can delete the parent view group.</maml:para>
        <maml:para>This is an issue with the configuration api service on the Management Server.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$viewGroup = Get-VmsViewGroup -Recurse | Out-GridView -OutputMode Single
$viewGroup | Remove-VmsViewGroup -Recurse -WhatIf</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we retrieve a list of all view groups, present a grid view dialog where one view group may be selected, and this view group is passed to `Remove-VmsViewGroup` with the -WhatIf switch to ensure that no view groups are actually deleted.</maml:para>
          <maml:para>To delete a view group, you can omit the -WhatIf switch parameter. Add the -Verbose switch to see detailed messages for each deleted view group.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/remove-vmsviewgroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Resize-Image</command:name>
      <command:verb>Resize</command:verb>
      <command:noun>Image</command:noun>
      <maml:description>
        <maml:para>Resizes a [System.Drawing.Image] object to the given height with the same aspect ratio.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Resizes a [System.Drawing.Image] object to the given height with the same aspect ratio and outputs a new Image object which uses the same codec as the original image unless otherwise specified.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Resize-Image</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Image</maml:name>
          <maml:description>
            <maml:para>Specifies the Image object to be resized</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Image</command:parameterValue>
          <dev:type>
            <maml:name>Image</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Height</maml:name>
          <maml:description>
            <maml:para>Specifies the new desired height for the resulting resized image</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>0</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Quality</maml:name>
          <maml:description>
            <maml:para>Specifies the desired image quality of the resulting resized image</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int64</command:parameterValue>
          <dev:type>
            <maml:name>Int64</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>95</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>OutputFormat</maml:name>
          <maml:description>
            <maml:para>Specifies the desired output format such as 'BMP', 'JPEG', 'GIF', 'TIFF', 'PNG'</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">BMP</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">JPEG</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">GIF</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">TIFF</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">PNG</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>DisposeSource</maml:name>
          <maml:description>
            <maml:para>Specifies that the original image object should be disposed.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>DisposeSource</maml:name>
        <maml:description>
          <maml:para>Specifies that the original image object should be disposed.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Height</maml:name>
        <maml:description>
          <maml:para>Specifies the new desired height for the resulting resized image</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>0</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Image</maml:name>
        <maml:description>
          <maml:para>Specifies the Image object to be resized</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Image</command:parameterValue>
        <dev:type>
          <maml:name>Image</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>OutputFormat</maml:name>
        <maml:description>
          <maml:para>Specifies the desired output format such as 'BMP', 'JPEG', 'GIF', 'TIFF', 'PNG'</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Quality</maml:name>
        <maml:description>
          <maml:para>Specifies the desired image quality of the resulting resized image</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int64</command:parameterValue>
        <dev:type>
          <maml:name>Int64</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>95</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.Drawing.Image]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.Drawing.Image]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>Don't forget to call Dispose() when you're done with the image!</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>$image = $camera | Get-Snapshot -Live | ConvertFrom-Snapshot | Resize-Image -Height 200 -DisposeSource</dev:code>
        <dev:remarks>
          <maml:para>Get's a live snapshot from $camera and converts it to a System.Drawing.Image object, resizes it to 200 pixels tall and disposes the original image.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/resize-image/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Resolve-VmsDeviceGroupPath</command:name>
      <command:verb>Resolve</command:verb>
      <command:noun>VmsDeviceGroupPath</command:noun>
      <maml:description>
        <maml:para>Returns a string representing the device group path in a way MilestonePSTools understands.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The -VmsDeviceGroup commands accept device groups in a unix file path format like "/first level/second level/third level" where each name separated by a slash is a child group of the group preceeding it.</maml:para>
      <maml:para>The Get-VmsDeviceGroup command returns an object representing a single device group and it is not immediately obvious what the hierarchy of the group is when inspecting the single group object. To remedy this, Resolve-VmsDeviceGroupPath will recursively look at the ParentPath property of the group and enumerate upward through the hierarchy until reaching the root of the device group tree. The names of all the parent groups along the path will be returned along with the name of the group.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Resolve-VmsDeviceGroupPath</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="DeviceGroup">
          <maml:name>Group</maml:name>
          <maml:description>
            <maml:para>A Camera, Microphone, Speaker, Input, Output, or Metadata group. Consider using Get-VmsDeviceGroup to select the desired group object.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="DeviceGroup">
        <maml:name>Group</maml:name>
        <maml:description>
          <maml:para>A Camera, Microphone, Speaker, Input, Output, or Metadata group. Consider using Get-VmsDeviceGroup to select the desired group object.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
        <dev:type>
          <maml:name>IConfigurationItem</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-VmsDeviceGroup -Recurse | Resolve-VmsDeviceGroupPath</dev:code>
        <dev:remarks>
          <maml:para>Returns all camera device group paths, recursively, as strings.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/resolve-vmsdevicegrouppath/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Select-Camera</command:name>
      <command:verb>Select</command:verb>
      <command:noun>Camera</command:noun>
      <maml:description>
        <maml:para>Offers a UI dialog for selecting items, similar to the item selection interface in Management Client.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet implements the VideoOS.Platform.UI.ItemPickerUserControl in a custom form to allow the user to select one or more items of any kind using a friendly and customizable user interface.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Select-Camera</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Title</maml:name>
          <maml:description>
            <maml:para>Specifies the text in the title-bar of the Item Picker window. The default is "Select Camera(s)".</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Select Camera(s)</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AllowFolders</maml:name>
          <maml:description>
            <maml:para>Device groups are considered folders and are not selectable by default. To allow for selecting many items with one click, include this parameter. Consider using this with the FlattenOutput switch unless you specifically need to select a folder item instead of it's child items.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AllowServers</maml:name>
          <maml:description>
            <maml:para>Supply this switch to enable selection of servers. You might choose to do this if you want to select Recording Servers, or you want to select all child items, such as cameras, from a server. Consider using this with the FlattenOutput switch unless you specifically need to select a server item instead of it's child items.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>OutputAsItem</maml:name>
          <maml:description>
            <maml:para>Output cameras as VideoOS.Platform.Item objects instead of converting them to Configuration API Camera objects. Depending on your needs, it may be more performant to use OutputAsItem. For example, if you are using a cmdlet like Get-Snapshot, you can extract the $item.FQID.ObjectId and provide that Guid in the CameraId parameter to avoid an unnecessary conversion between Item, ConfigurationItem, and back again.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RemoveDuplicates</maml:name>
          <maml:description>
            <maml:para>Automatically remove duplicate cameras from the output before outputing them. Useful when you select a folder which may have the same cameras in more than one child folder.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>SingleSelect</maml:name>
          <maml:description>
            <maml:para>The ItemPicker allows for multiple items by default. Supply this parameter to force selection of a single item.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AllowFolders</maml:name>
        <maml:description>
          <maml:para>Device groups are considered folders and are not selectable by default. To allow for selecting many items with one click, include this parameter. Consider using this with the FlattenOutput switch unless you specifically need to select a folder item instead of it's child items.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AllowServers</maml:name>
        <maml:description>
          <maml:para>Supply this switch to enable selection of servers. You might choose to do this if you want to select Recording Servers, or you want to select all child items, such as cameras, from a server. Consider using this with the FlattenOutput switch unless you specifically need to select a server item instead of it's child items.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>OutputAsItem</maml:name>
        <maml:description>
          <maml:para>Output cameras as VideoOS.Platform.Item objects instead of converting them to Configuration API Camera objects. Depending on your needs, it may be more performant to use OutputAsItem. For example, if you are using a cmdlet like Get-Snapshot, you can extract the $item.FQID.ObjectId and provide that Guid in the CameraId parameter to avoid an unnecessary conversion between Item, ConfigurationItem, and back again.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RemoveDuplicates</maml:name>
        <maml:description>
          <maml:para>Automatically remove duplicate cameras from the output before outputing them. Useful when you select a folder which may have the same cameras in more than one child folder.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>SingleSelect</maml:name>
        <maml:description>
          <maml:para>The ItemPicker allows for multiple items by default. Supply this parameter to force selection of a single item.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Title</maml:name>
        <maml:description>
          <maml:para>Specifies the text in the title-bar of the Item Picker window. The default is "Select Camera(s)".</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Select Camera(s)</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Select-Camera -AllowFolders -AllowServers -RemoveDuplicates</dev:code>
        <dev:remarks>
          <maml:para>Launch the Item Picker and allow the user to add servers or whole groups/folders. The output will be de-duplicated in the event the user-defined groups have the same camera(s) present in more than one child folder. The objects returned will be the same kind of object returned by the Get-Camera cmdlet.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Select-Camera -OutputAsItem | % { Get-Snapshot -CameraId $_.FQID.ObjectId -Live }</dev:code>
        <dev:remarks>
          <maml:para>Launch the Item Picker and use the resulting Item.FQID.ObjectId properties of the camera(s) to get a live snapshot from the Get-Snapshot cmdlet.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/select-camera/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Select-VideoOSItem</command:name>
      <command:verb>Select</command:verb>
      <command:noun>VideoOSItem</command:noun>
      <maml:description>
        <maml:para>Offers a UI dialog for selecting items, similar to the item selection interface in Management Client.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet implements the VideoOS.Platform.UI.ItemPickerUserControl in a custom form to allow the user to select one or more items of any kind using a friendly and customizable user interface.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Select-VideoOSItem</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Title</maml:name>
          <maml:description>
            <maml:para>Specifies the text in the title-bar of the Item Picker window. The default is "Select Item(s)".</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Select Item(s)</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Kind</maml:name>
          <maml:description>
            <maml:para>One or more Guids representing a type of object in Milestone. Use Get-Kind -List to see the available Kinds or use [VideoOS.Platform.Kind] to access a set of static Kind guids, such as [VideoOS.Platform.Kind]::Camera. Omitting a value means the list in the picker will be unfiltered.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
          <dev:type>
            <maml:name>Guid[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Category</maml:name>
          <maml:description>
            <maml:para>One or more [VideoOS.Platform.Admin.Category] values representing the types of items to populate in the picker, such as [VideoOS.Platform.Admin.Category]::VideoIn. Omitting a value means the list in the picker will be unfiltered.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Server</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">VideoIn</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">VideoOut</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">AudioIn</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">AudioOut</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">TriggerIn</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">TriggerOut</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Text</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Unknown</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Layout</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">Category[]</command:parameterValue>
          <dev:type>
            <maml:name>Category[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AllowFolders</maml:name>
          <maml:description>
            <maml:para>Device groups are considered folders and are not selectable by default. To allow for selecting many items with one click, include this parameter. Consider using this with the FlattenOutput switch unless you specifically need to select a folder item instead of it's child items.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AllowServers</maml:name>
          <maml:description>
            <maml:para>Supply this switch to enable selection of servers. You might choose to do this if you want to select Recording Servers, or you want to select all child items, such as cameras, from a server. Consider using this with the FlattenOutput switch unless you specifically need to select a server item instead of it's child items.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CategoryUserSelectable</maml:name>
          <maml:description>
            <maml:para>Supply this switch to enable a drop-down list in the UI for the user to filter the Category themselves.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>FlattenOutput</maml:name>
          <maml:description>
            <maml:para>When you allow groups/folders to be selectable, the result will not directly include the child items of those folders unless you supply this switch.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>HideGroupsTab</maml:name>
          <maml:description>
            <maml:para>Supply this switch to hide the Groups tab, leaving only the Server tab which shows the "SystemDefined" hierarchy.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>HideServerTab</maml:name>
          <maml:description>
            <maml:para>Supply this switch to hide the Server tab, leaving only the Groups tab which shows the "UserDefined" hierarchy.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>KindUserSelectable</maml:name>
          <maml:description>
            <maml:para>Supply this switch to enable a drop-down list in the UI for the user to filter the Kind themselves.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>SingleSelect</maml:name>
          <maml:description>
            <maml:para>The ItemPicker allows for multiple items by default. Supply this parameter to force selection of a single item.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AllowFolders</maml:name>
        <maml:description>
          <maml:para>Device groups are considered folders and are not selectable by default. To allow for selecting many items with one click, include this parameter. Consider using this with the FlattenOutput switch unless you specifically need to select a folder item instead of it's child items.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AllowServers</maml:name>
        <maml:description>
          <maml:para>Supply this switch to enable selection of servers. You might choose to do this if you want to select Recording Servers, or you want to select all child items, such as cameras, from a server. Consider using this with the FlattenOutput switch unless you specifically need to select a server item instead of it's child items.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Category</maml:name>
        <maml:description>
          <maml:para>One or more [VideoOS.Platform.Admin.Category] values representing the types of items to populate in the picker, such as [VideoOS.Platform.Admin.Category]::VideoIn. Omitting a value means the list in the picker will be unfiltered.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Category[]</command:parameterValue>
        <dev:type>
          <maml:name>Category[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>CategoryUserSelectable</maml:name>
        <maml:description>
          <maml:para>Supply this switch to enable a drop-down list in the UI for the user to filter the Category themselves.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>FlattenOutput</maml:name>
        <maml:description>
          <maml:para>When you allow groups/folders to be selectable, the result will not directly include the child items of those folders unless you supply this switch.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>HideGroupsTab</maml:name>
        <maml:description>
          <maml:para>Supply this switch to hide the Groups tab, leaving only the Server tab which shows the "SystemDefined" hierarchy.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>HideServerTab</maml:name>
        <maml:description>
          <maml:para>Supply this switch to hide the Server tab, leaving only the Groups tab which shows the "UserDefined" hierarchy.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Kind</maml:name>
        <maml:description>
          <maml:para>One or more Guids representing a type of object in Milestone. Use Get-Kind -List to see the available Kinds or use [VideoOS.Platform.Kind] to access a set of static Kind guids, such as [VideoOS.Platform.Kind]::Camera. Omitting a value means the list in the picker will be unfiltered.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Guid[]</command:parameterValue>
        <dev:type>
          <maml:name>Guid[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>KindUserSelectable</maml:name>
        <maml:description>
          <maml:para>Supply this switch to enable a drop-down list in the UI for the user to filter the Kind themselves.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>SingleSelect</maml:name>
        <maml:description>
          <maml:para>The ItemPicker allows for multiple items by default. Supply this parameter to force selection of a single item.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Title</maml:name>
        <maml:description>
          <maml:para>Specifies the text in the title-bar of the Item Picker window. The default is "Select Item(s)".</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Select Item(s)</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>PS Select-VideoOSItem -Title "Select Microphone(s)" -AllowServers -HideGroupsTab -Kind ([VideoOS.Platform.Kind]::Microphone) | % { Send-MipMessage -MessageId 'Control.StartRecordingCommand' -DestinationEndpoint $_.FQID -UseEnvironmentManager }</dev:code>
        <dev:remarks>
          <maml:para>Launch the Item Picker and hide the Groups tab, showing only the system-definied hierarchy of servers under the Server tab, and filter the items to only Microphones. For each selected Microphone, send a manual "Start Recording" message.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/select-videoositem/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-ConfigurationItemProperty</command:name>
      <command:verb>Set</command:verb>
      <command:noun>ConfigurationItemProperty</command:noun>
      <maml:description>
        <maml:para>Sets the value of a given ConfigurationItem property by key</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>A ConfigurationItem may have zero or more Property objects in the Properties array. Each property has a key name and a value. Since the Properties property on a ConfigurationItem has no string-based indexer, you are required to search the array of properties for the one with the Key you're interested in, and then set the Value property on it.</maml:para>
      <maml:para>This cmdlet is a simple wrapper which does the Where-Object for you, throws an error if the Key does not exist, and optionally passes the modified ConfigurationItem back into the pipeline.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-ConfigurationItemProperty</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>A [VideoOS.ConfigurationApi.ClientService.ConfigurationItem] with a property to be modified.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ConfigurationItem</command:parameterValue>
          <dev:type>
            <maml:name>ConfigurationItem</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Key</maml:name>
          <maml:description>
            <maml:para>A string representing the key of the property to be modified.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Value</maml:name>
          <maml:description>
            <maml:para>A string value to be used as the new value for the property named by the given key.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Pass the modified ConfigurationItem from $InputObject back into the pipeline.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>A [VideoOS.ConfigurationApi.ClientService.ConfigurationItem] with a property to be modified.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ConfigurationItem</command:parameterValue>
        <dev:type>
          <maml:name>ConfigurationItem</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Key</maml:name>
        <maml:description>
          <maml:para>A string representing the key of the property to be modified.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Pass the modified ConfigurationItem from $InputObject back into the pipeline.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Value</maml:name>
        <maml:description>
          <maml:para>A string value to be used as the new value for the property named by the given key.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-ConfigurationItem -Path / | Set-ConfigurationItemProperty -Key Description -Value 'A new description' -PassThru | Set-ConfigurationItem</dev:code>
        <dev:remarks>
          <maml:para>Gets a ConfigurationItem representing the Management Server, changes the Description property, and pushes the change to the Management Server using Set-ConfigurationItem.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-configurationitemproperty/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsBasicUser</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsBasicUser</command:noun>
      <maml:description>
        <maml:para>Sets the specifies properties on a basic user account.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Set-VmsBasicUser` is used to update the password, description, status, or password settings for the specified basic user account.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsBasicUser</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>BasicUser</maml:name>
          <maml:description>
            <maml:para>Specifies the basic user to be modified. Use `Get-VmsBasicUser` to retrieve basic user records.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">BasicUser</command:parameterValue>
          <dev:type>
            <maml:name>BasicUser</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Password</maml:name>
          <maml:description>
            <maml:para>Specifies a new password for a local Milestone basic user account. The password should be provided as a `[securestring]` but a plain text string may be provided as well.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
          <dev:type>
            <maml:name>SecureString</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Sets the description for the basic user entry.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>CanChangePassword</maml:name>
          <maml:description>
            <maml:para>If `$true`, the user is allowed to change their own password. This setting applies only to local Milestone basic users and not external basic users.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>ForcePasswordCHange</maml:name>
          <maml:description>
            <maml:para>If `$true` the user must change their password on the next login. This applies only to local Milestone basic users and not external users.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
          <maml:name>Status</maml:name>
          <maml:description>
            <maml:para>Specifies the desired status for the basic user.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Enabled</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">LockedOutByAdmin</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the basic user object should be returned to the pipeline.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>BasicUser</maml:name>
        <maml:description>
          <maml:para>Specifies the basic user to be modified. Use `Get-VmsBasicUser` to retrieve basic user records.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">BasicUser</command:parameterValue>
        <dev:type>
          <maml:name>BasicUser</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>CanChangePassword</maml:name>
        <maml:description>
          <maml:para>If `$true`, the user is allowed to change their own password. This setting applies only to local Milestone basic users and not external basic users.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Sets the description for the basic user entry.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>ForcePasswordCHange</maml:name>
        <maml:description>
          <maml:para>If `$true` the user must change their password on the next login. This applies only to local Milestone basic users and not external users.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the basic user object should be returned to the pipeline.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Password</maml:name>
        <maml:description>
          <maml:para>Specifies a new password for a local Milestone basic user account. The password should be provided as a `[securestring]` but a plain text string may be provided as well.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
        <dev:type>
          <maml:name>SecureString</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
        <maml:name>Status</maml:name>
        <maml:description>
          <maml:para>Specifies the desired status for the basic user.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.BasicUser</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.BasicUser</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsBasicUser | Set-VmsBasicUser -Status LockedOutByAdmin -Verbose</dev:code>
        <dev:remarks>
          <maml:para>Gets all basic users, including external users if present, and locks the accounts until the status is set to 'Enabled' again.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmsbasicuser/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsCamera</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsCamera</command:noun>
      <maml:description>
        <maml:para>Sets one or more property values on the specified camera or cameras.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses Milestone's Configuration API to modify properties of cameras and saves the changes to the Management Server. Most parameters represent the Milestone MIP SDK property names of the underlying camera object. However, there are a few custom parameter names including "Coordinates", "Direction", "FieldOfView" and "Depth" which accept values that are easier to understand than the values expected by the MIP SDK.</maml:para>
      <maml:para>This cmdlet supports the "-WhatIf" parameter switch. Use this to test to see what would happen and if the changes made are what you would expect to see. You may also use the "-Verbose" switch without the "-WhatIf" switch, and you will see all the changes applied to the camera(s).</maml:para>
      <maml:para>You do not need to use this cmdlet to make configuration changes to cameras. You could choose to modify the properties directly on the camera objects, and then call the ".Save()" method on the object(s) when you're ready to push those changes to the Management Server. However, this cmdlet provides an idiomatic PowerShell option to accomplish the same task with less effort.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsCamera</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Camera</maml:name>
          <maml:description>
            <maml:para>Specifies one or more Milestone Configuration API camera objects such as those returned by Get-VmsCamera.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
          <dev:type>
            <maml:name>Camera[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies a new name for the camera.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="10" aliases="none">
          <maml:name>CoverageFieldOfView</maml:name>
          <maml:description>
            <maml:para>Specifies the angle of the field of view of the camera in degrees, expressed as a value between 0 and 1. For example, a value of 0.25 represents 90 degrees and a value of 0.5 represents 180 degrees. You can produce the right value by dividing the field of view in degrees, by 360.</maml:para>
            <maml:para>Alternatively, you may choose to use the FieldOfView parameter which allows for specifying a value in degrees between 0 and 360. If the FieldOfView parameter is provided, it takes precedence over CoverageFieldOfView.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
          <dev:type>
            <maml:name>Double</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="11" aliases="none">
          <maml:name>Depth</maml:name>
          <maml:description>
            <maml:para>Specifies the depth of the field of view, either in meters, or in feet, depending on the region settings of the environment in which PowerShell is running. If PowerShell is running in a PC configured in a region of the United States, the value will be treated as a measurement in feet. In most other cases the value will be treated as a measurement of meters. To override the regional default or explicitly include the units in your script, you may use the Units parameter.</maml:para>
            <maml:para>This parameter overrides the CoverageDepth parameter if that parameter is also provided.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
          <dev:type>
            <maml:name>Double</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="12" aliases="none">
          <maml:name>CoverageDepth</maml:name>
          <maml:description>
            <maml:para>Specifies the depth of the camera's field of view in meters.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
          <dev:type>
            <maml:name>Double</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="13" aliases="none">
          <maml:name>Units</maml:name>
          <maml:description>
            <maml:para>Specifies whether the unit of measurement provided in the Depth parameter is in feet or meters. By default, the value will be interpreted based on your PowerShell environment's region settings. Set Units to Metric to explicitly specify that the Depth value represents meters. Set it to Imperial to specify that the Depth value represents feet.</maml:para>
            <maml:para>This parameter does not affect the behavior of the CoverageDepth parameter. That value is always interpreted as meters.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Metric</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Imperial</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="14" aliases="none">
          <maml:name>PrebufferEnabled</maml:name>
          <maml:description>
            <maml:para>Specifies that the pre-buffer feature should be enabled or disabled.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="15" aliases="none">
          <maml:name>PrebufferInMemory</maml:name>
          <maml:description>
            <maml:para>Specifies that the pre-buffer feature should pre-buffer to memory, or to disk. When PrebufferInMemory is set to $false, then the pre-buffer will reside on disk.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="16" aliases="none">
          <maml:name>PrebufferSeconds</maml:name>
          <maml:description>
            <maml:para>Specifies the size of the pre-buffer in seconds. The maximum size for the pre-buffer is 15 seconds when pre-buffering to memory. When pre-buffering to disk, the maximum value is 10000.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="17" aliases="none">
          <maml:name>RecordingEnabled</maml:name>
          <maml:description>
            <maml:para>Specifies whether or not recording is enabled for this camera. When enabled, recording can be triggered manually from a client application or automatically based on the configured set of rules. When disabled, the camera cannot be recorded, and any existing recordings cannot be played back.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="18" aliases="none">
          <maml:name>RecordingFramerate</maml:name>
          <maml:description>
            <maml:para>Specifies the desired recording frame rate. This applies only when the recorded stream is in MJPEG format. This setting has no impact when the recorded stream is MPEG4, H264, or H265.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="19" aliases="none">
          <maml:name>RecordKeyframesOnly</maml:name>
          <maml:description>
            <maml:para>Specifies that only key-frames should be recorded. Typically, key frames are received once per second but the value can vary widely depending on stream settings.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>ShortName</maml:name>
          <maml:description>
            <maml:para>Specifies the new short-name for the camera.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="20" aliases="none">
          <maml:name>RecordOnRelatedDevices</maml:name>
          <maml:description>
            <maml:para>Specifies whether or not related devices should be recorded whenever recording is triggered for the camera. Related devices typically include microphones, speakers and metadata associated with the camera.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="21" aliases="none">
          <maml:name>EdgeStorageEnabled</maml:name>
          <maml:description>
            <maml:para>Specifies that edge storage may or may not be used.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="22" aliases="none">
          <maml:name>EdgeStoragePlaybackEnabled</maml:name>
          <maml:description>
            <maml:para>Specifies that playback may or may not be done directly from edge storage.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="23" aliases="none">
          <maml:name>ManualRecordingTimeoutEnabled</maml:name>
          <maml:description>
            <maml:para>Specifies that the timeout used to stop a manual recording session should be enabled or disabled.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="24" aliases="none">
          <maml:name>ManualRecordingTimeoutMinutes</maml:name>
          <maml:description>
            <maml:para>Specifies the maximum time the camera can be recording due to a manual recording trigger.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies the desired camera description. This is visible in the Management Client and may be searchable in some clients or utilities.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="4" aliases="none">
          <maml:name>Enabled</maml:name>
          <maml:description>
            <maml:para>Specifies that the camera should be enabled or disabled.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="5" aliases="none">
          <maml:name>Coordinates</maml:name>
          <maml:description>
            <maml:para>Specifies GPS coordinates in a "latitude, longitude" format where latitude and longitude are positive or negative numberic values with no alphabetic characters. For example, "45.4171601197572, -122.732137977298".</maml:para>
            <maml:para>To remove the coordinates from a camera, you may set the value to $null or ''.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="6" aliases="none">
          <maml:name>GisPoint</maml:name>
          <maml:description>
            <maml:para>Specifies the GPS coordinates of the camera in a custom format. The value is accepted as a string in the format "POINT EMPTY" to "un-set" the coordinates, or "POINT (X Y [Z])" where the elevation field "Z" is optional and not usually provided, X represents the longitude, and Y represents the latitude. It's important to note that this format reverses the standard "latitude, longitude" order because it is expressed internally in Milestone as a "point" with X/Y coordinates.</maml:para>
            <maml:para>You may use the Coordinates parameter for a more user-friendly format for setting coordinates.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="7" aliases="none">
          <maml:name>Direction</maml:name>
          <maml:description>
            <maml:para>Specifies the compass orientation of the camera in degrees between 0 and 360. This parameter overrides the CoverageDirection parameter if that parameter is also provided.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
          <dev:type>
            <maml:name>Double</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="8" aliases="none">
          <maml:name>CoverageDirection</maml:name>
          <maml:description>
            <maml:para>Specifies the orientation of the camera as a 360-degree compass bearing expressed as a value between 0 and 1. For example, a value of 0 represents North while a value of 0.5 represents South, and 0.75 represents West. You can produce the right value by dividing the compass heading value, such as 270 degrees (East), by 360, for a value of 0.75.</maml:para>
            <maml:para>Alternatively, you may choose to use the Direction parameter which allows for specifying a value in degrees between 0 and 360. If the Direction parameter is provided, it takes priority over CoverageDirection.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
          <dev:type>
            <maml:name>Double</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="9" aliases="none">
          <maml:name>FieldOfView</maml:name>
          <maml:description>
            <maml:para>Specifies the field of view of the camera in degrees between 0 and 360. This parameter overrides the CoverageFieldOfView parameter if that parameter is also provided.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
          <dev:type>
            <maml:name>Double</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the modified camera object should be returned to the pipeline or caller. No output is produced by this cmdlet by default.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Camera</maml:name>
        <maml:description>
          <maml:para>Specifies one or more Milestone Configuration API camera objects such as those returned by Get-VmsCamera.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
        <dev:type>
          <maml:name>Camera[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="5" aliases="none">
        <maml:name>Coordinates</maml:name>
        <maml:description>
          <maml:para>Specifies GPS coordinates in a "latitude, longitude" format where latitude and longitude are positive or negative numberic values with no alphabetic characters. For example, "45.4171601197572, -122.732137977298".</maml:para>
          <maml:para>To remove the coordinates from a camera, you may set the value to $null or ''.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="12" aliases="none">
        <maml:name>CoverageDepth</maml:name>
        <maml:description>
          <maml:para>Specifies the depth of the camera's field of view in meters.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
        <dev:type>
          <maml:name>Double</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="8" aliases="none">
        <maml:name>CoverageDirection</maml:name>
        <maml:description>
          <maml:para>Specifies the orientation of the camera as a 360-degree compass bearing expressed as a value between 0 and 1. For example, a value of 0 represents North while a value of 0.5 represents South, and 0.75 represents West. You can produce the right value by dividing the compass heading value, such as 270 degrees (East), by 360, for a value of 0.75.</maml:para>
          <maml:para>Alternatively, you may choose to use the Direction parameter which allows for specifying a value in degrees between 0 and 360. If the Direction parameter is provided, it takes priority over CoverageDirection.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
        <dev:type>
          <maml:name>Double</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="10" aliases="none">
        <maml:name>CoverageFieldOfView</maml:name>
        <maml:description>
          <maml:para>Specifies the angle of the field of view of the camera in degrees, expressed as a value between 0 and 1. For example, a value of 0.25 represents 90 degrees and a value of 0.5 represents 180 degrees. You can produce the right value by dividing the field of view in degrees, by 360.</maml:para>
          <maml:para>Alternatively, you may choose to use the FieldOfView parameter which allows for specifying a value in degrees between 0 and 360. If the FieldOfView parameter is provided, it takes precedence over CoverageFieldOfView.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
        <dev:type>
          <maml:name>Double</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="11" aliases="none">
        <maml:name>Depth</maml:name>
        <maml:description>
          <maml:para>Specifies the depth of the field of view, either in meters, or in feet, depending on the region settings of the environment in which PowerShell is running. If PowerShell is running in a PC configured in a region of the United States, the value will be treated as a measurement in feet. In most other cases the value will be treated as a measurement of meters. To override the regional default or explicitly include the units in your script, you may use the Units parameter.</maml:para>
          <maml:para>This parameter overrides the CoverageDepth parameter if that parameter is also provided.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
        <dev:type>
          <maml:name>Double</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies the desired camera description. This is visible in the Management Client and may be searchable in some clients or utilities.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="7" aliases="none">
        <maml:name>Direction</maml:name>
        <maml:description>
          <maml:para>Specifies the compass orientation of the camera in degrees between 0 and 360. This parameter overrides the CoverageDirection parameter if that parameter is also provided.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
        <dev:type>
          <maml:name>Double</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="21" aliases="none">
        <maml:name>EdgeStorageEnabled</maml:name>
        <maml:description>
          <maml:para>Specifies that edge storage may or may not be used.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="22" aliases="none">
        <maml:name>EdgeStoragePlaybackEnabled</maml:name>
        <maml:description>
          <maml:para>Specifies that playback may or may not be done directly from edge storage.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="4" aliases="none">
        <maml:name>Enabled</maml:name>
        <maml:description>
          <maml:para>Specifies that the camera should be enabled or disabled.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="9" aliases="none">
        <maml:name>FieldOfView</maml:name>
        <maml:description>
          <maml:para>Specifies the field of view of the camera in degrees between 0 and 360. This parameter overrides the CoverageFieldOfView parameter if that parameter is also provided.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Double</command:parameterValue>
        <dev:type>
          <maml:name>Double</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="6" aliases="none">
        <maml:name>GisPoint</maml:name>
        <maml:description>
          <maml:para>Specifies the GPS coordinates of the camera in a custom format. The value is accepted as a string in the format "POINT EMPTY" to "un-set" the coordinates, or "POINT (X Y [Z])" where the elevation field "Z" is optional and not usually provided, X represents the longitude, and Y represents the latitude. It's important to note that this format reverses the standard "latitude, longitude" order because it is expressed internally in Milestone as a "point" with X/Y coordinates.</maml:para>
          <maml:para>You may use the Coordinates parameter for a more user-friendly format for setting coordinates.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="23" aliases="none">
        <maml:name>ManualRecordingTimeoutEnabled</maml:name>
        <maml:description>
          <maml:para>Specifies that the timeout used to stop a manual recording session should be enabled or disabled.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="24" aliases="none">
        <maml:name>ManualRecordingTimeoutMinutes</maml:name>
        <maml:description>
          <maml:para>Specifies the maximum time the camera can be recording due to a manual recording trigger.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies a new name for the camera.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the modified camera object should be returned to the pipeline or caller. No output is produced by this cmdlet by default.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="14" aliases="none">
        <maml:name>PrebufferEnabled</maml:name>
        <maml:description>
          <maml:para>Specifies that the pre-buffer feature should be enabled or disabled.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="15" aliases="none">
        <maml:name>PrebufferInMemory</maml:name>
        <maml:description>
          <maml:para>Specifies that the pre-buffer feature should pre-buffer to memory, or to disk. When PrebufferInMemory is set to $false, then the pre-buffer will reside on disk.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="16" aliases="none">
        <maml:name>PrebufferSeconds</maml:name>
        <maml:description>
          <maml:para>Specifies the size of the pre-buffer in seconds. The maximum size for the pre-buffer is 15 seconds when pre-buffering to memory. When pre-buffering to disk, the maximum value is 10000.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="19" aliases="none">
        <maml:name>RecordKeyframesOnly</maml:name>
        <maml:description>
          <maml:para>Specifies that only key-frames should be recorded. Typically, key frames are received once per second but the value can vary widely depending on stream settings.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="20" aliases="none">
        <maml:name>RecordOnRelatedDevices</maml:name>
        <maml:description>
          <maml:para>Specifies whether or not related devices should be recorded whenever recording is triggered for the camera. Related devices typically include microphones, speakers and metadata associated with the camera.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="17" aliases="none">
        <maml:name>RecordingEnabled</maml:name>
        <maml:description>
          <maml:para>Specifies whether or not recording is enabled for this camera. When enabled, recording can be triggered manually from a client application or automatically based on the configured set of rules. When disabled, the camera cannot be recorded, and any existing recordings cannot be played back.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="18" aliases="none">
        <maml:name>RecordingFramerate</maml:name>
        <maml:description>
          <maml:para>Specifies the desired recording frame rate. This applies only when the recorded stream is in MJPEG format. This setting has no impact when the recorded stream is MPEG4, H264, or H265.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>ShortName</maml:name>
        <maml:description>
          <maml:para>Specifies the new short-name for the camera.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="13" aliases="none">
        <maml:name>Units</maml:name>
        <maml:description>
          <maml:para>Specifies whether the unit of measurement provided in the Depth parameter is in feet or meters. By default, the value will be interpreted based on your PowerShell environment's region settings. Set Units to Metric to explicitly specify that the Depth value represents meters. Set it to Imperial to specify that the Depth value represents feet.</maml:para>
          <maml:para>This parameter does not affect the behavior of the CoverageDepth parameter. That value is always interpreted as meters.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Camera[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Boolean</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Double</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Int32</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Camera</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
Get-Hardware | Get-VmsCamera -Channel (1..63) -Verbose | Set-VmsCamera -Enabled $false
 
&lt;# OUTPUT
VERBOSE: Performing the operation "Changing Enabled from True to False" on target "Cash Register".
VERBOSE: Performing the operation "Saving changes" on target "Cash Register".
VERBOSE: Performing the operation "Changing Enabled from True to False" on target "Entrance".
VERBOSE: Performing the operation "Saving changes" on target "Entrance".
VERBOSE: Performing the operation "Changing Enabled from True to False" on target "LPR".
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>In this example, we first ensure we are logged in to the Management Server. Then we gets all enabled cameras with a channel number between 1 and 63 (camera 2 to camera 64), and disable them. You might do this if you only use the first channel on every camera, and all other channels should be disabled. In this case, channels higher than 63 would be unchanged. If you had devices with more unused channels than this, you could use "(1..511)" to select all cameras from the 2nd to the 512th channel.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$selectedCameras = Select-Camera -AllowFolders -AllowServers -RemoveDuplicates
$props = @{
    PrebufferEnabled = $true
    PrebufferSeconds = 10
    PrebufferInMemory = $true
    Verbose = $true
}
$selectedCameras | Set-VmsCamera @props
 
&lt;# OUTPUT
VERBOSE: Performing the operation "Changing PrebufferSeconds from 3 to 10" on target "Camera 1".
VERBOSE: Performing the operation "Saving changes" on target "Camera 1".
VERBOSE: Performing the operation "Changing PrebufferSeconds from 3 to 10" on target "Camera 2".
VERBOSE: Performing the operation "Saving changes" on target "Camera 2".
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>Prompts for a camera selection and accepts the selection of camera groups or recording servers, and removes duplicate entries in the results just in case the same cameras are present in multiple groups or subgroups. Cameras are retrieved from the selected group(s) recursively.</maml:para>
          <maml:para>Next, each camera is configured to use an in-memory pre-buffer of up to 10 seconds. All changes made are logged to the verbose stream so each configuration change made to each camera will be displayed in the console.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 3 --------------------------</maml:title>
        <dev:code>$vmsCameraParams = @{
    Camera = Get-VmsCamera -Name 'Office Entrance'
    Coordinates = '45.4171601197572, -122.732137977298'
    Direction = 90
    FieldOfView = 180
    Depth = 15
    Verbose = $true
}
 
Set-VmsCamera @vmsCameraParams
 
&lt;# OUTPUT
VERBOSE: Performing the operation "Changing CoverageDirection from 0.505555555555556 to 0.25" on target "Cam Lab Camera".
VERBOSE: Performing the operation "Changing CoverageFieldOfView from 0.125 to 0.5" on target "Cam Lab Camera".
VERBOSE: Performing the operation "Changing CoverageDepth from 37.49040000015 to 4.57200000001829" on target "Cam Lab Camera".
VERBOSE: Performing the operation "Saving changes" on target "Cam Lab Camera".
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>A hashtable named $vmsCameraParams is defined with all the parameters needed to change the GPS location, direction, field of view, and depth of field for the camera(s) named "Office Entrance". The hashtable is then "splatted" into the cmdlet and because we included the Verbose switch, all changes made to the camera are logged to the console.</maml:para>
          <maml:para>Note that if the settings already matched these values, there would be nothing logged to the console because no changes had to be made.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmscamera/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsCameraGeneralSetting</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsCameraGeneralSetting</command:noun>
      <maml:description>
        <maml:para>Sets one or more general setting values for a camera.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet enables one or more settings to be updated on one or more cameras with minimal effort.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsCameraGeneralSetting</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Settings</maml:name>
          <maml:description>
            <maml:para>Accepts a hashtable of settings used to update the general settings for a given camera.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Camera</maml:name>
          <maml:description>
            <maml:para>Specifies one or more camera objects such as are returned by Get-VmsCamera.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
          <dev:type>
            <maml:name>Camera[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Camera</maml:name>
        <maml:description>
          <maml:para>Specifies one or more camera objects such as are returned by Get-VmsCamera.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Camera[]</command:parameterValue>
        <dev:type>
          <maml:name>Camera[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Settings</maml:name>
        <maml:description>
          <maml:para>Accepts a hashtable of settings used to update the general settings for a given camera.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Camera[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$camera = Select-Camera -SingleSelect -Title 'Select a camera (double-click)'
$settings = @{
    BlackAndWhiteMode = 'Yes'
}
$camera | Set-VmsCameraGeneralSetting -Settings $settings -Verbose
 
&lt;# OUTPUT
VERBOSE: Performing the operation "Changing BlackAndWhiteMode from No to Yes" on target "Elevator".
VERBOSE: Performing the operation "Save changes" on target "Elevator".
#&gt;
 
$camera = Select-Camera -SingleSelect -Title 'Select a camera (double-click)'
$camera | Set-VmsCameraGeneralSetting -Settings $settings -Verbose
 
&lt;# OUTPUT (no BlackAndWhiteMode setting available)
WARNING: A general setting named 'BlackAndWhiteMode' was not found on Garage.
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>In this example we login to the Management Server, present a camera selection dialog, and then attempt to update the BlackAndWhiteMode value to "Yes" which, perhaps counter-intuitively, represents "Color" based on the ValueTypeInfo for the camera used for testing.</maml:para>
          <maml:para>We then present another camera selection dialog, where you can choose a different camera lacking a "BlackAndWhiteMode" general setting, and demonstrate the warning message you can expect when attempting to update general settings that are not present on a camera.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmscamerageneralsetting/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsCameraStream</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsCameraStream</command:noun>
      <maml:description>
        <maml:para>Sets properties of one or more video stream.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Use this cmdlet to update specific properties of a video stream such as the framerate, resolution, or codec, as well as to specify how the VMS should use the stream. For example, if a stream should no longer be used by the VMS, you may disable it. Or if you wish to enable a stream, and configure it as the new default live stream, you may enable it and indicate that it should be the LiveDefault stream from now on.</maml:para>
      <maml:para>When viewing camera settings in Management Client, there are two tabs for configuring stream settings. The "Settings" tab shows general settings that may apply to all streams or control general streaming behavior of the camera, as well as one or more video streams each with a set of properties exclusive to that stream.</maml:para>
      <maml:para>The "Streams" tab is where you can indicate which of the available streams from the camera to use, and how they should be used. By default, a single stream usage is present in the Streams tab, and it usually is associated with "Video stream 1". This stream is both the LiveDefault and the Recorded stream, and the LiveMode may be "WhenNeeded" or "Always".</maml:para>
      <maml:para>This cmdlet consolidates both the Settings tab, and the Streams tab, to simplify the configuration of all properties associated with streams and how they are used by the VMS.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsCameraStream</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Disabled</maml:name>
          <maml:description>
            <maml:para>Specifies that the stream should be disabled. This is the same as clicking the "Delete" button in the Streams tab for a camera in Management Client.</maml:para>
            <maml:para>Note that while Management Client will automatically reassign the "LiveDefault" and "Record" properties to another video stream when the deleted stream was the default live, and/or recorded stream, this cmdlet will not. If the stream to be disabled is the recorded, or default live stream, you must re-assign those responsibilities to another stream first.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Stream</maml:name>
          <maml:description>
            <maml:para>Accepts a VmsCameraStreamConfig as is returned by the Get-VmsCameraStream cmdlet.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">VmsCameraStreamConfig[]</command:parameterValue>
          <dev:type>
            <maml:name>VmsCameraStreamConfig[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Set-VmsCameraStream</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>DisplayName</maml:name>
          <maml:description>
            <maml:para>Specifies a new name to be displayed to users when selecting streams in client applications. Specifying this parameter is the same as entering an new name in the "Name" column in the Streams tab in Management Client.</maml:para>
            <maml:para>Note: Specifying a value for this parameter will automatically add the stream to the Streams tab if it is not already enabled.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>LiveDefault</maml:name>
          <maml:description>
            <maml:para>Specifies that the stream should be used by default for live viewing.</maml:para>
            <maml:para>Note: Specifying a value for this parameter will automatically add the stream to the Streams tab if it is not already enabled.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>LiveMode</maml:name>
          <maml:description>
            <maml:para>Specifies the LiveMode for the stream which can be either Always, Never, or WhenNeeded.</maml:para>
            <maml:para>A value of "Always" means the recording server will request a live stream from the camera at all times, even when that stream is not requested by a client.</maml:para>
            <maml:para>A value of "WhenNeeded" means the recording server will only request a live stream from the camera when required, such as when a client is requesting that stream, or when that stream is required by a recording rule.</maml:para>
            <maml:para>Note: Specifying a value for this parameter will automatically add the stream to the Streams tab if it is not already enabled.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Always</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Never</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">WhenNeeded</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false"></command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false"></command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Recorded</maml:name>
          <maml:description>
            <maml:para>Specifies that the stream should be recorded. Each camera in the VMS may have only one recorded stream.</maml:para>
            <maml:para>Note: Specifying a value for this parameter will automatically add the stream to the Streams tab if it is not already enabled.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Settings</maml:name>
          <maml:description>
            <maml:para>Accepts a hashtable of settings used to update the properties of a given stream. A warning will be issued if a key does not match known settings for the stream. Settings may be changed on disabled video streams without enabling them.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Stream</maml:name>
          <maml:description>
            <maml:para>Accepts a VmsCameraStreamConfig as is returned by the Get-VmsCameraStream cmdlet.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">VmsCameraStreamConfig[]</command:parameterValue>
          <dev:type>
            <maml:name>VmsCameraStreamConfig[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Disabled</maml:name>
        <maml:description>
          <maml:para>Specifies that the stream should be disabled. This is the same as clicking the "Delete" button in the Streams tab for a camera in Management Client.</maml:para>
          <maml:para>Note that while Management Client will automatically reassign the "LiveDefault" and "Record" properties to another video stream when the deleted stream was the default live, and/or recorded stream, this cmdlet will not. If the stream to be disabled is the recorded, or default live stream, you must re-assign those responsibilities to another stream first.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>DisplayName</maml:name>
        <maml:description>
          <maml:para>Specifies a new name to be displayed to users when selecting streams in client applications. Specifying this parameter is the same as entering an new name in the "Name" column in the Streams tab in Management Client.</maml:para>
          <maml:para>Note: Specifying a value for this parameter will automatically add the stream to the Streams tab if it is not already enabled.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>LiveDefault</maml:name>
        <maml:description>
          <maml:para>Specifies that the stream should be used by default for live viewing.</maml:para>
          <maml:para>Note: Specifying a value for this parameter will automatically add the stream to the Streams tab if it is not already enabled.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>LiveMode</maml:name>
        <maml:description>
          <maml:para>Specifies the LiveMode for the stream which can be either Always, Never, or WhenNeeded.</maml:para>
          <maml:para>A value of "Always" means the recording server will request a live stream from the camera at all times, even when that stream is not requested by a client.</maml:para>
          <maml:para>A value of "WhenNeeded" means the recording server will only request a live stream from the camera when required, such as when a client is requesting that stream, or when that stream is required by a recording rule.</maml:para>
          <maml:para>Note: Specifying a value for this parameter will automatically add the stream to the Streams tab if it is not already enabled.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Recorded</maml:name>
        <maml:description>
          <maml:para>Specifies that the stream should be recorded. Each camera in the VMS may have only one recorded stream.</maml:para>
          <maml:para>Note: Specifying a value for this parameter will automatically add the stream to the Streams tab if it is not already enabled.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Settings</maml:name>
        <maml:description>
          <maml:para>Accepts a hashtable of settings used to update the properties of a given stream. A warning will be issued if a key does not match known settings for the stream. Settings may be changed on disabled video streams without enabling them.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Stream</maml:name>
        <maml:description>
          <maml:para>Accepts a VmsCameraStreamConfig as is returned by the Get-VmsCameraStream cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">VmsCameraStreamConfig[]</command:parameterValue>
        <dev:type>
          <maml:name>VmsCameraStreamConfig[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VmsCameraStreamConfig</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$camera = Select-Camera -SingleSelect -Title 'Select a camera (double-click)'
$stream = $camera | Get-VmsCameraStream -LiveDefault
$settings = @{
    FPS = 10
    Codec = 'h265'
}
$stream | Set-VmsCameraStream -Settings $settings -Verbose
 
&lt;# OUTPUT
VERBOSE: Performing the operation "Changing FPS from 15 to 10" on target "Video stream 1 on Cam Lab Camera".
VERBOSE: Performing the operation "Save changes" on target "Video stream 1 on Cam Lab Camera".
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>After ensuring that we are connected to the Management Server, and prompting to select a camera, we select the default live stream for the camera. Next, a hashtable with the settings we want to apply is created, and we pass that hashtable to Set-VmsCameraStream.</maml:para>
          <maml:para>With the "-Verbose" switch present, we get detailed output which tells us exactly which changes were made. In this case, the FPS was changed from 15 to 10, but the codec wasn't changed because it was already set to h265.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>foreach ($camera in Select-Camera -AllowFolders -RemoveDuplicates) {
    $streams = $camera | Get-VmsCameraStream
 
    $streams | Where-Object LiveMode -eq 'Never' | Set-VmsCameraStream -LiveMode WhenNeeded
    $streams[0] | Set-VmsCameraStream -LiveDefault -Recorded
 
    if ($streams.Count -gt 1 ) {
        $streams[1..($streams.Count - 1)] | Set-VmsCameraStream -Disabled
    }
}</dev:code>
        <dev:remarks>
          <maml:para>Disable all except for one stream on the selected cameras. Before making the first stream the default live stream, and recorded stream, we ensure that none of the streams have a LiveMode value of "Never" by switching all enabled streams to a LiveMode value of "WhenNeeded".</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmscamerastream/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsConnectionString</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsConnectionString</command:noun>
      <maml:description>
        <maml:para>Sets the SQL connection string for the specified VMS component.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The Set-VmsConnectionString cmdlet sets the connection string value for the specified VMS component. The connection strings are stored in the registry key HKLM:\SOFTWARE\VideoOS\Server\ConnectionString.</maml:para>
      <maml:para>If there is no existing registry value matching the specified component name, one can be created by including the -Force switch. Under normal circumstances it should never be necessary to create new registry values in this way, but if, for some reason, a registry key is removed or missing, it can be recreated this way.</maml:para>
      <maml:para>After changing a SQL connection string, it will be necessary to restart the related Windows Service(s) and IIS application pools where applicable.</maml:para>
      <maml:para>IMPORTANT: It is not recommended, or supported, to manipulate data in the SQL database(s) used by Milestone XProtect products. The database schema is not documented, and may change without warning between product versions.</maml:para>
      <maml:para>However, it is occasionally useful to read or modify database contents. If you choose to do so, it is at your own risk. Please be sure to create a configuration backup from Management Client, or a SQL database backup, before making any changes.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsConnectionString</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Component</maml:name>
          <maml:description>
            <maml:para>Specifies the name of an existing connection string value, or a new connection string value to be created. Existing values include include EventServer, IDP, IncidentManager, LogServer, ManagementServer, ReportServer, and ServerService.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>ConnectionString</maml:name>
          <maml:description>
            <maml:para>A Microsoft SQL connection string.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Specifies that the connection string value should be created if it doesn't exist.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Component</maml:name>
        <maml:description>
          <maml:para>Specifies the name of an existing connection string value, or a new connection string value to be created. Existing values include include EventServer, IDP, IncidentManager, LogServer, ManagementServer, ReportServer, and ServerService.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>ConnectionString</maml:name>
        <maml:description>
          <maml:para>A Microsoft SQL connection string.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Specifies that the connection string value should be created if it doesn't exist.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Set-VmsConnectionString -Component ManagementServer -ConnectionString "Data Source=sql01;Initial Catalog=Surveillance;Integrated Security=True;Max Pool Size=1000;Encrypt=True;TrustServerCertificate=True"</dev:code>
        <dev:remarks>
          <maml:para>Sets the ManagementServer SQL connection string to use the SQL server "sql01". Under normal circumstances, all databases used by the VMS are on the same SQL server and some components should use the same connection string since they use some of the same database tables.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmsconnectionstring/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsDeviceGroup</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsDeviceGroup</command:noun>
      <maml:description>
        <maml:para>Sets the name or description property of the specified device group.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Sets the name or description property of the specified device group. This cmdlet would be used primary to rename a device group or to modify the description of the group.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsDeviceGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Group</maml:name>
          <maml:description>
            <maml:para>Specifies the device group. The value for this parameter is returned from Get-VmsDeviceGroup.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
          <dev:type>
            <maml:name>IConfigurationItem</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies a new name for the provided device group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies an optional device group description.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the modified device group should be returned after applying changes.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies an optional device group description.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Group</maml:name>
        <maml:description>
          <maml:para>Specifies the device group. The value for this parameter is returned from Get-VmsDeviceGroup.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IConfigurationItem</command:parameterValue>
        <dev:type>
          <maml:name>IConfigurationItem</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies a new name for the provided device group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the modified device group should be returned after applying changes.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.IConfigurationItem</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>$group = Get-VmsDeviceGroup 'Camera Models'
$params = @{
    Name = "Cameras by Model"
    Description = "Auto-generated device group with cameras organized by model."
}
$group | Set-VmsDeviceGroup @params -PassThru
 
&lt;# RESULT
 
DisplayName ItemCategory Path ParentPath
----------- ------------ ---- ----------
Cameras by Model Item CameraGroup[807dfed2-57a5-4416-9be9-315eb04e0f6a] /CameraGroupFolder
 
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>Renames the root camera group "Camera Models" to "Cameras by Model" and updates the description, passing the modified device group to the terminal in the end.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmsdevicegroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsHardware</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsHardware</command:noun>
      <maml:description>
        <maml:para>Updates one or more properties of a hardware device.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Set-VmsHardware` cmdlet updates one or more properties of a hardware device including name, address, username, password, description, and whether or not the hardware should be enabled.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsHardware</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Hardware</maml:name>
          <maml:description>
            <maml:para>Specifies the hardware object to modify. Use Get-VmsHardware to retrieve hardware objects.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Hardware[]</command:parameterValue>
          <dev:type>
            <maml:name>Hardware[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Enabled</maml:name>
          <maml:description>
            <maml:para>Specifies whether the hardware should be enabled or disabled. Provide `$true` to enable the hardware if it is not already enabled, and `$false` to disable the hardware if it is not already disabled.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies a new value for the hardware name.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>Address</maml:name>
          <maml:description>
            <maml:para>Specifies the new hardware address in URI format. For example: http://192.168.1.101, or http://192.168.1.101:8080 when using a non-default HTTP port.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
          <dev:type>
            <maml:name>Uri</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>UserName</maml:name>
          <maml:description>
            <maml:para>Specifies a new UserName value to use to authenticate with the hardware device.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="NewPassword">
          <maml:name>Password</maml:name>
          <maml:description>
            <maml:para>Specifies a new hardware password. If the password is supplied as a plain text string, it will automatically be converted to a `[securestring]`. Note that extra care should be used if passwords are exposed in plain text in a terminal, powershell command history, or files on disk.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
          <dev:type>
            <maml:name>SecureString</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies a new value for the hardware description.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Return the hardware object to the pipeline.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>Address</maml:name>
        <maml:description>
          <maml:para>Specifies the new hardware address in URI format. For example: http://192.168.1.101, or http://192.168.1.101:8080 when using a non-default HTTP port.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
        <dev:type>
          <maml:name>Uri</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies a new value for the hardware description.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Enabled</maml:name>
        <maml:description>
          <maml:para>Specifies whether the hardware should be enabled or disabled. Provide `$true` to enable the hardware if it is not already enabled, and `$false` to disable the hardware if it is not already disabled.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Hardware</maml:name>
        <maml:description>
          <maml:para>Specifies the hardware object to modify. Use Get-VmsHardware to retrieve hardware objects.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Hardware[]</command:parameterValue>
        <dev:type>
          <maml:name>Hardware[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies a new value for the hardware name.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Return the hardware object to the pipeline.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="NewPassword">
        <maml:name>Password</maml:name>
        <maml:description>
          <maml:para>Specifies a new hardware password. If the password is supplied as a plain text string, it will automatically be converted to a `[securestring]`. Note that extra care should be used if passwords are exposed in plain text in a terminal, powershell command history, or files on disk.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
        <dev:type>
          <maml:name>SecureString</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>UserName</maml:name>
        <maml:description>
          <maml:para>Specifies a new UserName value to use to authenticate with the hardware device.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Hardware[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Hardware</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>$password = Read-Host -Prompt 'Password for hardware' -AsSecureString
foreach ($hw in Get-VmsHardware) {
    $hw | Set-VmsHardware -Enabled $true -UserName 'vms' -Password $password -WhatIf
    foreach ($cam in $hw | Get-VmsCamera -EnableFilter All) {
        $cam | Set-VmsCamera -Enabled ($cam.Channel -eq 0) -WhatIf
    }
}</dev:code>
        <dev:remarks>
          <maml:para>In this example we prompt for a new password for the VMS to use with all hardware. Next, all hardware is enabled and the username and password is updated (in the VMS only), and we ensure only the first camera channel (channel 0) is enabled on every device. Because of the presence of the `-WhatIf` parameter, you will see what would happen without making any modifications.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>Get-VmsHardware -PipelineVariable hw | Foreach-Object {
    $hostAddress = (([uri]$hw.Address).Host -split '\.')[-1]
    $hw | Set-VmsHardware -Address "http://172.16.100.$hostAddress" -WhatIf -Verbose
}</dev:code>
        <dev:remarks>
          <maml:para>This example demonstrates one way you might update the IP addresses of all cameras in the VMS if, for example, the network subnet changed from 192.168.1.0/24 to 172.16.100.0/24, and the 4th octet for all cameras will remain the same, but the first three octets must be updated to match the new subnet.</maml:para>
          <maml:para>The example assumes all camera addresses are currently set to an IPv4 address, splits the IP address for each hardware by the "." separating the octets, and stores the last octet in the `$hostAddress` variable. The new address for all cameras will start with "http://172.16.100." followed by the value of `$hostAddress`.</maml:para>
          <maml:para>Because the `-WhatIf` parameter is present, no change will be made to the hardware settings in the VMS.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmshardware/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsHardwareDriver</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsHardwareDriver</command:noun>
      <maml:description>
        <maml:para>Sets the hardware driver to use for an existing hardware device.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Set-VmsHardwareDriver` cmdlet is used to invoke the "ReplaceHardware" configuration api method ID on a `Hardware` object. This method ID was introduced in XProtect VMS version 2023 R1, and this cmdlet is compatible only with version 2023 R1 and later.</maml:para>
      <maml:para>This cmdlet may be used to perform a "hardware replacement" which has traditionally only been possible to do through the "Replace Hardware Wizard" in the management client. In some cases you might perform this action to "refresh" an existing camera without changing the driver - for example, many cameras have a dynamic set of events available depending on settings or plugins on the camera itself. A hardware replacement procedure would force the recording server to re-discover the available features on the camera.</maml:para>
      <maml:para>You may also use this cmdlet to change the driver used for a camera. For example, you may wish to switch from an ONVIF driver to a dedicated driver. To do so, you can supply a hardware driver object, driver number, or a driver name for the `Driver` parameter.</maml:para>
      <maml:para>If a hardware replacement fails, the TargetObject property of the `ErrorRecord` will contain an object of type `ReplaceHardwareTaskInfo`. This error record can be used to help determine which hardware replacements failed when performing many operations in bulk. See the examples for reference.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsHardwareDriver</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Hardware</maml:name>
          <maml:description>
            <maml:para>Specifies one or more hardware objects returned by `Get-VmsHardware` on which to perform the hardware replacement.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Hardware[]</command:parameterValue>
          <dev:type>
            <maml:name>Hardware[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Address</maml:name>
          <maml:description>
            <maml:para>Specifies the new hardware address in URI format. For example: http://192.168.1.101</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
          <dev:type>
            <maml:name>Uri</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Credential</maml:name>
          <maml:description>
            <maml:para>Specifies new credentials to use for the specified hardware device. If the credentials have not changed, the current username and password will be used automatically.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">PSCredential</command:parameterValue>
          <dev:type>
            <maml:name>PSCredential</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>Driver</maml:name>
          <maml:description>
            <maml:para>Specifies the new HardwareDriver object to use with the hardware device, or the driver number, or the full driver name. When supplying a driver name or number, it will be automatically translated to a HardwareDriver object for ease of use.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">HardwareDriver</command:parameterValue>
          <dev:type>
            <maml:name>HardwareDriver</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>CustomDriverData</maml:name>
          <maml:description>
            <maml:para>Reserved for future use.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AllowDeletingDisabledDevices</maml:name>
          <maml:description>
            <maml:para>Specifies that if the resulting hardware configuration has fewer camera, microphone, speaker, input, output, or metadata channels than the number of enabled channels prior to hardware replacement, the disabled device channels may be deleted in order to complete the hardware replacement. If there are more enabled device channels than available in the resulting hardware configuration, the hardware replacement will not proceed.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Pass the updated hardware object back to the pipeline on a successful hardware replacement.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Address</maml:name>
        <maml:description>
          <maml:para>Specifies the new hardware address in URI format. For example: http://192.168.1.101</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
        <dev:type>
          <maml:name>Uri</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AllowDeletingDisabledDevices</maml:name>
        <maml:description>
          <maml:para>Specifies that if the resulting hardware configuration has fewer camera, microphone, speaker, input, output, or metadata channels than the number of enabled channels prior to hardware replacement, the disabled device channels may be deleted in order to complete the hardware replacement. If there are more enabled device channels than available in the resulting hardware configuration, the hardware replacement will not proceed.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Credential</maml:name>
        <maml:description>
          <maml:para>Specifies new credentials to use for the specified hardware device. If the credentials have not changed, the current username and password will be used automatically.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">PSCredential</command:parameterValue>
        <dev:type>
          <maml:name>PSCredential</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>CustomDriverData</maml:name>
        <maml:description>
          <maml:para>Reserved for future use.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>Driver</maml:name>
        <maml:description>
          <maml:para>Specifies the new HardwareDriver object to use with the hardware device, or the driver number, or the full driver name. When supplying a driver name or number, it will be automatically translated to a HardwareDriver object for ease of use.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">HardwareDriver</command:parameterValue>
        <dev:type>
          <maml:name>HardwareDriver</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Hardware</maml:name>
        <maml:description>
          <maml:para>Specifies one or more hardware objects returned by `Get-VmsHardware` on which to perform the hardware replacement.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Hardware[]</command:parameterValue>
        <dev:type>
          <maml:name>Hardware[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Pass the updated hardware object back to the pipeline on a successful hardware replacement.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Hardware[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>This cmdlet accepts one or more Hardware objects from the pipeline, or by named parameter.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Hardware</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>When invoked with the `-PassThru` switch parameter, this cmdlet returns the updated hardware object(s).</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>$hardware = Get-VmsHardware | Out-GridView -OutputMode Single -Title "Select a hardware device"
$hardware | Set-VmsHardwareDriver -PassThru -Confirm:$false -Verbose</dev:code>
        <dev:remarks>
          <maml:para>Prompts for a hardware device selection, and then performs a hardware replacement without modifying the driver. If the resulting hardware change would result in a different number of camera channels connected to the hardware, the replace will fail since "AllowDeletingDisabledDevices" was not specified.</maml:para>
          <maml:para>Since `-Confirm:$false` is present, no confirmation will be required before continuing.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$hardware = Get-VmsHardware | Out-GridView -OutputMode Single -Title "Select a hardware device"
$hardware | Set-VmsHardwareDriver -PassThru -Driver AXIS</dev:code>
        <dev:remarks>
          <maml:para>Prompts for a hardware device selection, and then performs a hardware replacement with the "AXIS" driver, driver number 806. You could also specify the integer 806 instead of "AXIS", as a custom argument transformation will take care of converting either the name or driver number to the corresponding hardware driver object as is returned by `Get-HardwareDriver`.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 3 --------------------------</maml:title>
        <dev:code>$hardware = Get-VmsHardware | Out-GridView -OutputMode Single -Title "Select a hardware device"
$hardware | Set-VmsHardwareDriver -Driver 421 -Credential (Get-Credential) -AllowDeletingDisabledDevices -WhatIf</dev:code>
        <dev:remarks>
          <maml:para>Prompts for a hardware device selection, and then informs what would happen if you attempted to set the hardware driver to driver number 421, "Universal 1 channel driver". Remove the `-WhatIf` switch to execute the hardware driver change.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 4 --------------------------</maml:title>
        <dev:code>$hardware = Get-VmsHardware | Out-GridView -OutputMode Single -Title "Select a hardware device"
$hardware | Set-VmsHardwareDriver -Driver 605 -ErrorVariable replaceHardwareErrors
foreach ($e in $replaceHardwareErrors.TargetObject) {
    $e
}</dev:code>
        <dev:remarks>
          <maml:para>Prompts for a hardware device selection, and then attempts to replace the driver with the "Axis One-click" driver. Assuming this fails, the `$replaceHardwareErrors` `ArrayList` will be populated with an `ErrorRecord`, and the `TargetObject` property of that record will be an object with the HardwareName, HardwarePath, RecorderPath, and Task properties. This information can be used to produce a report of hardware replacements that have failed and might need to be retried or performed manually.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmshardwaredriver/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsLicense</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsLicense</command:noun>
      <maml:description>
        <maml:para>Sets the Milestone XProtect VMS software license code to a new software license code.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Useful for changing the software license code. You may do this when moving from a pilot license to a production license, or when upgrading or downgrading the licensed VMS edition.</maml:para>
      <maml:para>If you're importing a new "initial license file" for the same software license code, or importing an activated software license file downloaded from My Milestone, it is recommended to use Import-VmsLicense instead.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsLicense</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path to an existing license file on disk. Typically this file has a .LIC extension.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the path to an existing license file on disk. Typically this file has a .LIC extension.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LicenseInformation</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LicenseInformation</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>Support for license management in Milestone's MIP SDK / Configuration API was introduced in version 2020 R2. If the Management Server version is earlier than 2020 R2, this function will not work.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Set-VmsLicense -Path C:\path\to\license.lic</dev:code>
        <dev:remarks>
          <maml:para>Invokes the ChangeLicense method in Configuration API to import license.lic.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmslicense/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsLoginProvider</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsLoginProvider</command:noun>
      <maml:description>
        <maml:para>Sets the specified properties of an existing external login provider.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Set-VmsLoginProvider` cmdlet is used to update the settings of an existing external login provider.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsLoginProvider</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>LoginProvider</maml:name>
          <maml:description>
            <maml:para>Specifies the login provider to be updated. If the name is provided, the login provider object will be retrieved automatically.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
          <dev:type>
            <maml:name>LoginProvider</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the display name for the external login provider. This value will be displayed in the list of authentication options in supported clients including Smart Client, Web Client, Mobile Client, and Management Client.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>ClientId</maml:name>
          <maml:description>
            <maml:para>Specifies the client id value unique to the external login provider.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>ClientSecret</maml:name>
          <maml:description>
            <maml:para>Specifies the client secret value unique to the external login provider.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
          <dev:type>
            <maml:name>SecureString</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>CallbackPath</maml:name>
          <maml:description>
            <maml:para>Specifies the path to which users will be redirected after completing the login process with the external login provider. The CallbackPath value represents the portion of the management server URI that comes after the dns name and port. The default value is '/signin-oidc' and the value is not normally changed.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
          <maml:name>Authority</maml:name>
          <maml:description>
            <maml:para>Specifies the URI for the external login provider to which VMS users will be redirected for authentication.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
          <dev:type>
            <maml:name>Uri</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
          <maml:name>UserNameClaim</maml:name>
          <maml:description>
            <maml:para>Specifies the claim name to use to generate a unique user name for the user in the VMS. See the Unique user names for external IDP users (https://doc.milestonesys.com/latest/en-US/standard_features/sf_mc/sf_systemoverview/mc_external_idpexplained.htm#Unique_user_names_for_external_IDP_users_)documentation for more information about how user names are created within the VMS.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="7" aliases="none">
          <maml:name>Scopes</maml:name>
          <maml:description>
            <maml:para>Use scopes to limit the number of claims that you get from an external IDP. If you know that the claims that are relevant for your VMS are in a specific scope, you can use the scope to limit the number of claims that you get from the external IDP.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="8" aliases="none">
          <maml:name>PromptForLogin</maml:name>
          <maml:description>
            <maml:para>Specify to the external IDP if the user should stay logged in or if a verification of the user is required. Depending on the external IDP, the verification can include a password verification or a full log-in.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="9" aliases="none">
          <maml:name>Enabled</maml:name>
          <maml:description>
            <maml:para>Specifies whether the external login provider should be enabled immediately.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the updated login provider object should be returned to the pipeline.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
        <maml:name>Authority</maml:name>
        <maml:description>
          <maml:para>Specifies the URI for the external login provider to which VMS users will be redirected for authentication.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Uri</command:parameterValue>
        <dev:type>
          <maml:name>Uri</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>CallbackPath</maml:name>
        <maml:description>
          <maml:para>Specifies the path to which users will be redirected after completing the login process with the external login provider. The CallbackPath value represents the portion of the management server URI that comes after the dns name and port. The default value is '/signin-oidc' and the value is not normally changed.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>ClientId</maml:name>
        <maml:description>
          <maml:para>Specifies the client id value unique to the external login provider.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>ClientSecret</maml:name>
        <maml:description>
          <maml:para>Specifies the client secret value unique to the external login provider.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">SecureString</command:parameterValue>
        <dev:type>
          <maml:name>SecureString</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="9" aliases="none">
        <maml:name>Enabled</maml:name>
        <maml:description>
          <maml:para>Specifies whether the external login provider should be enabled immediately.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>LoginProvider</maml:name>
        <maml:description>
          <maml:para>Specifies the login provider to be updated. If the name is provided, the login provider object will be retrieved automatically.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">LoginProvider</command:parameterValue>
        <dev:type>
          <maml:name>LoginProvider</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the display name for the external login provider. This value will be displayed in the list of authentication options in supported clients including Smart Client, Web Client, Mobile Client, and Management Client.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the updated login provider object should be returned to the pipeline.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="8" aliases="none">
        <maml:name>PromptForLogin</maml:name>
        <maml:description>
          <maml:para>Specify to the external IDP if the user should stay logged in or if a verification of the user is required. Depending on the external IDP, the verification can include a password verification or a full log-in.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="7" aliases="none">
        <maml:name>Scopes</maml:name>
        <maml:description>
          <maml:para>Use scopes to limit the number of claims that you get from an external IDP. If you know that the claims that are relevant for your VMS are in a specific scope, you can use the scope to limit the number of claims that you get from the external IDP.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
        <maml:name>UserNameClaim</maml:name>
        <maml:description>
          <maml:para>Specifies the claim name to use to generate a unique user name for the user in the VMS. See the Unique user names for external IDP users (https://doc.milestonesys.com/latest/en-US/standard_features/sf_mc/sf_systemoverview/mc_external_idpexplained.htm#Unique_user_names_for_external_IDP_users_)documentation for more information about how user names are created within the VMS.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LoginProvider</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.LoginProvider</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Set-VmsLoginProvider -LoginProvider Auth0 -ClientSecret (Read-Host -Prompt 'Secret' -AsSecureString) -Verbose</dev:code>
        <dev:remarks>
          <maml:para>If a login provider named 'Auth0' is present, the secret will be requested, and then updated in the VMS configuration.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmsloginprovider/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsLoginProviderClaim</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsLoginProviderClaim</command:noun>
      <maml:description>
        <maml:para>Sets the name or display name of an existing registered claim on a login provider.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Set-VmsLoginProviderClaim` cmdlet updates the name, or display name of a claim registered on the specific login provider.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsLoginProviderClaim</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Claim</maml:name>
          <maml:description>
            <maml:para>Specifies the registered claim to be updated.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RegisteredClaim</command:parameterValue>
          <dev:type>
            <maml:name>RegisteredClaim</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies the new name for the provided registered claim.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>DisplayName</maml:name>
          <maml:description>
            <maml:para>Specifies the desired display name for the specified claim name.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the updated registered claim record should be returned to the pipeline.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Claim</maml:name>
        <maml:description>
          <maml:para>Specifies the registered claim to be updated.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RegisteredClaim</command:parameterValue>
        <dev:type>
          <maml:name>RegisteredClaim</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>DisplayName</maml:name>
        <maml:description>
          <maml:para>Specifies the desired display name for the specified claim name.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies the new name for the provided registered claim.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the updated registered claim record should be returned to the pipeline.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.RegisteredClaim</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.RegisteredClaim</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-VmsLoginProviderClaim -LoginProvider 'Auth0' -Name 'vms_role' | Set-VmsLoginProviderClaim -DisplayName 'Roles' -Verbose</dev:code>
        <dev:remarks>
          <maml:para>Sets the display name for the 'vms_role' claim on the 'Auth0' external login provider to 'Roles'.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmsloginproviderclaim/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsRecordingServer</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsRecordingServer</command:noun>
      <maml:description>
        <maml:para>Sets properties of one or more recording servers.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Sets properties of one or more recording servers.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsRecordingServer</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="Recorder">
          <maml:name>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Specifies the recording server to modify, either by object or by name.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
          <dev:type>
            <maml:name>RecordingServer[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies an optional description for the recording server.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>MulticastServerAddress</maml:name>
          <maml:description>
            <maml:para>Specifies a multicast server address to use when clients should receive live video from the recording server using multicast instead of unicast.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies a new display name.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Return the modified object to the caller or the pipeline.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>PublicAccessEnabled</maml:name>
          <maml:description>
            <maml:para>Specifies that the recording server should advertise a different address for users connecting from any network not considered by the management server to be "local". This means any client logging in to the management server with a source IP address (from the management server's perspective) that does not fall within the subnet of one of the management server's network interfaces, or within one of the local network ranges defined in Management Client under Tools &gt; Options &gt; Network, will be considered "external" and they will be provided with the "public" address for all recording servers instead of the "Local web server address".</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>PublicWebserverHostName</maml:name>
          <maml:description>
            <maml:para>Specifies the public hostname, IP, or DNS name for clients to use when connecting from a "non-local" network IP.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PublicWebserverPort</maml:name>
          <maml:description>
            <maml:para>Specifies the public TCP port for clients to use when connecting from a "non-local" network IP.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>ShutdownOnStorageFailure</maml:name>
          <maml:description>
            <maml:para>Specifies that the recording server should shut down when there is a storage failure resulting in an inability to record. This may be important when you have a failover recording server that should take over during such an event.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies an optional description for the recording server.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>MulticastServerAddress</maml:name>
        <maml:description>
          <maml:para>Specifies a multicast server address to use when clients should receive live video from the recording server using multicast instead of unicast.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies a new display name.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Return the modified object to the caller or the pipeline.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>PublicAccessEnabled</maml:name>
        <maml:description>
          <maml:para>Specifies that the recording server should advertise a different address for users connecting from any network not considered by the management server to be "local". This means any client logging in to the management server with a source IP address (from the management server's perspective) that does not fall within the subnet of one of the management server's network interfaces, or within one of the local network ranges defined in Management Client under Tools &gt; Options &gt; Network, will be considered "external" and they will be provided with the "public" address for all recording servers instead of the "Local web server address".</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>PublicWebserverHostName</maml:name>
        <maml:description>
          <maml:para>Specifies the public hostname, IP, or DNS name for clients to use when connecting from a "non-local" network IP.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PublicWebserverPort</maml:name>
        <maml:description>
          <maml:para>Specifies the public TCP port for clients to use when connecting from a "non-local" network IP.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="Recorder">
        <maml:name>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Specifies the recording server to modify, either by object or by name.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
        <dev:type>
          <maml:name>RecordingServer[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>ShutdownOnStorageFailure</maml:name>
        <maml:description>
          <maml:para>Specifies that the recording server should shut down when there is a storage failure resulting in an inability to record. This may be important when you have a failover recording server that should take over during such an event.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.RecordingServer[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.RecordingServer</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>$recorder | Set-VmsRecordingServer -PublicAccessEnabled $true -PublicWebserverPort 7563 -PublicWebserverHostName demo.milestonesys.com</dev:code>
        <dev:remarks>
          <maml:para>Enables public access for a recording server, and sets the public hostname/fqdn and port.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmsrecordingserver/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsRole</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsRole</command:noun>
      <maml:description>
        <maml:para>Sets properties of an existing VMS role.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Sets properties of an existing VMS role. Permissions for roles are modified using other cmdlets such as `Set-VmsRoleOverallSecurity`.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsRole</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies the role object, or the name of the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
          <dev:type>
            <maml:name>Role[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies a new name for the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies a new description for the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="RoleClientLogOnTimeProfile">
          <maml:name>ClientLogOnTimeProfile</maml:name>
          <maml:description>
            <maml:para>Specifies the time profile within which members of this role are allowed to logon.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">TimeProfile</command:parameterValue>
          <dev:type>
            <maml:name>TimeProfile</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="4" aliases="RoleDefaultTimeProfile">
          <maml:name>DefaultTimeProfile</maml:name>
          <maml:description>
            <maml:para>Specifies the default time profile to use for permissions such as when members are allowed to play back recordings.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">TimeProfile</command:parameterValue>
          <dev:type>
            <maml:name>TimeProfile</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>AllowMobileClientLogOn</maml:name>
          <maml:description>
            <maml:para>Specifies that the role is allowed to logon using a mobile client.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>AllowSmartClientLogOn</maml:name>
          <maml:description>
            <maml:para>Specifies that the role is allowed to logon with Smart Client.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>AllowWebClientLogOn</maml:name>
          <maml:description>
            <maml:para>Specifies that the role is allowed to logon with a web browser.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>DualAuthorizationRequired</maml:name>
          <maml:description>
            <maml:para>Specifies that members of the role require dual authorization.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>MakeUsersAnonymousDuringPTZSession</maml:name>
          <maml:description>
            <maml:para>Specifies that PTZ operations should not be attributed to a specific user for members of the role.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the modified role should be returned.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>AllowMobileClientLogOn</maml:name>
        <maml:description>
          <maml:para>Specifies that the role is allowed to logon using a mobile client.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>AllowSmartClientLogOn</maml:name>
        <maml:description>
          <maml:para>Specifies that the role is allowed to logon with Smart Client.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>AllowWebClientLogOn</maml:name>
        <maml:description>
          <maml:para>Specifies that the role is allowed to logon with a web browser.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="RoleClientLogOnTimeProfile">
        <maml:name>ClientLogOnTimeProfile</maml:name>
        <maml:description>
          <maml:para>Specifies the time profile within which members of this role are allowed to logon.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">TimeProfile</command:parameterValue>
        <dev:type>
          <maml:name>TimeProfile</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="4" aliases="RoleDefaultTimeProfile">
        <maml:name>DefaultTimeProfile</maml:name>
        <maml:description>
          <maml:para>Specifies the default time profile to use for permissions such as when members are allowed to play back recordings.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">TimeProfile</command:parameterValue>
        <dev:type>
          <maml:name>TimeProfile</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies a new description for the role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>DualAuthorizationRequired</maml:name>
        <maml:description>
          <maml:para>Specifies that members of the role require dual authorization.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>MakeUsersAnonymousDuringPTZSession</maml:name>
        <maml:description>
          <maml:para>Specifies that PTZ operations should not be attributed to a specific user for members of the role.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies a new name for the role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the modified role should be returned.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>Role</maml:name>
        <maml:description>
          <maml:para>Specifies the role object, or the name of the role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role[]</command:parameterValue>
        <dev:type>
          <maml:name>Role[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula -Force -DisableAutoLogin -PassThru
Set-VmsRole -Role "Operators" -Name "Security" -DualAuthorizationRequired -AllowWebClientLogOn:$false</dev:code>
        <dev:remarks>
          <maml:para>Prompts the user to login to a management server, then changes the "Operators" role name to "Security" and enables dual authorization on the role, if it was not already enabled. It also removes permission to logon with the web client if the privilege had previously been granted.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmsrole/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsRoleOverallSecurity</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsRoleOverallSecurity</command:noun>
      <maml:description>
        <maml:para>Sets the overall security permissions for the given Role and SecurityNamespace.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Sets the overall security permissions for the given Role and SecurityNamespace. the easiest way to build a script to automate permission updates is to retrieve the permissions of a role that has already been defined, and inspect the names of the permissions first.</maml:para>
      <maml:para>The hashtable provided for the "Permissions" parameter can contain just one permission, or all available permissions. Only the permissions specified in the hashtable will be updated on the role.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsRoleOverallSecurity</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
          <maml:name>Role</maml:name>
          <maml:description>
            <maml:para>Specifies the role object, or the name of the role.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Role</command:parameterValue>
          <dev:type>
            <maml:name>Role</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>SecurityNamespace</maml:name>
          <maml:description>
            <maml:para>Specifies the name or ID of an existing security namespace.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>Permissions</maml:name>
          <maml:description>
            <maml:para>Specifies a hashtable where the keys match one or more permissions associated with the specifies SecurityNamespace, and the values are one of "Allow", "Deny", or "None".</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>Permissions</maml:name>
        <maml:description>
          <maml:para>Specifies a hashtable where the keys match one or more permissions associated with the specifies SecurityNamespace, and the values are one of "Allow", "Deny", or "None".</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RoleName">
        <maml:name>Role</maml:name>
        <maml:description>
          <maml:para>Specifies the role object, or the name of the role.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Role</command:parameterValue>
        <dev:type>
          <maml:name>Role</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>SecurityNamespace</maml:name>
        <maml:description>
          <maml:para>Specifies the name or ID of an existing security namespace.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.Role</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>$permissions = Get-VmsRoleOverallSecurity -Role 'Operators' -SecurityNamespace Cameras
$permissions.GENERIC_READ = 'Allow'
$permissions.VIEW_LIVE = 'Allow'
$permissions.PLAYBACK = 'Allow'
$permissions.EXPORT = 'Deny'
Set-VmsRoleOverallSecurity -Permissions $permissions</dev:code>
        <dev:remarks>
          <maml:para>Gets the "Cameras" overall security permissions for the role "Operators", and grants permission to read, view live, and playback all cameras, but denies permission to export video.</maml:para>
          <maml:para>Since the output of Get-VmsRoleOverallSecurity is a hashtable which includes the "Path" value of the Role, and the SecurityNamespace ID, the Set-VmsRoleOverallSecurity cmdlet does not need explicit values for the Role and SecurityNamespace parameters.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmsroleoverallsecurity/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsSiteInfo</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsSiteInfo</command:noun>
      <maml:description>
        <maml:para>Sets the value for one Site Information property such as name, address, or administrator contact number.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet is used to add or update values displayed in the Management Client under Site / Basics / Site Information, just under the License Information node.</maml:para>
      <maml:para>There are several predefined property names with keys like "address.Name", and the VMS allows you to add one or more values for the same field. For example, you could add multiple entries, or lines, for address, or phone number. Each line can be up to 256 characters in length.</maml:para>
      <maml:para>The lines are returned by Get-VmsSiteInfo and displayed in the Management Client in the order they were created. If you want to add a second value for a given property, you can include the `-Append` switch (see the examples.)</maml:para>
      <maml:para>In order for this command to remain flexible in the event the available fields change in the future, the parameters are simplified and accept a property name, and a value. The valid property names are available with tab or list completion, so you may type "-Property " and then press tab, or CTRL+Space, and the supported property names will be displayed. The currently available values as of XProtect VMS version 2022 R2 are...</maml:para>
      <maml:para>address.Name, address.Address, address.State, address.Phone, address.Country, address.ZipCode, admin.Name, admin.Address, admin.Phone, additional.AdditionalInfo</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsSiteInfo</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>Property</maml:name>
          <maml:description>
            <maml:para>Specifies the property name to add or update. The available property names are dynamically discovered from the Management Server and provided as argument completions using tab, or CTRL+Space.</maml:para>
            <maml:para>The values as of 2022 R2 are: address.Name, address.Address, address.State, address.Phone, address.Country, address.ZipCode, admin.Name, admin.Address, admin.Phone, additional.AdditionalInfo</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="none">
          <maml:name>Value</maml:name>
          <maml:description>
            <maml:para>Specifies the value for the given property name. The value can be any string up to 256 characters in length.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Append</maml:name>
          <maml:description>
            <maml:para>Specifies that if a value already exists for the specified Property, an additional line should be added for the same property name. This allows you to have two Address lines, and more than one phone number associated with a site.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Append</maml:name>
        <maml:description>
          <maml:para>Specifies that if a value already exists for the specified Property, an additional line should be added for the same property name. This allows you to have two Address lines, and more than one phone number associated with a site.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>Property</maml:name>
        <maml:description>
          <maml:para>Specifies the property name to add or update. The available property names are dynamically discovered from the Management Server and provided as argument completions using tab, or CTRL+Space.</maml:para>
          <maml:para>The values as of 2022 R2 are: address.Name, address.Address, address.State, address.Phone, address.Country, address.ZipCode, admin.Name, admin.Address, admin.Phone, additional.AdditionalInfo</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="none">
        <maml:name>Value</maml:name>
        <maml:description>
          <maml:para>Specifies the value for the given property name. The value can be any string up to 256 characters in length.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
Clear-VmsSiteInfo -Verbose
Set-VmsSiteInfo -Property address.Name -Value 'Milestone Systems' -Verbose
Set-VmsSiteInfo -Property address.Address -Value '5300 Meadows Rd STE 400' -Verbose
Set-VmsSiteInfo -Property address.Address -Value 'Lake Oswego, OR 97035' -Append -Verbose
Set-VmsSiteInfo -Property address.Country -Value 'United States' -Verbose
Set-VmsSiteInfo -Property address.Phone -Value '+1 503-350-1100' -Verbose</dev:code>
        <dev:remarks>
          <maml:para>After connecting to the Management Server, we clear the site information and set the name, address, and phone number for the site. Notice that instead of using the address.State and address.ZipCode fields, we chose to enter the city, state and zipcode as a second address.Address property by including the -Append switch. Without the -Append switch, the second address.Address value would have replaced the first.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code># Export current site's site info to csv
Get-VmsSiteInfo | Export-Csv ~\Desktop\siteinfo.csv
 
# Update the site info on a different site to be identical
Clear-VmsSiteInfo -Verbose
Import-Csv ~\Desktop\siteinfo.csv | Set-VmsSiteInfo -Append -Verbose</dev:code>
        <dev:remarks>
          <maml:para>This example shows how you might export the site information, and then import that information on a different site. On the new site, we first use Clear-VmsSiteInfo to ensure that we don't add new data to existing site info properties. Then we import the rows from the csv file which as the columns "DisplayName", "Property", and "Value" by default because that is the name of the properties returned by Get-VmsSiteInfo.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmssiteinfo/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsView</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsView</command:noun>
      <maml:description>
        <maml:para>Sets properties of an existing XProtect Smart Client view.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Sets properties of an existing view.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsView</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>View</maml:name>
          <maml:description>
            <maml:para>Specifies the view to be updated. It is recommended to use Get-VmsView to retrieve a value for this parameter.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">View</command:parameterValue>
          <dev:type>
            <maml:name>View</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies a new name of the view.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies a new description for the view.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>Shortcut</maml:name>
          <maml:description>
            <maml:para>Specifies a numeric shortcut for accessing the view in XProtect Smart Client using the keyboard shortcut "* [shortcut] ENTER".</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>ViewItemDefinition</maml:name>
          <maml:description>
            <maml:para>Specifies an array of strings containing the ViewItemDefinitionXml content to place in the respective view item within the view. It is recommended to inspect existing views using Get-VmsView to determine the necessary XML schema for the view item definitions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the modified view should be passed through to the pipeline or out to the terminal.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies a new description for the view.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies a new name of the view.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the modified view should be passed through to the pipeline or out to the terminal.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>Shortcut</maml:name>
        <maml:description>
          <maml:para>Specifies a numeric shortcut for accessing the view in XProtect Smart Client using the keyboard shortcut "* [shortcut] ENTER".</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>View</maml:name>
        <maml:description>
          <maml:para>Specifies the view to be updated. It is recommended to use Get-VmsView to retrieve a value for this parameter.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">View</command:parameterValue>
        <dev:type>
          <maml:name>View</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>ViewItemDefinition</maml:name>
        <maml:description>
          <maml:para>Specifies an array of strings containing the ViewItemDefinitionXml content to place in the respective view item within the view. It is recommended to inspect existing views using Get-VmsView to determine the necessary XML schema for the view item definitions.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.View</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.View</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
foreach ($view in Get-VmsView) {
    $updateView = $false
    foreach ($viewItem in $view.ViewItemChildItems) {
        $xml = [xml]$viewItem.ViewItemDefinitionXml
        if ($xml.viewitem.type -ne 'VideoOS.RemoteClient.Application.Data.ContentTypes.CameraContentType.CameraViewItem, VideoOS.RemoteClient.Application') {
            continue
        }
        $attribNode = $xml.viewitem.iteminfo.Attributes['imagequality']
        if ($null -ne $attribNode -and $attribNode.Value -ne '100') {
            $attribNode.Value = '100'
            $updateView = $true
        }
        $propNode = $xml.viewitem.properties.property | Where-Object name -eq 'imagequality'
        if ($null -ne $propNode -and $propNode.Value -ne '100') {
            $propNode.Value = '100'
            $updateView = $true
        }
        $viewItem.ViewItemDefinitionXml = $xml.OuterXml
    }
 
    if ($updateView) {
        $view | Set-VmsView -ViewItemDefinition $view.ViewItemChildItems.ViewItemDefinitionXml -Verbose
    }
}</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we enumerate through all views in all public view groups (and the current user's private view group) recursively. If any views are found with one or more view items with an image quality other than "Full", the quality is reset to 100 or "Full" and the view is updated.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmsview/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsViewGroup</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsViewGroup</command:noun>
      <maml:description>
        <maml:para>Sets properties of an existing XProtect Smart Client view group.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This command is used to update the name or description of any top-level or child view group. Note that the description is currently only displayed in Management Client for top-level view groups. The descriptions of nested child view groups are not used by XProtect Smart Client.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsViewGroup</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>ViewGroup</maml:name>
          <maml:description>
            <maml:para>The view group to be updated. Typically retrieved using Get-VmsViewGroup.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
          <dev:type>
            <maml:name>ViewGroup</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>Specifies a new name for the view group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>Specifies a new description for the view group.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the modified view group should be returned to the pipeline.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>Specifies a new description for the view group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>Specifies a new name for the view group.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the modified view group should be returned to the pipeline.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>ViewGroup</maml:name>
        <maml:description>
          <maml:para>The view group to be updated. Typically retrieved using Get-VmsViewGroup.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ViewGroup</command:parameterValue>
        <dev:type>
          <maml:name>ViewGroup</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VideoOS.Platform.ConfigurationItems.ViewGroup</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$viewGroup = New-VmsViewGroup -Name 'MilestonePSTools Example' -Force
$viewGroup | Set-VmsViewGroup -Name 'Example 1' -PassThru
$viewGroup | Remove-VmsViewGroup</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we create a view group to test with. On the third line, the view group is renamed and thanks to the -PassThru switch, we see the updated view group properties in the terminal.</maml:para>
          <maml:para>Finally, we clean up by removing the newly created view group.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmsviewgroup/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-VmsViewGroupAcl</command:name>
      <command:verb>Set</command:verb>
      <command:noun>VmsViewGroupAcl</command:noun>
      <maml:description>
        <maml:para>Sets the security permissions for one or more XProtect Smart Client view groups.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The permissions for a role on a given view group can be retrieved using the `Get-VmsViewGroupAcl` command. After modifying the SecurityAttributes property of the VmsViewGroupAcl object (see examples), you can pass the ACL to this command to push the changes to the Management Server.</maml:para>
      <maml:para>"GENERIC_READ" enables the right to see the view group in the clients, Management Client, or through MIP integrations such as MilestonePSTools.</maml:para>
      <maml:para>"GENERIC_WRITE" enables the right to edit properties of view groups in Management Client, or through MIP integrations such as MilestonePSTools.</maml:para>
      <maml:para>"DELETE" enables the right to delete view groups in Management Client, or through MIP integrations such as MilestonePSTools.</maml:para>
      <maml:para>"OPERATE" enables the right to modify view groups in XProtect Smart Client such as to create and delete subgroups and views.</maml:para>
      <maml:para>Note: Permissions on private view groups can not be modified.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-VmsViewGroupAcl</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>ViewGroupAcl</maml:name>
          <maml:description>
            <maml:para>The modified object returned from calling Get-VmsViewGroupAcl.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">VmsViewGroupAcl[]</command:parameterValue>
          <dev:type>
            <maml:name>VmsViewGroupAcl[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>ViewGroupAcl</maml:name>
        <maml:description>
          <maml:para>The modified object returned from calling Get-VmsViewGroupAcl.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">VmsViewGroupAcl[]</command:parameterValue>
        <dev:type>
          <maml:name>VmsViewGroupAcl[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -ShowDialog -AcceptEula
$role = Get-VmsRole -Name 'MilestonePSTools' -ErrorAction Ignore
if ($null -eq $role) {
    $role = New-VmsRole -Name 'MilestonePSTools'
}
$viewGroup = New-VmsViewGroup -Name 'MilestonePSTools' -Force
$acl = $viewGroup | Get-VmsViewGroupAcl -Role $role
foreach ($key in @($acl.SecurityAttributes.Keys)) {
    $acl.SecurityAttributes[$key] = 'True'
}
$acl | Set-VmsViewGroupAcl -Verbose
 
&lt;# OUTPUT
  VERBOSE: Performing the operation "Updating security permissions for role MilestonePSTools" on target "View group "MilestonePSTools"".
  VERBOSE: Performing the operation "Changing OPERATE from False to True" on target "View group "MilestonePSTools"".
  VERBOSE: Performing the operation "Changing GENERIC_READ from False to True" on target "View group "MilestonePSTools"".
  VERBOSE: Performing the operation "Changing DELETE from False to True" on target "View group "MilestonePSTools"".
  VERBOSE: Performing the operation "Changing GENERIC_WRITE from False to True" on target "View group "MilestonePSTools"".
  VERBOSE: Performing the operation "Saving security permission changes for role MilestonePSTools" on target "View group "MilestonePSTools"".
#&gt;</dev:code>
        <dev:remarks>
          <maml:para>After ensuring there is an open connection to the Management Server, we retrieve a role named "MilestonePSTools" or create one if it doesn't exist. Then we create a new view group with the same name. If it already exists, no changes are made and we return the existing view group. Next, we get the ACL for the MilestonePSTools view group and the matching role, and ensure all security attributes are set to 'True' before updating the permissions for the view group on the Management Server.</maml:para>
          <maml:para>With verbose output, we can see each modification made, if any. If no changes need to be made, you will see only the "Updating securiy permissions..." message.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>$role = Get-VmsRole -Name 'MilestonePSTools' -ErrorAction Ignore
if ($null -eq $role) {
    $role = New-VmsRole -Name 'MilestonePSTools'
}
foreach ($viewGroup in Get-VmsViewGroup) {
    if ($viewGroup.DisplayName -eq 'Private') {
        # We can not modify private view group permissions
        continue
    }
    $acl = $viewGroup | Get-VmsViewGroupAcl -Role $role
    $acl.SecurityAttributes.GENERIC_READ = 'True'
    $acl.SecurityAttributes.OPERATE = 'True'
    $acl.SecurityAttributes.GENERIC_WRITE = 'False'
    $acl.SecurityAttributes.DELETE = 'False'
    $acl | Set-VmsViewGroupAcl -Verbose
}</dev:code>
        <dev:remarks>
          <maml:para>In this example we get, or create a role named "MilestonePSTools", and give the role permission to see and modify the contents of all view groups in XProtect Smart Client. At the same time, we ensure the role cannot rename or delete the top-level view group.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-vmsviewgroupacl/</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>View Group Permissions</maml:linkText>
        <maml:uri>https://doc.milestonesys.com/latest/en-us/standard_features/sf_mc/sf_ui/mc_roles_security.htm#ViewGrouptabroles</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-XProtectCertificate</command:name>
      <command:verb>Set</command:verb>
      <command:noun>XProtectCertificate</command:noun>
      <maml:description>
        <maml:para>Sets the certificate to use for a given Milestone XProtect VMS service</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Sets the certificate to use for a given Milestone XProtect VMS service. Compatible Milestone components include XProtect Management Server, Recording Server, and Mobile Server.</maml:para>
      <maml:para>The Milestone Server Configurator CLI is used to apply the certificate, and CLI support was introduced in version 2020 R3. If you're running an older version of Milestone XProtect software, you must upgrade to at least version 2020 R3 to use this function.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-XProtectCertificate</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Disable</maml:name>
          <maml:description>
            <maml:para>Specifies that encryption for the specified Milestone XProtect service should be disabled</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Specifies that the Server Configurator process should be terminated if it's currently running</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ServerConfiguratorPath</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the Milestone Server Configurator executable. The default location is C:\Program Files\Milestone\Server Configurator\ServerConfigurator.exe</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>C:\Program Files\Milestone\Server Configurator\ServerConfigurator.exe</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>VmsComponent</maml:name>
          <maml:description>
            <maml:para>Specifies the Milestone component on which to update the certificate - Server: Applies to communication between Management Server and Recording Server, as well as client connections to the HTTPS port for the Management Server.</maml:para>
            <maml:para>- StreamingMedia: Applies to all connections to Recording Servers.</maml:para>
            <maml:para>Typically on port 7563. - MobileServer: Applies to HTTPS connections to the Milestone Mobile Server.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Server</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">StreamingMedia</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">MobileServer</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">EventServer</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Set-XProtectCertificate</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Specifies that the Server Configurator process should be terminated if it's currently running</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RemoveOldCert</maml:name>
          <maml:description>
            <maml:para>Specifies that all certificates issued to</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ServerConfiguratorPath</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the Milestone Server Configurator executable. The default location is C:\Program Files\Milestone\Server Configurator\ServerConfigurator.exe</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>C:\Program Files\Milestone\Server Configurator\ServerConfigurator.exe</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Thumbprint</maml:name>
          <maml:description>
            <maml:para>Specifies the thumbprint of the certificate to apply to Milestone XProtect service</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>UserName</maml:name>
          <maml:description>
            <maml:para>Specifies the Windows user account for which read access to the private key is required</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>VmsComponent</maml:name>
          <maml:description>
            <maml:para>Specifies the Milestone component on which to update the certificate - Server: Applies to communication between Management Server and Recording Server, as well as client connections to the HTTPS port for the Management Server.</maml:para>
            <maml:para>- StreamingMedia: Applies to all connections to Recording Servers.</maml:para>
            <maml:para>Typically on port 7563. - MobileServer: Applies to HTTPS connections to the Milestone Mobile Server.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Server</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">StreamingMedia</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">MobileServer</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">EventServer</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Disable</maml:name>
        <maml:description>
          <maml:para>Specifies that encryption for the specified Milestone XProtect service should be disabled</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Specifies that the Server Configurator process should be terminated if it's currently running</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RemoveOldCert</maml:name>
        <maml:description>
          <maml:para>Specifies that all certificates issued to</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ServerConfiguratorPath</maml:name>
        <maml:description>
          <maml:para>Specifies the path to the Milestone Server Configurator executable. The default location is C:\Program Files\Milestone\Server Configurator\ServerConfigurator.exe</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>C:\Program Files\Milestone\Server Configurator\ServerConfigurator.exe</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Thumbprint</maml:name>
        <maml:description>
          <maml:para>Specifies the thumbprint of the certificate to apply to Milestone XProtect service</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>UserName</maml:name>
        <maml:description>
          <maml:para>Specifies the Windows user account for which read access to the private key is required</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>VmsComponent</maml:name>
        <maml:description>
          <maml:para>Specifies the Milestone component on which to update the certificate - Server: Applies to communication between Management Server and Recording Server, as well as client connections to the HTTPS port for the Management Server.</maml:para>
          <maml:para>- StreamingMedia: Applies to all connections to Recording Servers.</maml:para>
          <maml:para>Typically on port 7563. - MobileServer: Applies to HTTPS connections to the Milestone Mobile Server.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para>Use the Verbose switch to see the command-line arguments provided to the Server Configurator utility.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Set-XProtectCertificate -VmsComponent MobileServer -Thumbprint $thumbprint -RemoveOldCert -Force</dev:code>
        <dev:remarks>
          <maml:para>Sets the Milestone Mobile Server to use the certificate with thumbprint matching the string in the $thumbprint variable and if successfull, it removes any other certificates with a matching subject name from the Cert:\LocalMachine\My certificate store. Since the Force switch is provided, the Server Configurator will be closed if it's currently open.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Set-XProtectCertificate -VmsComponent MobileServer -Disable -Force</dev:code>
        <dev:remarks>
          <maml:para>Kills the Server Configurator process if it's currently running, then disables encryption for the Milestone Mobile Server.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/set-xprotectcertificate/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Split-VmsDeviceGroupPath</command:name>
      <command:verb>Split</command:verb>
      <command:noun>VmsDeviceGroupPath</command:noun>
      <maml:description>
        <maml:para>Splits a "unix-style" device group path into an array of strings representing each node in the hierarchy.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Splits a "unix-style" device group path into an array of strings representing each node in the hierarchy.</maml:para>
      <maml:para>The *VmsDeviceGroup cmdlets implement their own method of describing a Milestone device group hierarchy which simplifies automation. The Split-VmsDeviceGroupPath and Resolve-VmsDeviceGroupPath cmdlets are provided as utility functions for performing operations on device groups to determine their "path" or to split a path up to perform your own operations as needed.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Split-VmsDeviceGroupPath</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies a full unix-style path to the desired device group. See the examples for reference.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies a full unix-style path to the desired device group. See the examples for reference.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Split-VmsDeviceGroupPath -Path "/Level 1/Level 2/Level 3"</dev:code>
        <dev:remarks>
          <maml:para>Splits the specified path into the parts "Level 1", "Level 2", and "Level 3"</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- Example 2 --------------------------</maml:title>
        <dev:code>Split-VmsDeviceGroupPath -Path '/Group/Subgroup1`/Childgroup/Subgroup2'</dev:code>
        <dev:remarks>
          <maml:para>Splits the specified path into the parts "Group", "Subgroup1/Childgroup", and "Subgroup2". Note the use of the "backtick" symbol as an escape character for the forward-slash between "Subgroup1" and "Childgroup". If a device group needs to have a forward-slash symbol in the name, it needs to be escaped in PowerShell so that the VmsDeviceGroup cmdlets understand that it isn't supposed to be a path separator.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/split-vmsdevicegrouppath/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Start-VmsHardwareScan</command:name>
      <command:verb>Start</command:verb>
      <command:noun>VmsHardwareScan</command:noun>
      <maml:description>
        <maml:para>Starts either an express, or a manual hardware scan on one or more recording servers</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The hardware scan process allows you to discover cameras using the "Express" parameter, or check specific camera IPs or ranges to see if any cameras matching one or more drivers/credentials are found. The resulting VmsHardwareScanResult object contains all the information needed for Add-VmsHardware to add the camera to the recording server.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Start-VmsHardwareScan</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Address</maml:name>
          <maml:description>
            <maml:para>Specifies the IP or HTTP/HTTPS URI to scan.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Uri[]</command:parameterValue>
          <dev:type>
            <maml:name>Uri[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>@()</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Cidr</maml:name>
          <maml:description>
            <maml:para>Specifies a range of IPv4 or IPv6 addresses to scan in CIDR notation. Example: 192.168.1.0/24 for 192.168.1.1 - 192.168.1.254.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Credential</maml:name>
          <maml:description>
            <maml:para>Specifies the credential to use when scanning for cameras.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">PSCredential[]</command:parameterValue>
          <dev:type>
            <maml:name>PSCredential[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>DriverFamily</maml:name>
          <maml:description>
            <maml:para>Specifies a device driver group name or "family" such as "Axis", "Bosch" or "Milestone". All applicable device driver ID's will be discovered automatically.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>DriverNumber</maml:name>
          <maml:description>
            <maml:para>Specifies one or more Milestone device drivers to scan for. It's recommended to always provide at least one driver and the fewer the better/faster the scan.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32[]</command:parameterValue>
          <dev:type>
            <maml:name>Int32[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>@()</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>End</maml:name>
          <maml:description>
            <maml:para>Specifies the end of an IPv4 or IPv6 range to scan.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IPAddress</command:parameterValue>
          <dev:type>
            <maml:name>IPAddress</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>HttpPort</maml:name>
          <maml:description>
            <maml:para>Specifies an alternate HTTP/HTTPS port to use in case you don't use the defaults of 80/443.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>80</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the Milestone "Tasks" should be returned to the pipeline immediately instead of the default behavior of waiting for all scan operations to complete and returning a VmsHardwareScanResult object.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Specifies one or more Recording Server objects on which to run hardware scans. Scans on multiple recorders can be run in parallel.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
          <dev:type>
            <maml:name>RecordingServer[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Start</maml:name>
          <maml:description>
            <maml:para>Specifies the start of an IPv4 or IPv6 range to scan.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">IPAddress</command:parameterValue>
          <dev:type>
            <maml:name>IPAddress</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>UseDefaultCredentials</maml:name>
          <maml:description>
            <maml:para>Specifies to use the driver default credentials if applicable.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>UseHttps</maml:name>
          <maml:description>
            <maml:para>Specifies that a secure HTTPS connection should be made to cameras during the scan instead of an HTTP connection. If you provide a full uri like https://192.168.1.1 in the Address parameter, then this property is redundant. However if you choose to perform a range scan, this is how you would specify which HTTP scheme to use during the scan.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Start-VmsHardwareScan</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Credential</maml:name>
          <maml:description>
            <maml:para>Specifies the credential to use when scanning for cameras.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">PSCredential[]</command:parameterValue>
          <dev:type>
            <maml:name>PSCredential[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Express</maml:name>
          <maml:description>
            <maml:para>Specifies that the Express hardware scan option should be used. This can be considerably faster than a range scan, but it can also fail to discover cameras under certian network conditions.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Specifies that the Milestone "Tasks" should be returned to the pipeline immediately instead of the default behavior of waiting for all scan operations to complete and returning a VmsHardwareScanResult object.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Specifies one or more Recording Server objects on which to run hardware scans. Scans on multiple recorders can be run in parallel.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
          <dev:type>
            <maml:name>RecordingServer[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>UseDefaultCredentials</maml:name>
          <maml:description>
            <maml:para>Specifies to use the driver default credentials if applicable.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>UseHttps</maml:name>
          <maml:description>
            <maml:para>Specifies that a secure HTTPS connection should be made to cameras during the scan instead of an HTTP connection. If you provide a full uri like https://192.168.1.1 in the Address parameter, then this property is redundant. However if you choose to perform a range scan, this is how you would specify which HTTP scheme to use during the scan.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Address</maml:name>
        <maml:description>
          <maml:para>Specifies the IP or HTTP/HTTPS URI to scan.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Uri[]</command:parameterValue>
        <dev:type>
          <maml:name>Uri[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>@()</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Cidr</maml:name>
        <maml:description>
          <maml:para>Specifies a range of IPv4 or IPv6 addresses to scan in CIDR notation. Example: 192.168.1.0/24 for 192.168.1.1 - 192.168.1.254.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Credential</maml:name>
        <maml:description>
          <maml:para>Specifies the credential to use when scanning for cameras.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">PSCredential[]</command:parameterValue>
        <dev:type>
          <maml:name>PSCredential[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>DriverFamily</maml:name>
        <maml:description>
          <maml:para>Specifies a device driver group name or "family" such as "Axis", "Bosch" or "Milestone". All applicable device driver ID's will be discovered automatically.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>DriverNumber</maml:name>
        <maml:description>
          <maml:para>Specifies one or more Milestone device drivers to scan for. It's recommended to always provide at least one driver and the fewer the better/faster the scan.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32[]</command:parameterValue>
        <dev:type>
          <maml:name>Int32[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>@()</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>End</maml:name>
        <maml:description>
          <maml:para>Specifies the end of an IPv4 or IPv6 range to scan.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IPAddress</command:parameterValue>
        <dev:type>
          <maml:name>IPAddress</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Express</maml:name>
        <maml:description>
          <maml:para>Specifies that the Express hardware scan option should be used. This can be considerably faster than a range scan, but it can also fail to discover cameras under certian network conditions.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>HttpPort</maml:name>
        <maml:description>
          <maml:para>Specifies an alternate HTTP/HTTPS port to use in case you don't use the defaults of 80/443.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>80</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Specifies that the Milestone "Tasks" should be returned to the pipeline immediately instead of the default behavior of waiting for all scan operations to complete and returning a VmsHardwareScanResult object.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Specifies one or more Recording Server objects on which to run hardware scans. Scans on multiple recorders can be run in parallel.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">RecordingServer[]</command:parameterValue>
        <dev:type>
          <maml:name>RecordingServer[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Start</maml:name>
        <maml:description>
          <maml:para>Specifies the start of an IPv4 or IPv6 range to scan.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">IPAddress</command:parameterValue>
        <dev:type>
          <maml:name>IPAddress</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>UseDefaultCredentials</maml:name>
        <maml:description>
          <maml:para>Specifies to use the driver default credentials if applicable.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>UseHttps</maml:name>
        <maml:description>
          <maml:para>Specifies that a secure HTTPS connection should be made to cameras during the scan instead of an HTTP connection. If you provide a full uri like https://192.168.1.1 in the Address parameter, then this property is redundant. However if you choose to perform a range scan, this is how you would specify which HTTP scheme to use during the scan.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>VmsHardwareScanResult</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-RecordingServer | Out-GridView -OutputMode Single | Start-VmsHardwareScan -Express</dev:code>
        <dev:remarks>
          <maml:para>Prompts the user to select one Recording Server from a list, and then initiates an express hardware scan from that Recording Server. The results when displayed in a PowerShell terminal will appear as follows. Note that there are additional properties available that are not displayed by the default formatter.</maml:para>
          <maml:para>HardwareAddress UserName MacAddress Validated ExistsLocally ExistsGlobally RecordingServer --------------- -------- ---------- --------- ------------- -------------- --------------- http://192.168.1.1/ admin 123456789123 True True False TestServer http://192.168.1.2/ admin 123456789124 True False False TestServer http://192.168.1.3/ admin 123456789125 False False False TestServer</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>$recorder | Start-VmsHardwareScan -Start 192.168.1.1 -End 192.168.1.10 -DriverFamily Axis -Credential (Get-Credential), (Get-Credential) -UseDefaultCredentials</dev:code>
        <dev:remarks>
          <maml:para>Prompts the user for two sets of credentials to try against a range of 10 cameras on the recording server in the $recorder variable. All drivers under the Axis group name will be tried. A result for each address scanned will be returned to the pipeline even if no camera was found. The results will look similar to Example #1 for cameras that are found, while the entries for unresponsive IP addresses will look like the following table.</maml:para>
          <maml:para>HardwareAddress UserName MacAddress Validated ExistsLocally ExistsGlobally RecordingServer --------------- -------- ---------- --------- ------------- -------------- --------------- False False False TestServer False False False TestServer False False False TestServer</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 3 --------------------------</maml:title>
        <dev:code>$recorder | Start-VmsHardwareScan -Cidr 192.168.1.0/30 -DriverNumber 707 -UseDefaultCredentials</dev:code>
        <dev:remarks>
          <maml:para>A range of 4 IP addresses is defined using CIDR notation and the default driver credentials for the "Infinova G/T/H PTZ Series" driver will be used against each IP. The first and last IP of the CIDR range will be skipped since those represent the network address and broadcast address for the subnet.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/start-vmshardwarescan/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Wait-VmsTask</command:name>
      <command:verb>Wait</command:verb>
      <command:noun>VmsTask</command:noun>
      <maml:description>
        <maml:para>Polls a Milestone XProtect Task item until the task completes.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Some long running operations like hardware scans and adding hardware return a "Task" item which provides status and progress information, and when the status of the task reaches either Error or Success, the properties of the task will contain useful information about a new item or other data depending on the operation. Or if there was an error, the ErrorCode and ErrorText properties will be filled in.</maml:para>
      <maml:para>Wait-VmsTask provides you with a way to monitor one or more tasks simultaneously, and block until all tasks have completed. If $ProgressPreference is set to Continue (default) then you will also get a progress bar showing a rough % complete and estimated remaining time value.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Wait-VmsTask</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the Task path in Milestone's Configuration API format. Example: Task[100].</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Title</maml:name>
          <maml:description>
            <maml:para>Specifies the activity name to display in the progress bar. The default is "Waiting for VMS Task(s) to complete".</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Cleanup</maml:name>
          <maml:description>
            <maml:para>Specifies whether the "TaskCleanup" method should be called on each task as it completes.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Cleanup</maml:name>
        <maml:description>
          <maml:para>Specifies whether the "TaskCleanup" method should be called on each task as it completes.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the Task path in Milestone's Configuration API format. Example: Task[100].</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Title</maml:name>
        <maml:description>
          <maml:para>Specifies the activity name to display in the progress bar. The default is "Waiting for VMS Task(s) to complete".</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Wait-VmsTask -Path ($recorder | Start-VmsHardwareScan -Express -PassThru).Path -Cleanup</dev:code>
        <dev:remarks>
          <maml:para>Starts an "express" hardware scan on the Recording Server specified in the $recorder variable. The Start-VmsHardwareScan normally calls Wait-VmsTask for you, but with the PassThru parameter the scan will be started and the task returned to you. We then pass all the paths into the Path parameter on Wait-VmsTask and when the tasks complete, they will be cleaned up and returned to the pipeline for the next step.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Help</maml:linkText>
        <maml:uri>https://www.milestonepstools.com/functions/wait-vmstask/</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
</helpItems>