Skip to content

ChangeLog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

Versioning is based on the first two parts of Milestone's latest MIP SDK version (major and minor) with a build number incrementing from 0 for each new module update made between official Milestone MIP SDK releases.

[21.2.8] unreleased

[21.2.7] 2022-02-23

Fixed

  • Fixed an issue with Get-RecorderStatusService2 throwing a null reference exception when attempting to get a status service instance for a Recording Server when that recording server, for some reason, has a null FQID.ServerId.Uri value. Now a regular error should be returned via Write-Error.
  • Fixed an error in Get-VmsCameraReport where cameras without multi-stream support would result in errors being passed to the pipeline.
  • Fixed an error in Get-VmsCameraReport where recording servers without cameras could cause an error when using the -IncludeRetentionInfo switch.

Added

  • Several cmdlets for working with ViewGroup and View objects, including cmdlets for copying, exporting, and importing ViewGroups, and modifying permissions.
    • Clear-VmsView
    • Copy-VmsView
    • Copy-VmsViewGroup
    • Export-VmsViewGroup
    • Get-VmsView
    • Get-VmsViewGroup
    • Get-VmsViewGroupAcl
    • Import-VmsViewGroup
    • New-VmsView
    • New-VmsViewGroup
    • Remove-VmsView
    • Remove-VmsViewGroup
    • Set-VmsView
    • Set-VmsViewGroup
    • Set-VmsViewGroupAcl

Changed

  • Replaced all internal references to Get-ManagementServer with Get-VmsManagementServer to eliminate deprecation warning messages when running built-in cmdlets.

[21.2.6] 2022-02-08

Added

  • Clear-VmsCache can be used to clear the child items from the cached ManagementServer object (see the caching reference in changes below). This will also dispose of cached WCF proxy clients generated by Get-IServerCommandService and Get-IConfigurationService. Previously, you would use Get-Site | Select-Site or reconnect to the Management Server to clear those cached proxy clients.

Fixed

  • Fixed an issue where functions were not correctly exported and made available to users of some OS's like Server 2012 R2.
  • ConvertTo-GisPoint was, in some cases, outputing "POINT (0 0)" instead of the given coordinates. This behavior is fixed, and the cmdlet has been improved with support for altitude/elevation.
  • Start-VmsHardwareScan produced an empty [VmsHardwareScanResult] even when the scan returned no entries. Now, when the request for a scan returns an error, no results will be returned and a Write-Error will show the error returned by the VMS.

Changed

  • Updated Get-Log
    • Renamed to Get-VmsLog and added alias for old name, Get-Log
    • Implemented a "windowing" strategy to improve performance when reading logs for a broad time period. In testing, a 24-hour audit log request completed three times faster using the new cmdlet.
  • Caching: Added caching of the current site's ManagementServer configuration api object. All cmdlets that previously instantiated a new ManagementServer object when needed have been updated to use the cached reference, which in turn caches child items when they are accessed through it. This dramatically improves the performance when multiple enumerates of configuration items are performed during the same PowerShell session. For example, accessing general settings for all cameras on a test system took 29 seconds the first time. Subsequent requests took 0.15 seconds.

[21.2.5] 2022-01-27

Added

  • Get-VmsDeviceStatus offers very fast streaming device status information through the use of the MIP SDK RecorderStatusService2 API and the GetCurrentDeviceStatus method.

[21.2.4] 2022-01-20

Fixed

  • Get-VmsCameraGeneralSetting was returning an unexpected $null value that was missed during a refactoring.

[21.2.3] 2022-01-20

Added

  • Spanish language translations.
  • Get-VmsCamera replaced Get-Camera and adds the ability to search by name.
  • Set-VmsCamera adds an easy method of changing all properties directly attached to camera objects.
  • Get-VmsCameraGeneralSetting adds a quick and easy way to access general settings and defaults to "display values" instead of "raw values".
  • Set-VmsCameraGeneralSetting adds an easy way to change several general settings at once.
  • Get-VmsCameraStream adds a much easier way to retrieve stream properties including how they're used (live, recording), and the associated settings like FPS, Resolution, and Codec.
  • Set-VmsCameraStream is a simple cmdlet for adding new streams and configuring properties of streams like FPS, Resolution, Codec, and multi-stream properties like LiveMode and stream display name.

Changed

  • MilestonePSTools is now signed with the Milestone code signing certificate.
  • Get-Camera is now aliased to Get-VmsCamera.

Deprecated

  • Get-Camera is deprecated in favor of Get-VmsCamera.
  • Get-CameraSetting is deprecated in favor of Get-VmsCameraGeneralSetting and Get-VmsCameraStream.
  • Set-CameraSetting is deprecated in favor of Set-VmsCameraGeneralSetting and Set-VmsCameraStream.
  • Get-Stream is deprecated in favor of Get-VmsCameraStream.
  • Set-Stream is deprecated in favor of Set-VmsCameraStream.

