Changelog¶
[vNext] unreleased¶
[24.2.1] 2024-11-09¶
Added¶
- Added commands for creating, getting, and removing
TrustedIssuer
records to support the use of external identity providers for single sign-on to a Milestone Federated Architecture (MFA) hierarchy.
Fixed¶
- Fixed issue #155 where the
-LocalTimeStamp
switch on theGet-Snapshot
cmdlet was ineffective and filenames contained the UTC time instead.
[24.1.30] 2024-10-10¶
Fixed¶
- Fixed an issue with
-IncludeChildSites
introduced around the 23.3.2 release in February 2024 where we incorrectly called theVideoOS.Platform.SDK.Environment.AddServer()
method with theVideoOS.Platform.Login.LoginSettings
of the current site instead of using the URI of the child site. This led to aServerNotFoundMIPException
error when logging in to a parent site in a Milestone Federated Hierarchy usingConnect-Vms
orConnect-ManagementServer
with the-IncludeChildSites
switch.
[24.1.27] 2024-09-26¶
Added¶
- Added a set of commands for creating, updating, and removing live and recorded video restrictions. The associated
commands can be listed using
Get-Command -Noun VmsRestricted*
.
Changed¶
Import-VmsHardware
andExport-VmsHardware
will now always use the comma "," character as the separator when exporting to, or importing from a CSV file by default. This can be overridden using the-Delimiter
parameter on these functions.
[24.1.9] 2024-08-21¶
Changed¶
- The
Export-VmsHardware
andImport-VmsHardware
cmdlets have been rewritten to support a cleaner CSV file format, in addition to supporting the.xlsx
file extension in a much more detailed format. The same commands are used for both file formats and the processing will be different based on the file extension. When importing from either format, you can now provide an unlimited number of credentials to try during import, and you can add the-UpdateExisting
switch to indicate that any hardware that has already been added, should be updated based on the settings in the incoming file.
[24.1.6] 2024-08-02¶
Added¶
Get-VmsDevice
andSet-VmsDevice
is a generic form of theGet-VmsCamera
,Get-VmsMicrophone
, and similar commands. When you want to modify all child devices of one or moreHardware
objects, for example when performing bulk renaming, theGet-VmsDevice
cmdlet reduces duplicate code since you would previously need to have up to 6 copies of the code forGet-Vms<device type>
to cover changes to cameras, microphones, speakers, metadata, inputs, and outputs.Get-VmsParentItem
makes it easier to retrieve the parent item for any object with a Configuration APIParentItemPath
orParentPath
property. If a strongly-typed class for the parent item does not exist - the generic coPathNotFoundnfiguration item will be returned instead.- A collection of 10 LPR commands are now available for reading, updating, deleting, and importing LPR match lists,
and match list entries, as well as searching for LPR detection event records. All LPR commands have a noun beginning
with
VmsLpr
, so you can useGet-Command -Noun VmsLpr*
to get a list of them.
[24.1.5] 2024-07-01¶
Fixed¶
- The previous version of MilestonePSTools was published with a default setting enabling the use of the API Gateway REST
API when available. This resulted in at least one error like
Unknown resource: evidenceLockProfiles
when using Get-VmsRole. This option should be considered experimental for MilestonePSTools until further notice. A warning is now displayed on import if you have this option enabled in your environment. The warning provides the commands needed to disable it.
Added¶
Get-Vms*
andSet-Vms*
commands have been added for all device types including Cameras, Microphones, Speakers, Metadata, Inputs, and Outputs. The originalGet-<devicetype>
commands are now aliases to the newGet-Vms<devicetype>
commands.
Changed¶
- Updated the
MilestoneSystems.VideoOS.Platform*
MIP SDK references to 2024 R1 (v24.1.1) which introduces .NET support for some new Management Client > Tools > Options features we can expose in new PowerShell commands in the future.
[23.3.51] 2024-06-21¶
Changed¶
- Telemetry is now enabled and sent to Milestone through Azure Application Insights by default. Documentation, including instructions for disabling telemetry, can be found in the about_Telemetry topic.
Added¶
Get-VmsMetadataLiveRecord
andGet-VmsMetadataRecord
are now available for retrieving live, and recorded metadata respectively. Metadata is typically received and stored in the form of an XML document, and due to the wide variety of data you can find in a metadata stream, it is up to the user to parse the data and extract the information you need. We will add more examples over time to give you some more ideas for how to work with metadata.
[23.3.42] 2024-06-10¶
Added¶
- Support for Azure Application Insights telemetry has been introduced but is disabled by default in this release. In a future release it may be enabled by default.
[23.3.33] 2024-06-10¶
Fixed¶
Get-VmsCameraReport
now correctly returns$true
for the value ofPrivacyMaskEnabled
if a privacy mask is set.
Added¶
Set-VmsDeviceStorage
for assigning Camera, Microphone, Speaker, and Metadata devices to different storage profiles on the same recording server. Assignments can be made by display name, so if you have many recording servers with the same storage profiles defined, you can do bulk device storage assignments on devices across multiple recorders with one command, as long as the Destination storage profile names match.Set-VmsCameraMotion
andGet-VmsCameraMotion
for simplified reading and updating of all MotionDetection properties, and a view format definition for the MotionDetection class to improve the appearance of these objects when rendered in the terminal.- The module now takes advantage of the MIP SDK logging framework. You will find
MilestonePSTools<yyyyMMdd>.log
files in the MIPSDK folder atC:\ProgramData\Milestone\MIPSDK\
. Debug logging is enabled by default and this can be modified if needed by editing theappsettings.json
file in the MilestonePSTools modulebin/
folder, or by setting the corresponding environment variableenv:MIP_ENVIRONMENTMANAGER__DEBUGLOGGINGENABLED
to$false
.
Changed¶
- The patch portion of the module version is now dynamically determined based on the "git commit height". For
example, if there have been 10 commits to the main branch since the last change to the "major" or "minor" version, the
git commit height would be "10". If the
Major.Minor
is 23.3, then the full module version would then be 23.3.10.
[23.3.4] 2024-05-28¶
Fixed¶
- Fixes an issue where decoding H.265 video fails on systems without support for hardware accelerated HEVC decoding. This
resulted in a misleading error from
Start-Export
like "No video or audio in the selected time period". It also resulted in a failure to retrieve live or recorded snapshots usingGet-Snapshot
.
Changed¶
- Updated project package references to remediate CVE-2024-21319 related to transitive dependencies from Microsoft.
[23.3.3] 2024-05-18¶
Changed¶
- Updated
VideoOS.Platform.SDK
reference from 23.3.1 to 23.3.2. - Removed unnecessary pre-check for the presence of recordings between the start/end timestamps in
Start-Export
.
[23.3.2] 2024-02-22¶
Added¶
Get-VmsIServiceRegistrationService
has been added to offer easy access to the ServiceRegistrationService on the management server.- The installation docs now include a compatibility table showing the most recent MilestonePSTools versions that should be compatible with different XProtect VMS releases, along with an indication of which combinations are supported. Generally speaking, as long as the XProtect version you connect to is not discontinued according to the official product lifecycle page, the latest MilestonePSTools release is supported for use with that VMS version.
- The Command index page now includes a note with information about how to access
command-history.json
. This is the raw data used to build the command index table.
Fixed¶
- Fixed an issue where, when using PowerShell ISE, you may have seen the error "Cannot validate argument on parameter 'ShowDialog'. An interactive PowerShell session is required."
Export-VmsRole
will now work on VMS versions without support for external login providers. Previously, the command attempted to retrieve the login provider claims assigned to a role, if any, resulting in an error when the VMS version did not support the feature.Import-VmsRole
will now create new Basic User identities during an import if a basic user with the same name does not exist yet. Each new basic user created will be disabled by default, and will have a strong random 30-character password containing alphanumeric and special characters. There is no way to know the default passwords assigned to basic users created during an import - it will be up to the administrator to decide if and when to enable these accounts. At that time, they will need to reset the passwords- Fixed an issue with the use of single sign-on (SSO) using an external login provider with
Connect-Vms -ShowDialog
andConnect-VmsManagementServer -ShowDialog
.
[23.3.1] 2023-11-17¶
Added¶
- New
[MilestonePSTools.RequiresInteractiveSession()]
attribute for commands and parameters that should only be used in an interactive PowerShell session. Using theSelect-Camera
, orSelect-VideoOSItem
commands, or the-ShowDialog
parameters onConnect-Vms
andConnect-ManagementServer
will now throw an exception when used in a non-interactive PowerShell session or a PSSession rather than risk blocking the shell indefinitely.
Fixed¶
- When passing more than one value for
-Path
toGet-VmsDeviceGroup
, the values were not handled correctly. - The
Clear-VmsCache
command was incorrectly decorated with[RequiresVmsConnection()]
so running the command without a connection triggered a login flow. It no longer triggers a login and is effectively a no-op when used without an active connection. - Fix an issue where an error could occur when changing the password on remote hardware using
Set-VmsHardware -UpdateRemoteHardware
without reporting it to the user. - Fixed a null-reference exception issue where
Send-UserDefinedEvent
would fail if you attempted to trigger a user-defined event that was created in the same PowerShell session without first callingClear-VmsCache
.
Changed¶
- Removed a dependency on the independent
MipSdkRedist
module. Going forward, theMilestonePSTools
module will include all required MIP SDK assemblies. This will simplify the maintenance of MilestonePSTools as new versions are released, and also the process of installing the module in an offline VMS environment. - Updated a number of docs to remove the use of any aliases including
?
,%
, and MilestonePSTools aliases for commands that have been renamed. - Added tests for PowerShell code blocks and inline code in the docs, and
.PS1
files included in the docs site. This should help to eliminate the possibility of sharing examples with syntax errors or with aliases and other code quality issues.
[23.2.3] 2023-10-11¶
Added¶
- New
Move-VmsHardware
command can be used to move hardware between recording servers on the same management server. - Change passwords on supported hardware devices with
Set-VmsHardware
and thePassword
parameter by including the-UpdateRemoteHardware
switch. - Manage hardware based events like edge motion detection and edge analytic events with
Get-VmsDeviceEvent
andSet-VmsDeviceEvent
. - New custom ValidateArgumentsAttribute
[ValidateTimeSpanRangeAttribute]
which can be used to constrain a[timespan]
parameter like[ValidateTimeSpanRange('00:01:00', '365000.00:00:00')]
which is now how the-Retention
parameters are validated now inAdd-VmsStorage
andAdd-VmsArchiveStorage
.
Fixed¶
- When exporting in AVI format with
Start-Export
the warning message "No error occurred!: DETAILED_ERROR_OK" was returned at the end. This was due to an unexpectedAVIExporter
behavior where theAVIExporter.LastErrorString
property was set to this message after a successful export with the assumption that any value in LastErrorString indicated an error. - When using Set-VmsRoleOverallSecurity without the Role parameter, the Role was unable to be retrieved using the configuration API path of the Role from the permissions hashtable.
Changed¶
- When auto-connected to a management server as a result of running a command requiring a VMS connection, a new connection
profile will not be saved automatically if the login dialog appears and you logon successfully. Either explicitly use
Connect-Vms
, or useSave-VmsConnectionProfile
after logging in. - Minor improvement to error messages for the "requirement" custom attributes. The error message now includes "Source: FunctionName"
so that it's always clear which function called
Assert-VmsRequirementsMet
and failed an assertion. - Changed the casing for the
VmsWebHook
commands by replacing all instances of "WebHook" with "Webhook". - The Codec parameter on the
Start-Export
command now has an argument-completer so you can tab-complete the available codecs. If theAVIExporter
client decides to use a different codec because the specified codec couldn't be used for some reason -- incompatible resolution for example -- a warning will be emitted after a successful export to indicate that the codec used did not match the codec specified. - The
Resolve-VmsDeviceGroupPath
command will now include a path prefix like "/CameraGroupFolder/" to indicate the device type associated with the group. This makes it possible to pipe a collection of paths to theNew-VmsDeviceGroup
andGet-VmsDeviceGroup
commands without worrying about supplying the-Type
parameter when working with multiple device types. These prefixes can be omitted using NoTypePrefix. - Custom ValidateVms* attributes applied to parameters will now automatically result in a description of each requirement in the Get-Help info for the associated parameter, just as RequiresVms* attributes on commands will be described in the command description.
[23.2.2] 2023-09-28¶
Added¶
- New cmdlets for managing webhooks on VMS versions 2023 R1 and later:
New-VmsWebhook
,Get-VmsWebhook
,Set-VmsWebhook
, andRemove-VmsWebhook
. - New
Connect-Vms
,Disconnect-Vms
, and related connection profile cmdletsGet|Set|Remove-VmsConnectionProfile
which together introduce a new way of managing MilestonePSTools connections. When usingConnect-Vms
without parameters, or when using only the 'Name' parameter, the default, or named connection profile will be used to login to the associated VMS. Or, if no connection profile has been created yet, you will be prompted for credentials. Afterward, the login information will be persisted to disk usingExport-CliXml
which will encrypt the provided credentials using CurrentUser scope in your local appdata directory.When using MilestonePSTools with automation via scheduled tasks or other means of launching scripts on event/schedule, this greatly simplifies things by eliminating the need to figure out credential management every time. - New custom attributes, and an "about" topic detailing how custom attributes are used in MilestonePSTools, and how to use them in 3rd party scripts.
- Commands are now decorated with "Requirement" attributes describing required versions, and features for example. These attributes are now used to update a "REQUIREMENTS" list at the bottom of the DESCRIPTION section of each command's Get-Help info and in the online docs.
Changed¶
- Improved performance of
Get-VmsRoleOverallSecurity
by up to 35% on systems with 1000 roles by avoiding redundant API calls and unnecessary enumeration of Roles. Also improved the speed of tab-completion of SecurityNamespace values. Previously it could take more than 10-20 seconds to populate the security namespace names during tab completion. Now it takes ~1 second even with 1000 roles. - The login dialog displayed with
Connect-ManagementServer -ShowDialog
will now automatically update the "Allow only secure communication" checkbox based on the http/https URL scheme. New users of MilestonePSTools are very often tripped up by the initial default value of "checked" which doesn't make sense when the URL starts with http. - All commands requiring a VMS connection are now decorated with the RequiresVmsConnection attribute which will attempt to connect you to your VMS before failing.
Fixed¶
- Fixed an issue where calling
Get-VmsSite
without parameters returned multiple sites instead of the current site when logged into a Milestone Federated Hierarchy. This behavior was introduced by mistake in version 23.2.1. - Fixed issues with the
[MilestonePSTools.RequiresVmsVersion('[,23.2]')]
attribute when used with a blank minimum or maximum range value.
Removed¶
- Removed Google Analytics from the documentation site. A GitHub cookie remains, but you can choose to disable it at any time by clicking the "Change cookie settings" button in the footer.
[23.2.1] 2023-08-16¶
Fixed¶
Get-VmsCameraReport
returned an error when a recording server existed in the site but had no cameras assigned.Get-VmsCameraReport
could, in rare cases, return unexpected-IncludeRecordingStats
results when the report is run at or very near to midnight.Invoke-VmsLicenseActivation
failed due to a reference to a missing$ms
ManagementServer variable.- When using MilestonePSTools in an environment where the .NET Framework does not allow the use of TLS 1.2 or later by
default, and when the Management Server is configured for encryption, and IIS / SChannel on the Management Server is
hardened such that only TLS 1.2 and later can be used to negotiate secure connections, running
Connect-ManagementServer
with the-SecureOnly
switch would result in a failure to login, and omitting-SecureOnly
would result in a fallback to HTTP. Now, when the module is imported, TLS 1.2 and later are explicitly added as allowed protocols.
Changed¶
- Updated target MIP SDK version to 23.2.1.
- Improved error messaging for ValidateResultException errors on
Set-VmsCameraStream
. - Introduced new VMS version and feature attributes used to decorate cmdlets and parameters, thereby simplifying version/feature checking and offering consistent messaging when a cmdlet or parameter requires a specific VMS server version or feature to use.
Get-Site
andSelect-Site
are renamed toVmsSite
with an alias for the old names to prevent breaking changes.Get-VmsToken
now accepts a couple different parameter types to allow you to easily get a copy of the current token for the site to which a resource belongs (camera, or recording server for example).Get-VmsCameraStream
andSet-VmsCameraStream
have been updated to support the new 2023 R2 adaptive playback feature which allows the recording of a secondary stream. The updated module should work on both 2023 R2 as well as older versions without breaking changes. However, you will not be able to use-RecordingTrack Secondary
on versions older than 2023 R2.
Added¶
- New VmsFailoverGroup and VmsFailoverRecorder cmdlets for managing failover recording server groups, assigning failover recording servers to groups, or assigning hot-standby.
- Added failover related properties to
Set-VmsRecordingServer
. - New
Get-VmsVideoOSItem
andFind-VmsVideoOSItem
cmdlets for working with items returned byVideoOS.Platform.Configuration.Instance.GetItem
andGetItems
methods. This should provide a better experience than the olderGet-PlatformItem
as they will "flatten" the item hierarchy for you, making it much simpler to generate a list of items. - New
Test-VmsLicensedFeature
,Assert-VmsLicensedFeature
, andAssert-VmsRequirementsMet
primary for internal use. They are public because they can be very useful when building out tools/scripts that you want to run on different customer systems without knowing ahead of time whether certain features are available. Documentation will follow later, especially on theAssert-VmsRequirementsMet
cmdlet which will be used in combination with custom cmdlet and parameter attributes like[ValidateVmsVersion()]
.
[23.1.3] 2023-04-20¶
Added¶
- New VmsRule cmdlets for working with Milestone VMS rules. Please see the cmdlet documentation for more information. A more detailed guide will be written in the near future to thoroughly detail what the process would look like to create new rules "from scratch" or copy complex rules to new sites. Due to the highly dynamic nature of rules and the wide range of required properties depending on the rule trigger, start-action(s), and stop-action(s), it is easiest to create the rule you want by hand, then export and inspect the rule's property keys and values.
- New-VmsRule
- Get-VmsRule
- Set-VmsRule
- Remove-VmsRule
- Export-VmsRule
- Import-VmsRule
Changed¶
- Minor updates to the all-users and current-user quick-install scripts. Now the all-users script will block until the module has finished installing.
Fixed¶
- When supplying a CSV file without a DriverNumber value, the
Import-VmsHardware
cmdlet threw an exception when processing the results of theStart-VmsHardwareScan
due to a new property added to the hardware scan result. - Removed references to the
Get-HardwareDriver
alias from theImport-VmsHardware
cmdlet as it resulted in a nuisance deprecation warning.
[23.1.2] 2023-04-07¶
Added¶
- Suite of nine new smart client profile cmdlets with nouns starting with 'VmsClientProfile'. The new cmdlets simplify adding, removing, updating, re-prioritizing, exporting, and importing smart client profiles.
- New
Export-VmsRole
andImport-VmsRole
cmdlets. - Added default views for
LoginProvider
,RegisteredClaim
, andClaimChildItem
types to improve the way those objects are displayed in the terminal.
Changed¶
- Included "Always" as an option for time profile parameters on
Set-VmsRole
. - Improved error handling when an error occurs while changing password on hardware with
Set-VmsHardware
. - The
Remove-VmsRoleClaim
cmdlet now includes optionalLoginProvider
andClaimValue
parameters so that you can easily remove claims only if ClaimProvider, ClaimName, and ClaimValue properties match. This is useful when a role has multiple claims defined with the same claim name and different values. And today, only one login provider may be configured at a time in the VMS, but in the future there may be support for multiple login providers. New-VmsRole
now returns the new role whether the-PassThru
switch is used or not. Previously the role was only returned when using the-PassThru
switch because it costs an extra API call to return the new role after asking the server to create it. However, because we need to retrieve it from the server anyway, to handle a potential MIP SDK bug with the time profile properties, and because theNew
verb is typically expected to return an object, the behavior has been changed.Get-VmsRole
will now return role objects with values for ClientProfile, RoleDefaultTimeProfile, and RoleClientLogOnTimeProfile. These were not included previously unless retrieving a role by ID, because the values are only filled when explicitly instantiating a new Role object. The MIP SDK does not provide these values when enumerating roles fromRoleFolder.Roles
.
Fixed¶
- Online help url for
New-VmsBasicUser
used to point to the help forNew-VmsLoginProvider
. New-VmsRole
did not set the DefaultTimeProfile or ClientLogOnTimeProfile as expected due to a potential MIP SDK bug. Now, once the new role is created, the current time profiles are checked, and if they don't match the expected values, they are updated before returning the new role.
[23.1.1] 2023-03-28¶
Added¶
- New "VmsBasicUser" and "VmsBasicUserClaim" cmdlets for managing all aspects of basic users, including basic user entries created for users who have logged in using an external login provider.
- New "VmsLoginProvider" cmdlets for creating, reading, updating, and deleting external login providers.
- New "VmsRoleClaim" cmdlets for managing external login provider claims.
Get-VmsHardwarePassword
replacesGet-HardwarePassword
but an alias is provided to prevent a breaking change.Set-VmsHardware
adds support for changing state, name, address, credentials, description, and password for hardware. TheSet-HardwarePassword
cmdlet has been removed and is now aliased toSet-VmsHardware
to prevent a breaking change.
Changed¶
- Updated target MIP SDK version to 23.1.1.
- Added
VideoOS.Platform.Configuration.Instance.ConfigurationApiManager.UseRestApiWhenAvailble = false;
prior to logging in to server because the API Gateway / REST API does not (yet) support the QueryItems method which is used inGet-VmsCameraReport
, andGet-VmsCamera
among other places. Invoke-ServerConfigurator
can now be used without a "CertificateGroup" parameter and encryption will be enabled or disabled for all certificate groups or VMS components. A new "OverrideLocalManagementServer" switch was added which can be used when using a custom "AuthAddress" during registration directly on a management server.- Note that ServerConfigurator.exe does not currently support removal of this override, and that it is not possible to enable, or disable encryption after using this override switch. If encryption is disabled, you will have to manually use the Server Configurator GUI to disable it from the "Register" tab, enable encryption, then change the override again afterward. This is due to a quirk in the logic of the server configurator which is intended to protect you from accidentally enabling encryption on a recording server node when it is not enabled on the management server node.
[22.3.1] 2023-02-09¶
Added¶
- Introduced
Set-VmsHardwareDriver
which can be used to perform a "hardware replacement" on XProtect VMS versions 2023 R1 and later. This is an exciting and long awaited capability that has been made available in the Configuration API.
Fixed¶
- Fixed issue #77 - error thrown by
Remove-VmsDeviceGroup
when used with-Recurse
on 2019 or older. - Fixed snapshot timeout issues in
Get-VmsCameraReport
by adding aSnapshotTimeoutMS
parameter with a default value of 10 seconds.
Changed¶
- The previous code signing certificate has expired and a new one has been
issued to Milestone Systems, Inc. with the subject 'CN="Milestone Systems, Inc.", OU=Custom Development Americas, O="Milestone Systems, Inc.", L=Lake Oswego, S=Oregon, C=US',
issued by 'CN=SSL.com Root Certification Authority RSA, O=SSL Corporation, L=Houston, S=Texas, C=US'.
In order to upgrade from a previous version, you will need to run
Install-Module MilestonePSTools -SkipPublisherCheck
. Clear-VmsCache
will now also invokeVideoOS.Platform.SDK.Environment.ReloadConfiguration
which will make it possible to access stream and status information for devices that have been added since the start of the PowerShell session.- Improved
Get-VmsCameraStream
andSet-VmsCameraStream
to minimize the number of times the configuration is saved server-side when changing multiple settings, and to reduce the risk that the state of the settings in a local stream reference don't match the updated state of the stream on the server. Get-HardwareDriver
has been renamed toGet-VmsHardwareDriver
and an alias for the old name has been added to prevent breaking changes.
Removed¶
[22.3.0] 2022-11-29¶
Summary¶
This version introduces significantly improved cmdlets for managing device groups and roles, making room for the removal (and aliasing) of many older cmdlets. In addition to these changes, this module makes use of the 2022 R3 MIP SDK binaries.
Most parameters in the new cmdlets implement two very useful features for
interactive PowerShell use: argument completers, and argument transformers. The
completers make it possible to tab-complete or list-complete using CTRL+Space. For
example, try Get-VmsRole -Name
then press TAB after ensuring there is a space
after "-Name". You should see a list of the names of your existing roles.
Combining these argument completers with argument transformers makes it possible
for a function that expects a "Role" object to receive a role "name" instead, and
then go retrieve the role object for you in the background and substitute the
string value you provided with the associated role object. For example, the
Set-VmsRole
cmdlet expects a Role
object, but you can do Set-VmsRole -Role Administrators -Description "Foo"
and it will work anyway.
Here is a quick summary of the cmdlet additions/removals. In almost all cases,
the cmdlets removed have replacement *-Vms*
cmdlets and the new cmdlets are
aliasing the old cmdlet names with very few breaking changes in terms of
parameters.
Cmdlet Changes¶
Name | Status | Comment |
---|---|---|
Get-VmsConnectionString | Added | Replaces Get-ConnectionString |
Set-VmsConnectionString | Added | |
Get-VmsDeviceGroup | Added | Replaces Get-DeviceGroup |
New-VmsDeviceGroup | Added | Replaces Add-DeviceGroup |
Remove-VmsDeviceGroup | Added | Replaces Remove-DeviceGroup |
Set-VmsDeviceGroup | Added | |
Add-VmsDeviceGroupMember | Added | Replaces Add-DeviceGroupMember |
Get-VmsDeviceGroupMember | Added | |
Remove-VmsDeviceGroupMember | Added | |
Join-VmsDeviceGroupPath | Added | |
Split-VmsDeviceGroupPath | Added | |
Get-VmsHardware | Added | Replaces Get-Hardware |
Get-VmsRecordingServer | Added | Replaces Get-RecordingServer |
Set-VmsRecordingServer | Added | |
Get-VmsRole | Added | Replaces Get-Role |
New-VmsRole | Added | Replaces Add-Role |
Remove-VmsRole | Added | Replaces Remove-Role |
Set-VmsRole | Added | |
Add-VmsRoleMember | Added | Replaces Add-User |
Get-VmsRoleMember | Added | Replaces Get-User |
Remove-VmsRoleMember | Added | Replaces Remove-User |
Get-VmsRoleOverallSecurity | Added | |
Set-VmsRoleOverallSecurity | Added | |
Get-VmsToken | Added | Replaces Get-Token |
Get-CameraReport | Removed | |
Get-ConnectionString | Removed | Now aliased to Get-VmsConnectionString |
Add-DeviceGroup | Removed | Now aliased to New-VmsDeviceGroup |
Get-DeviceGroup | Removed | Now aliased to Get-VmsDeviceGroup |
Remove-DeviceGroup | Removed | Now aliased to Remove-VmsDeviceGroup |
Add-DeviceGroupMember | Removed | Now aliased to Add-VmsDeviceGroupMember |
Add-Hardware | Removed | |
Get-Hardware | Removed | Now aliased to Get-VmsHardware |
Export-HardwareCsv | Removed | |
Import-HardwareCsv | Removed | |
Remove-MobileServerCertificate | Removed | |
Set-MobileServerCertificate | Removed | |
Get-RecordingServer | Removed | Now aliased to Get-VmsRecordingServer |
Add-Role | Removed | Now aliased to New-VmsRole |
Get-Role | Removed | Now aliased to Get-VmsRole |
Remove-Role | Removed | Now aliased to Remove-VmsRole |
Get-Token | Removed | Now aliased to Get-VmsToken |
Add-User | Removed | Now aliased to Add-VmsRoleMember |
Get-User | Removed | Now aliased to Get-VmsRoleMember |
Remove-User | Removed | Now aliased to Remove-VmsRoleMember |
Added¶
- New
VmsDeviceGroup*
cmdlets for adding, removing, and changing device groups and device group members for all device types. - New
VmsRole*
cmdlets for getting, adding, setting, and removing roles, role members, and overall security permissions. - New
Get-VmsRecordingServer
andSet-VmsRecordingServer
cmdlets.
Fixed¶
Import-VmsHardware
did not apply hardware and device names after adding hardware which uses a DNS name instead of an IP or URI format.Get-VmsLog
usesWrite-Progress
to provide a progress bar, but did not "complete" the progress when finished, leaving a progress bar up until the script completes.Connect-ManagementServer -ShowDialog
opens a login dialog but that dialog did not always have keyboard focus. Now, hopefully, the dialog always shows on top of the shell, and has keyboard focus.Import-VmsLicense
failed due to missing$ms = Get-VmsManagementServer
. So unless you had already done that in your own global or local scope, this cmdlet did not work.Set-VmsCameraStream
incorrectly attempted to save changes to stream settings even if the key for the setting didn't exist on the camera. This did not result in an error, but did cause an unnecessary API call and a confusing verbose message.- After removing hardware, the removed hardware could still be returned by Get-Hardware. Now the HardwareFolder cache is cleared to prevent this.
- Fixed a stale cache issue when adding or removing hardware causing new hardware to be undiscoverable and removed hardware to still be present in the cache.
- Calling
Get-VmsStorage
without parameters threw an error instead of returning all storages from all recording servers. Get-VmsCamera
returned cameras that were enabled even though their parent hardware device was disabled. Now if you want enabled cameras, you only get cameras that would normally show up as enabled in Management Client.Get-PlaybackInfo
threw a null reference exception when called with a camera that is either disabled or not a member of a camera group. Now a more useful error is displayed.- Fixed missing "Online Help" links so that
Get-Help command-name -Online
should work for all cmdlets in the module again.
Changed¶
- Updated to 2022 R3 MIP SDK libraries.
- Added Shortcut and ShortName properties to
Get-VmsCameraReport
. - Application icon for
Connect-ManagementServer -ShowDialog
user interface replaced with plain Milestone diamond logo without the "milestone" wordmark. The title bar is too small an area for an icon with a word in it, and it didn't render well. Get-ConnectionString
has been renamed toGet-VmsConnectionString
and it now supports 2022 R3 where the connection strings are now all placed in a new registry key together.Set-VmsCameraStream
will now apply changes to all streams before callingSave()
. This reduces the number of API calls made while saving changes, and makes it easier to fix rare validation issues where you have to change the value of a stream property across more than one stream at the same time.
Removed¶
Remove-MobileServerCertificate
andSet-MobileServerCertificate
- useSet-XProtectCertificate
, or if your Milestone version is not old enough to use the server configurator CLI, use an older version of MilestonePSTools.Export-HardwareCsv
andImport-HardwareCsv
- useExport-VmsHardware
or alternative import/export samples to be made available online.Get-CameraReport
- useGet-VmsCameraReport
instead.
[22.2.0] 2022-07-22¶
Fixed¶
- Typo in documentation for
Import-VmsHardware
. Get-Snapshot -Live
sometimes returned very old, definitely not live, images. Fixed by settingSendInitialImage
tofalse
.Add-DeviceGroup
threw an exception when attempting to create the same group twice in the same session, or when creating a subgroup after creating the parent group. Now theClearChildrenCache()
method is called on the parent device group to ensure the cache is updated with newly created groups.
Changed¶
- Removed default description "Added using PowerShell at [date]" applied to devices added with
Import-VmsHardware
. Export-VmsHardware
now overwrites the CSV atPath
if it exists already, and theAppend
switch has been added.- Added
Culture
switch to theGet-VmsLog
cmdlet to make it possible to request log entries in a specific language. - Improved error messages for licensing cmdlets when they are used against a VMS version released before server-side support of those commands.
- Removed noisy verbose logging for cmdlets associated with snapshot and export retrieval.
- Added
MotionThreshold
column toGet-VmsCameraReport
output, and theManualSensitivity
value is now reported the same as the Management Client UI - the internal value from configuration API is now divided by 3.
[22.1.0] 2022-04-19¶
Fixed¶
- Fixed an issue with
Import-VmsHardware
where cameras on one recording server could not be imported into another recording server. - Fixed an issue with
Import-VmsHardware
where cameras were not enabled or renamed after importing. - Fixed an uncommon issue with
Get-VmsCameraReport
where the errorCannot index into a null array
is returned when at least one camera lacks any stream settings in the Settings tab for the camera in Smart Client.
Added¶
- New cmdlets for getting, setting, and clearing site information properties like company name, address, and contact information.
- Get-VmsSiteInfo
- Set-VmsSiteInfo
- Clear-VmsSiteInfo
Changed¶
- Changed RequiredModules entry for MipSdkRedist in module manifest from 21.2.0 to 22.1.0.
[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 viaWrite-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
withGet-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 byGet-IServerCommandService
andGet-IConfigurationService
. Previously, you would useGet-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 aWrite-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
replacedGet-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 toGet-VmsCamera
.
Deprecated¶
Get-Camera
is deprecated in favor ofGet-VmsCamera
.Get-CameraSetting
is deprecated in favor ofGet-VmsCameraGeneralSetting
andGet-VmsCameraStream
.Set-CameraSetting
is deprecated in favor ofSet-VmsCameraGeneralSetting
andSet-VmsCameraStream
.Get-Stream
is deprecated in favor ofGet-VmsCameraStream
.Set-Stream
is deprecated in favor ofSet-VmsCameraStream
.
[21.2.2] 2021-11-04¶
Added¶
New-VmsFailoverGroup
,Get-VmsFailoverGroup
, andRemove-VmsFailoverGroup
which is supported for XProtect Expert and XProtect Corporate 2021 R2 and newer.
Fixed¶
Get-VmsCameraReport
failed with the errorException 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 theWebServerUri
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