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-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.</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. 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.</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. 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-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>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>{{ Fill Content Description }}</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>{{ Fill Content Description }}</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>Export-HardwareCsv</command:name>
      <command:verb>Export</command:verb>
      <command:noun>HardwareCsv</command:noun>
      <maml:description>
        <maml:para>[Deprecated] Exports basic hardware information from a Milestone VMS to a CSV file</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This command is deprecated in favor of Export-VmsHardware.</maml:para>
      <maml:para>Exports hardware information to a CSV file. The following fields are included by default:</maml:para>
      <maml:para>- HardwareName</maml:para>
      <maml:para>- HardwareAddress</maml:para>
      <maml:para>- MacAddress</maml:para>
      <maml:para>- UserName</maml:para>
      <maml:para>- Password</maml:para>
      <maml:para>- DriverNumber</maml:para>
      <maml:para>- DriverDisplayName</maml:para>
      <maml:para>- RecordingServerName</maml:para>
      <maml:para>- RecordingServerId</maml:para>
      <maml:para></maml:para>
      <maml:para>Exporting with -Full will also retrieve all hardware information available through the Configuration API and save a JSON object for each hardware in a file adjacent to the CSV.</maml:para>
      <maml:para>The name of the *.JSON files will be the name of the CSV, plus the hardware ID, and a column named "ConfigurationId" will be added to the CSV as a reference to the configuration corresponding to each row in the CSV.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Export-HardwareCsv</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>Full path, including file name, where the CSV 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>Full</maml:name>
          <maml:description>
            <maml:para>Export full hardware configuration data into an adjacent JSON 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="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Array of Hardware objects to be exported to CSV</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="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Full</maml:name>
        <maml:description>
          <maml:para>Export full hardware configuration data into an adjacent JSON 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="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Array of Hardware objects to be exported to CSV</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="False" position="1" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Full path, including file name, where the CSV 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: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 -Server localhost</dev:code>
        <dev:remarks>
          <maml:para>Get-Hardware | Export-HardwareToCsv -Path C:\hardware.csv</maml:para>
          <maml:para>Logs into the local Management Server as the current Windows user and exports all hardware information to C:\hardware.csv</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Connect-ManagementServer -Server localhost</dev:code>
        <dev:remarks>
          <maml:para>Get-RecordingServer -Name East* | Get-Hardware | Export-HardwareToCsv -Path C:\hardware.csv -Full</maml:para>
          <maml:para>Logs into the local Management Server as the current Windows user and exports all hardware information from all Recording Servers with names beginning with 'East', to C:\hardware.csv, and includes full hardware configuration details which will be saved to C:\hardware_*.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-hardwarecsv/</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>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="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>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-CameraReport</command:name>
      <command:verb>Get</command:verb>
      <command:noun>CameraReport</command:noun>
      <maml:description>
        <maml:para>[DEPRECATED] Gets detailed information for all cameras in the current site</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This camera report command is now deprecated. Please consider using Get-VmsCameraReport.</maml:para>
      <maml:para>This camera report is a rewrite of the previous camera report available in version 20.3.450930 and earlier. This version makes use of runspaces to significantly improve the time taken to generate the report, and includes several additional properties in each row that were not present in prior versions.</maml:para>
      <maml:para>Use Get-CameraReport to get a snapshot in time of most of the configuration properties for each camera and the state of cameras in the VMS. For example, you can use this report to see the current video retention for each camera, or whether any cameras are in media overflow or have communication errors.</maml:para>
      <maml:para>You might pipe this report to CSV and open the report in Excel, group by Recording Server, and get a sense for the number of cameras per Recording Server or create a pivot table on cameras and their resolutions and frame rates.</maml:para>
      <maml:para>Thanks to the 60+ columns of information provided for each camera in this report, there are innumerable ways in which you could use it to help identify problems, maintain a consistent configuration, or report data to other departments.</maml:para>
      <maml:para>Column Notes</maml:para>
      <maml:para>- State: This is returned by Get-ItemState and represents the Milestone Event Server's understanding of the state of the camera. The physical camera may be responding to ping but still be 'Not Responding' in Milestone due to other issues.</maml:para>
      <maml:para>- MediaOverflow: This means the Recording Server is unable to keep up with the amount of video being recorded, and is dropping video frames from one or more cameras. Any time this value is true, you should investigate Recording Server performance.</maml:para>
      <maml:para>- GpsCoordinates: This value will be returned as 'Unknown' if not set. The value comes from the Camera object's GisPoint property.</maml:para>
      <maml:para>- MediaDatabaseBegin: This timestamp represents the time and date, in UTC, of the first image in the media database. If your video retention is 30 days, you should expect this timestamp to be at least 30 days ago under normal circumstances.</maml:para>
      <maml:para>- MediaDatabaseEnd: This timestamp represents the time and date, in UTC, of the last recorded image in the media database. If your camera is set to record always, this timestamp should be very recent.</maml:para>
      <maml:para>- UsedSpaceInBytes: This value represents the disk space utilization for the camera on the Recording Server to which it belongs, including data in any live and archive storage to which the camera is assigned.</maml:para>
      <maml:para>- PercentRecordedOneWeek: This optional value is only set when you include the -IncludeRecordingStats parameter. It may take significantly longer to generate the report when including this information. The value will be the percentage of time over the previous 7 days for which recordings exist. When recording on motion, in an environment with 50% motion, this value will normally be a little higher than 50% to account for pre and post recording buffers.</maml:para>
      <maml:para>- LastModified: This should represent the last configuration change made to the camera.</maml:para>
      <maml:para>- Password: This optional value is only set when you include the -IncludePasswords parameter.</maml:para>
      <maml:para>- HTTPSEnabled: For cameras supporting HTTPS and where HTTPS is enabled at the hardware level in Management Client, you will see the value "YES". Otherwise, you will see the value "NO".</maml:para>
      <maml:para>- Firmware: This value may NOT be accurate. For example, if the firmware has been upgraded since the camera was added to Milestone, the value may still reflect the old firmware version. This is only because Milestone may only update our record of the firmware when the camera is added or replaced in Management Client. You might consider this value as an indication that the firmware is 'at least' X.Y for example.</maml:para>
      <maml:para>- DriverNumber: This represents the Milestone ID number for the device driver used for this camera. When adding hardware using Import-HardwareCsv or Add-Hardware, this is the number Milestone would expect when specifying which driver to use.</maml:para>
      <maml:para>- DriverRevision: This is an internal value representing the driver number for the specific device driver within the currently installed device pack.</maml:para>
      <maml:para>- RecordingPath: This value is always relative to the Recording Server. If you see a drive letter F:, for example, then it refers to the F: drive on the Recording Server to which the camera is assigned.</maml:para>
      <maml:para>- Snapshot: This optional value is only set when you include the -IncludeSnapshots parameter. The value will be an [image] object and it will be up to you to decide what to do with the value once you have it. Exporting to CSV for example will result in the string [drawing.image] rather than an actual image or image data.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-CameraReport</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 the one or more recording servers to limit the scope of the report</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>SnapshotHeight</maml:name>
          <maml:description>
            <maml:para>Specifies the height of the snapshots included if the IncludeSnapshots switch is provided. The default is 300 pixels high. The width will be determined based on the aspect ratio of the original image. A value of 0 will result in snapshots at the original image resolution of the live stream at the time the report is run.</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="named" aliases="none">
          <maml:name>IncludeDisabled</maml:name>
          <maml:description>
            <maml:para>Specifies that disabled cameras should be excluded from the results</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>IncludePlainTextPasswords</maml:name>
          <maml:description>
            <maml:para>Include hardware passwords in plain text</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 you want to add the percentage of time recorded in the past week for each camera</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>Include live JPEG snapshots in the results</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>IncludeDisabled</maml:name>
        <maml:description>
          <maml:para>Specifies that disabled cameras should be excluded from the results</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>IncludePlainTextPasswords</maml:name>
        <maml:description>
          <maml:para>Include hardware passwords in plain text</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 you want to add the percentage of time recorded in the past week for each camera</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>Include live JPEG snapshots in the results</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>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Specifies the one or more recording servers to limit the scope of the report</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>SnapshotHeight</maml:name>
        <maml:description>
          <maml:para>Specifies the height of the snapshots included if the IncludeSnapshots switch is provided. The default is 300 pixels high. The width will be determined based on the aspect ratio of the original image. A value of 0 will result in snapshots at the original image resolution of the live stream at the time the report is run.</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: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