[21.2.2] 2021-11-04

Added

  • Add-VmsFailoverGroup, Get-VmsFailoverGroup, and Remove-VmsFailoverGroup which is supported for XProtect Expert and XProtect Corporate 2021 R2 and newer.

Fixed

  • Get-VmsCameraReport failed with the error Exception calling "FillChildren" with "2" argument(s): "VMS64001: The feature is not licensed." on XProtect Essential+ due to an attempt to use the "FillChildren" method to pre-populate the configuration hierarchy with a variety of ItemType's including PrivacyProtection and PrivacyProtectionFolder items which are only present from XProtect Express+ and above.

[21.2.1] 2021-10-28

Fixed

  • Get-VmsCameraReport failed to produce a report if communication with the recording server(s) failed. Now the communication error will be returned and the report will be produced with some missing information.
  • Get-RecorderStatusService2 always used the WebServerUri or "local web server address" to try to reach the recording server status service. Now the Milestone internal FQID will be looked up in [VideoOS.Platform.Configuration]::Instance, and the FQID.ServerId.Uri value will be used to instantiate the [VideoOS.Platform.SDK.Proxy.Status2.RecorderStatusService2] client. This should ensure that the status client can be used while on a local network or when connecting over the internet, or through a NAT/PAT firewall.

[21.2.0] 2021-10-27

Added

  • Support for Get-Help -Online
  • Get-VmsCameraReport as a faster, more reliable replacement for Get-CameraReport.
  • License management functions have been added which make use of Configuration API features introduced in 2020 R2.
  • Import-VmsLicense for importing initial, or manually-activated license files downloaded from My Milestone.
  • Export-VmsLicenseRequest for exporting license request files for manual activation on My Milestone.
  • Set-VmsLicense for changing the software license code by importing a different license file.
  • Invoke-VmsLicenseActivation for initiating an online activation with the option to enable auto-activation.
  • Start-VmsHardwareScan can be used to perform express, or manual hardware scans to discover cameras and which drivers to use with them.
  • Add-VmsHardware as a replacement for the original Add-Hardware cmdlet.
  • Import-VmsHardware as a replacement for Import-HardwareCsv (shallow support of device settings only)
  • Export-VmsHardware as a replacement for Export-HardwareCsv (shallow support of device settings only)
  • Wait-VmsTask is useful for monitoring long-running operations. You can use it with most Configuration API method calls and it will return when the server-side task completes.

Changed

  • Updated MipSdkRedist dependency to MipSdkredist 21.2.0 based on MIP SDK 2021 R2.
  • Improved Get-PlaybackInfo performance by switching from RawDataSource to SequenceDataSource.
  • Changed Find-XProtectDevice -ShowDialog UI to filter out all non-string property names in the advanced section.
  • Updated Set-CertKeyPermission private function to improve reliability and support ECC certificates. This function is used with Set-XProtectCertificate.
  • Added documentation for previously undocumented commands.
  • Experimental: Introduced the concept of "proxy client pools" so that two of each proxy client type can be created instead of one. This may help when using runspaces for parallelization but testing has not proven this out yet.
  • To try using more than one proxy client for Configuration API and other WCF channels, add the environment variable MILESTONEPSTOOLS_PROXYCOUNT with an integer value.
  • Added ActivationAutomatic column to LicenseInformation formatter - it's useful information to see in the output of Invoke-VmsLicenseActivation, Import-VmsLicense, and Set-VmsLicense.
  • Updated Remove-Hardware to support -WhatIf, and set ConfirmImpact to "High". The -Force switch no longer exists as we are relying on the more idiomatic ConfirmImpact feature to stand in the way of potential accidental usage. This is a breaking change considering the -Force switch will now cause an error, and we no longer accept the Hardware object by ID. To remove hardware in bulk such as you might do in a test environment, you can add -Confirm:$false and you should not be required to acknowledge any removal operations.

Fixed

  • Added error handling for Configuration API cmdlets Get-ConfigurationItem, Set-ConfigurationItem, Invoke-Method, and Get-Translations so that if the Configuration API proxy client has faulted, due to an idle timeout for example, the proxy client pool is cleared and new communication channels are established.

Removed

  • Get-CameraReportV1 - use Get-VmsCameraReport

Deprecated

  • Get-CameraReport in favor of Get-VmsCameraReport
  • Add-Hardware in favor of Add-VmsHardware
  • Export-HardwareCsv in favor of Export-VmsHardware
  • Import-HardwareCsv in favor of Import-VmsHardware