Get-RecordingServer -Name 'MyRecordingServer' | Get-CameraReport | Out-GridView</dev:code>
        <dev:remarks>
          <maml:para>Generates a camera report from all cameras on "MyRecordingServer" and presents the results in a grid view UI.</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-camerareport/</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-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>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="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="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>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="2" 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="2" 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="1" 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: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-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 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-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="false" 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="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 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="false" 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="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 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 storage retention for the specified storage configuration</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="true" variableLength="true" globbing="false" pipelineInput="True (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="true" variableLength="true" globbing="false" pipelineInput="True (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-RecordingServer -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>Import-HardwareCsv</command:name>
      <command:verb>Import</command:verb>
      <command:noun>HardwareCsv</command:noun>
      <maml:description>
        <maml:para>[Deprecated] Adds hardware to a Milestone VMS using a CSV file</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This command is deprecated in favor of Import-VmsHardware.</maml:para>
      <maml:para>Adds hardware to a Milestone VMS using a CSV file. The required columns include</maml:para>
      <maml:para>- RecordingServerName - The display name of the Recording Server where the device should be added</maml:para>
      <maml:para>- HardwareAddress - The address of the device to be added in the format "http://ip.add.re.ss"</maml:para>
      <maml:para>- HardwareName - The desired display name of the new hardware device</maml:para>
      <maml:para>- UserName - The user name on the device - typically 'root' or 'admin'</maml:para>
      <maml:para>- Password - The password for the given UserName on the device</maml:para>
      <maml:para>- GroupPath - Optional.</maml:para>
      <maml:para>Defines the camera group where new cameras will be placed. Default is '/New Cameras' - DriverNumber - Optional. Add-Hardware is much faster when you know the driver to use. Specify the driver number when possible, but if you leave it blank, the Recording Server will try to scan the hardware to discover the driver.</maml:para>
      <maml:para>When importing with the Full parameter, a separate file for each row of the CSV file is expected to be found adjascent to the CSV file with a name like "csvname_guid.json" where csvname is the filename of the CSV file provided in -Path, and guid is an ID matching the ConfigurationId column from the CSV file.</maml:para>
      <maml:para>This command will make an effort to match all settings present in the adjascent JSON files. However, some settings are not available through Configuration API, and advanced settings like secondary streams, or events are not included.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Import-HardwareCsv</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>Path to the location of the CSV file from where the hardware information will be imported</maml:para>
          </maml:description>
          <command:parameterValue required="true" 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>Full</maml:name>
          <maml:description>
            <maml:para>Perform a deep copy of the configuration using the adjascent JSON files generated by the Export-HardwareToCsv command.</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>RecordingServer</maml:name>
          <maml:description>
            <maml:para>Override the Recording Servers designated in the CSV file and add all hardware in the CSV file to this Recording Server instead.</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="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Full</maml:name>
        <maml:description>
          <maml:para>Perform a deep copy of the configuration using the adjascent JSON files generated by the Export-HardwareToCsv command.</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>Path to the location of the CSV file from where the hardware information will be imported</maml:para>
        </maml:description>
        <command:parameterValue required="true" 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>RecordingServer</maml:name>
        <maml:description>
          <maml:para>Override the Recording Servers designated in the CSV file and add all hardware in the CSV file to this Recording Server instead.</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 />
    <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 -Server localhost</dev:code>
        <dev:remarks>
          <maml:para>Import-HardwareFromCsv -Path C:\hardware.csv</maml:para>
          <maml:para>Logs into the local Management Server as the current Windows user and imports hardware defined in C:\hardware.csv</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-hardwarecsv/</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. And 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. However it is required to define the column names in the first row. 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 supported 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 hostname/fqdn format, and if using HTTPS or a custom port number, address can be provided as a URI like http://192.168.1.100:8080.</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 -Name JMT-XPCO | 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>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>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="true" 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</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 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="true" 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</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 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="true" 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</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 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 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>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>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-MobileServerCertificate</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>MobileServerCertificate</command:noun>
      <maml:description>
        <maml:para>DEPRECATED - Use Set-XProtectCertificate</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Removes the current sslcert binding for Milestone XProtect Mobile Server. The current binding is found by calling Get-MobileServerInfo, and if the CertHash value is -ne $null we call netsh http delete sslcert ipport=$HttpsIp:$HttpsPort.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-MobileServerCertificate</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: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>Remove-MobileServerCertificate</dev:code>
        <dev:remarks>
          <maml:para>Removes the Mobile Server certificate if preset and bound to the service.</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-mobileservercertificate/</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-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-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>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 -DeviceGroup 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-DeviceGroup 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="0" aliases="none">
          <maml:name>DeviceGroup</maml:name>
          <maml:description>
            <maml:para>Specifies a device group object returned by commands like Get-DeviceGroup.</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="0" aliases="none">
        <maml:name>DeviceGroup</maml:name>
        <maml:description>
          <maml:para>Specifies a device group object returned by commands like Get-DeviceGroup.</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-DeviceGroup -DeviceCategory camera -Path / -Recurse | Resolve-DeviceGroupPath</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-MobileServerCertificate</command:name>
      <command:verb>Set</command:verb>
      <command:noun>MobileServerCertificate</command:noun>
      <maml:description>
        <maml:para>Sets the sslcert binding for Milestone XProtect Mobile Server</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Sets the sslcert binding for Milestone XProtect Mobile Server when provided with a certificate, an object with a Thumbprint property, or when the -Thumbprint parameter is explicitly provided.</maml:para>
      <maml:para>The Thumbprint must represent a publicly signed and trusted certificate located in Cert:\LocalMachine\My where the private key is present.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-MobileServerCertificate</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>Thumbprint</maml:name>
          <maml:description>
            <maml:para>The certificate hash, commonly referred to as Thumbprint, representing a certificate which is present in the path Cert:\LocalMachine\My</maml:para>
          </maml:description>
          <command:parameterValue required="true" 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:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>X509Certificate</maml:name>
          <maml:description>
            <maml:para>A [System.Security.Cryptography.X509Certificates.X509Certificate2] object representing a certificate which is present in the path Cert:\LocalMachine\My</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">X509Certificate2</command:parameterValue>
          <dev:type>
            <maml:name>X509Certificate2</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="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>Thumbprint</maml:name>
        <maml:description>
          <maml:para>The certificate hash, commonly referred to as Thumbprint, representing a certificate which is present in the path Cert:\LocalMachine\My</maml:para>
        </maml:description>
        <command:parameterValue required="true" 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:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>X509Certificate</maml:name>
        <maml:description>
          <maml:para>A [System.Security.Cryptography.X509Certificates.X509Certificate2] object representing a certificate which is present in the path Cert:\LocalMachine\My</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">X509Certificate2</command:parameterValue>
        <dev:type>
          <maml:name>X509Certificate2</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>gci Cert:\LocalMachine\My | ? Subject -eq 'CN=mobile.example.com' | Set-MobileServerCertificate</dev:code>
        <dev:remarks>
          <maml:para>Gets a certificate for mobile.example.com from Cert:\LocalMachine\My and pipes it to Set-MobileServerCertificate</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Submit-Renewal | Set-MobileServerCertificate</dev:code>
        <dev:remarks>
          <maml:para>Submits an ACME certificate renewal using the Posh-ACME module, and if the certificate is renewed, updates the Mobile Server sslcert binding by piping the output to Set-MobileServerCertificate. The Submit-Renewal and New-PACertificate cmdlets return an object with a Thumbprint property.</maml:para>
          <maml:para>If using Posh-ACME, you must ensure the New-PACertificate command is executed with elevated permissions, and used with the -Install switch so that the new certificate is installed into the Cert:\LocalMachine\My path. If you have done this, then subsequent executions of Submit-Renewal from an elevated session under the same user context will result the renewed certs being installed as well.</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-mobileservercertificate/</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/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>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-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-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: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: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>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>