MilestonePSTools.psd1

#
# Module manifest for module 'MilestonePSTools'
#
# Generated by: Joshua Hendricks
#
# Generated on: 7/19/2021
#

@{

# Script module or binary module file associated with this manifest.
RootModule = 'MilestonePSTools.psm1'

# Version number of this module.
ModuleVersion = '21.1.451866'

# Supported PSEditions
CompatiblePSEditions = 'Desktop'

# ID used to uniquely identify this module
GUID = '46909c4a-d5d8-4faf-830d-5a0df564fe7b'

# Author of this module
Author = 'Joshua Hendricks'

# Company or vendor of this module
CompanyName = 'Milestone Systems'

# Copyright statement for this module
Copyright = '(c) 2021 Milestone Systems. All rights reserved.'

# Description of the functionality provided by this module
Description = 'Milestone XProtect VMS configuration and automation powered by the Milestone MIP SDK'

# Minimum version of the Windows PowerShell engine required by this module
PowerShellVersion = '5.1'

# Name of the Windows PowerShell host required by this module
# PowerShellHostName = ''

# Minimum version of the Windows PowerShell host required by this module
# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
DotNetFrameworkVersion = '4.7'

# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# CLRVersion = ''

# Processor architecture (None, X86, Amd64) required by this module
ProcessorArchitecture = 'Amd64'

# Modules that must be imported into the global environment prior to importing this module
RequiredModules = @(@{ModuleName = 'MipSdkRedist'; ModuleVersion = '21.1.2'; })

# Assemblies that must be loaded prior to importing this module
RequiredAssemblies = '.\lib\MilestoneLib.dll', 'System.Drawing', 'System.Device'

# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()

# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
FormatsToProcess = 'MilestonePSTools.Format.ps1xml'

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
# NestedModules = @()

# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
FunctionsToExport = 'Export-HardwareCsv', 'Import-HardwareCsv', 'Get-LicenseDetails', 
               'Get-LicensedProducts', 'Get-LicenseInfo', 'Get-LicenseOverview', 
               'Invoke-LicenseActivation', 'Get-MobileServerInfo', 
               'Remove-MobileServerCertificate', 'Set-MobileServerCertificate', 
               'Get-CameraRecordingStats', 'Get-CameraReport', 'Get-CameraReportV1', 
               'Get-CurrentDeviceStatus', 'Get-VideoDeviceStatistics', 
               'Add-VmsArchiveStorage', 'Add-VmsStorage', 'Get-VmsArchiveStorage', 
               'Get-VmsStorage', 'Remove-VmsArchiveStorage', 'Remove-VmsStorage', 
               'ConvertFrom-GisPoint', 'ConvertFrom-Snapshot', 'Get-BankTable', 
               'Get-ConfigurationItemProperty', 'Get-StreamProperties', 
               'Get-ValueDisplayName', 'Install-StableFPS', 
               'Invoke-ServerConfigurator', 'Resize-Image', 'Select-Camera', 
               'Select-VideoOSItem', 'Set-ConfigurationItemProperty'

# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
CmdletsToExport = 'Add-Bookmark', 'Add-DeviceGroup', 'Add-DeviceGroupMember', 
               'Add-EvidenceLock', 'Add-GenericEvent', 'Add-Hardware', 
               'Add-RegisteredService', 'Add-Role', 'Add-Stream', 'Add-User', 
               'Add-UserDefinedEvent', 'Connect-ManagementServer', 
               'Copy-EvidenceLock', 'Disconnect-ManagementServer', 
               'Get-AlarmDefinition', 'Get-AlarmLine', 'Get-AlarmStatistics', 
               'Get-Bookmark', 'Get-Camera', 'Get-CameraSetting', 
               'Get-ConfigurationItem', 'Get-ConnectionString', 'Get-DeviceAcl', 
               'Get-DeviceGroup', 'Get-EventLine', 'Get-EvidenceLock', 
               'Get-GenericEvent', 'Get-GenericEventDataSource', 'Get-Hardware', 
               'Get-HardwareDriver', 'Get-HardwarePassword', 'Get-HardwareSetting', 
               'Get-IAlarmClient', 'Get-IConfigurationService', 'Get-Input', 
               'Get-InputSetting', 'Get-IServerCommandService', 'Get-ItemState', 
               'Get-Kind', 'Get-Log', 'Get-LoginSettings', 'Get-ManagementServer', 
               'Get-Metadata', 'Get-MetadataSetting', 'Get-MethodInfo', 
               'Get-Microphone', 'Get-MicrophoneSetting', 'Get-MipMessageIdList', 
               'Get-MipSdkEula', 'Get-Output', 'Get-OutputSetting', 
               'Get-OverallSecurity', 'Get-PlatformItem', 'Get-PlaybackInfo', 
               'Get-RecorderStatusService2', 'Get-RecordingServer', 
               'Get-RegisteredService', 'Get-Role', 'Get-SequenceData', 'Get-Site', 
               'Get-Snapshot', 'Get-Speaker', 'Get-SpeakerSetting', 'Get-Stream', 
               'Get-Token', 'Get-Translations', 'Get-User', 'Get-UserDefinedEvent', 
               'Get-VideoSource', 'Get-WhoIsOnline', 'Invoke-Method', 
               'Invoke-MipSdkEula', 'New-Alarm', 'New-AlarmCondition', 
               'New-AlarmOrder', 'Remove-Bookmark', 'Remove-DeviceGroup', 
               'Remove-EvidenceLock', 'Remove-GenericEvent', 'Remove-Hardware', 
               'Remove-RegisteredService', 'Remove-Role', 'Remove-Stream', 
               'Remove-User', 'Remove-UserDefinedEvent', 'Select-Site', 'Send-Alarm', 
               'Send-GenericEvent', 'Send-MipMessage', 'Send-UserDefinedEvent', 
               'Set-CameraSetting', 'Set-ConfigurationItem', 'Set-DeviceAcl', 
               'Set-HardwarePassword', 'Set-HardwareSetting', 'Set-InputSetting', 
               'Set-MetadataSetting', 'Set-MicrophoneSetting', 'Set-OutputSetting', 
               'Set-OverallSecurity', 'Set-SpeakerSetting', 'Set-Stream', 
               'Start-Export', 'Test-Playback', 'Trace-Events', 'Update-AlarmLine', 
               'Update-Bookmark', 'Update-EvidenceLock', 'Update-RegisteredService'

# Variables to export from this module
# VariablesToExport = @()

# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
AliasesToExport = @()

# DSC resources to export from this module
# DscResourcesToExport = @()

# List of all modules packaged with this module
# ModuleList = @()

# List of all files packaged with this module
FileList = '.\eula.rtf', '.\MilestonePSTools.Format.ps1xml', 
               '.\MilestonePSTools.psm1', '.\lib\MilestoneLib.dll', 
               '.\lib\MilestonePSTools.dll', '.\lib\MilestonePSTools.dll-Help.xml', 
               '.\Private\ConvertFrom-StreamUsage.ps1', 
               '.\Private\Copy-ConfigurationItem.ps1', 
               '.\Private\Get-HttpSslCertThumbprint.ps1', 
               '.\Private\Get-ProcessOutput.ps1', 
               '.\Private\GetCodecValueFromStream.ps1', 
               '.\Private\GetFpsValueFromStream.ps1', 
               '.\Private\GetResolutionValueFromStream.ps1', 
               '.\Public\ImportExport\Export-HardwareCsv.ps1', 
               '.\Public\ImportExport\Import-HardwareCsv.ps1', 
               '.\Public\LicenseInformation\Get-LicenseDetails.ps1', 
               '.\Public\LicenseInformation\Get-LicensedProducts.ps1', 
               '.\Public\LicenseInformation\Get-LicenseInfo.ps1', 
               '.\Public\LicenseInformation\Get-LicenseOverview.ps1', 
               '.\Public\LicenseInformation\Invoke-LicenseActivation.ps1', 
               '.\Public\MobileServer\Get-MobileServerInfo.ps1', 
               '.\Public\MobileServer\Remove-MobileServerCertificate.ps1', 
               '.\Public\MobileServer\Set-MobileServerCertificate.ps1', 
               '.\Public\Reports\Get-CameraRecordingStats.ps1', 
               '.\Public\Reports\Get-CameraReport.ps1', 
               '.\Public\Reports\Get-CameraReportV1.ps1', 
               '.\Public\Reports\Get-CurrentDeviceStatus.ps1', 
               '.\Public\Reports\Get-VideoDeviceStatistics.ps1', 
               '.\Public\Storage\Add-VmsArchiveStorage.ps1', 
               '.\Public\Storage\Add-VmsStorage.ps1', 
               '.\Public\Storage\Get-VmsArchiveStorage.ps1', 
               '.\Public\Storage\Get-VmsStorage.ps1', 
               '.\Public\Storage\Remove-VmsArchiveStorage.ps1', 
               '.\Public\Storage\Remove-VmsStorage.ps1', 
               '.\Public\Tools\ConvertFrom-GisPoint.ps1', 
               '.\Public\Tools\ConvertFrom-Snapshot.ps1', 
               '.\Public\Tools\Get-BankTable.ps1', 
               '.\Public\Tools\Get-ConfigurationItemProperty.ps1', 
               '.\Public\Tools\Get-StreamProperties.ps1', 
               '.\Public\Tools\Get-ValueDisplayName.ps1', 
               '.\Public\Tools\Install-StableFPS.ps1', 
               '.\Public\Tools\Invoke-ServerConfigurator.ps1', 
               '.\Public\Tools\Resize-Image.ps1', 
               '.\Public\Tools\Select-Camera.ps1', 
               '.\Public\Tools\Select-VideoOSItem.ps1', 
               '.\Public\Tools\Set-ConfigurationItemProperty.ps1'

# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
PrivateData = @{

    PSData = @{

        # Tags applied to this module. These help with module discovery in online galleries.
        Tags = 'PSEdition_Desktop', 'Windows', 'Milestone', 'ConfigApi', 
               'ConfigurationApi', 'XProtect', 'MIPSDK'

        # A URL to the license for this module.
        # LicenseUri = ''

        # A URL to the main website for this project.
        ProjectUri = 'https://github.com/MilestoneSystemsInc/PowerShellSamples'

        # A URL to an icon representing this module.
        IconUri = 'https://download.milestonesys.com/tools/MilestonePSTools/MilestoneLogo.png'

        # ReleaseNotes of this module
        ReleaseNotes = '
## 21.1.451866
* Added -LiftPrivacyMask switch parameter to Get-Snapshot so now liftable privacy masks can be lifted for snapshots.
* Refactored the way IConfigurationService and IServerCommandService communication channels are established to improve compatibility with both pre & post 2021 R1 products.
* Replaced the Server and Port parameters on Connect-ManagementServer with ServerAddress. The old parameters remain in place for compatibility but if ServerAddress is provided, it will take precedence.
* Improved error handling in Get-CameraReport to provide feedback if data collection fails within the child runspaces where data is collected for camera rows in parallel. Previously you could end up with no data after waiting for the camera report to complete, and there would be no errors to explain why.
* Updated MipSdkRedist dependency to version 21.1.2 which includes a missed MIP SDK reference to VideoOS.Platform.ConfigurationAPI.dll.
* Updated `Connect-ManagementServer -ShowDialog` so that the form should pop-up in the center of the screen where your terminal is, on top of the terminal instead of behind, and with keyboard focus.
 
### Known Issues
* Get-ConfigurationItem, Get-IConfigurationService, and Get-IServerCommandService will not use the new OAuth-based interface yet even if it''s available. Hopefully the next release will default to using the new security model for the WCF client proxies.
 
 
## 21.1.451603
* Update MipSdkRedist dependency version to 21.1.1 to ensure it gets updated as it is required to use MIP SDK 2021 R1 in order to successfully connect to any Milestone VMS version.
* Add login dialog option to Connect-ManagementServer using the -ShowDialog switch parameter. If you enable auto-login, you can disable it using the -DisableAutoLogin switch.
* Refactored the project a bit so that the MipSdkRedist dependency is based on the MIP SDK NuGet packages instead of the redistributable MIP SDK contents.
 
## 21.1.451440
* Handle a new MIP SDK Newtonsoft.Json dependency issue when logging into 2021 R1 or newer.
* Add a -SecureOnly switch on Connect-ManagementServer to support the new MIP SDK feature to use new, more secure interfaces. Maybe this will be a default in the future but for now to avoid a breaking change, it is opt-in.
* Update some internal client-generation code for communicating with services like the IConfigurationService. The change should hopefully be transparent.
 
## 21.1.451385
* Updated Get-CameraReport to use runspaces for faster processing, and added several new columns of additional information and the ability to include live snapshots in the report
* Updated MIP SDK redistributable reference to 2021 R1 (MipSdkRedist 21.1.0)
 
## 20.3.450930
* Updated version to reflect major/minor MIP SDK version with the build incrementing independently with each release of MilestonePSTools
* Updated Connect-ManagementServer so that it passes the manufacturer name, and integration name, version and guid to the Management Server during login. This will enable Installed Integration Insights for MilestonePSTools on XProtect VMS versions starting from 2021 R1.
 
## 1.1.5
* Removed the *-RecorderConfig and *-ManagementServerConfig cmdlets as these had the ability to manipulate the services in ways not prescribed by the MIP SDK. These functions now join the other retired functions in the MilestonePSTools.Extensions module.
 
## 1.1.4
* Removed several cmdlets which used unsupported methods to access data which is unavailable in MIP SDK. Cmdlets removed: Add-FailoverServer, Get-FailoverServer, Get-FailoverServerGroup, Get-IServerProxyService, Get-PublicViewGroup, Get-VmoClient, Invoke-DiagnosticsTool, New-FailoverServerGroup, New-PublicViewGroup, Remove-FailoverServer, Remove-PublicViewGroup, Set-License, Update-License, Add-RecordingServer.
* Added new license-related cmdlets including Get-LicenseDetails, Get-LicensedProducts, Get-LicenseInfo, Get-LicenseOverview, and Invoke-LicenseActivation. These all make use of Configuration API now instead of the unsupported ServerProxyService channel previously used.
* Several new format definitions have been added to MilestonePSTools.Format.ps1xml including for roles, itemstate, hardwaredrivers, evidence locks, bookmarks, user-defined events, and generic events.
* Fixed a bug in several cmdlets which resulted in no pipeline output if you used `Select-Object -First n` where n represents fewer items than are available. Turns out I needed to re-throw the pipelinestoppedexception.
 
## 1.1.3
* Add formatters for ManagementServer, RecordingServer, Hardware, Camera, Microphone, Speaker, Metadata, Input, Output, and ConfigurationItem objects
 
## 1.1.2
* Fix bug in Storage format file where TotalRetention was incorrectly derived
* Add Id column to both Storage and ArchiveStorage format files
 
## 1.1.1
* Added Get|Add|Remove-VmsStorage and Get|Add|Remove-VmsArchiveStorage to simplify configuring VMS storage
* Added first format specifiers in MilestonePSTools.Format.ps1xml - more to come!
* Fix PipelineStoppedException errors in a couple more cmdlets. The following used to throw exceptions: Get-Something | Select -First 1
 
## 1.1.0
 
_Some potentially breaking changes were made in this version so the minor version value has been incremented to reflect that._
 
### Breaking Changes (depending on your usage)
* Connect-ManagementServer will now through a terminating error if already connected to a Management Server
* Connect-ManagementServer has a -Force switch which will allow you to forcefully close existing connections and connect to the Management Server without error or warning
* Disconnect-ManagementServer no longer throws an error if you''re not already connected. It will silently disconnect, or silently return if not connected
* Get-ManagementServer no longer throws a terminating exception, so you can use `Get-ManagementServer -ErrorAction Ignore` to test for null or check which Management Server, if any, you''re connected to
 
### Improvements
* Several Get-* cmdlets no longer throw errors when you pipe to Select-Object -First 1. The PipelineStoppedException is now ignored
* The insensitive term ''Master'' has been removed everywhere with the exception of an alias to Select-Site where ''MasterSite'' exists as an alias for backward compatibility
* Some internal refactoring has improved the compatibility of MilestonePSTools with runspaces so that you can parallelize operations more easily without having to login inside each runspace/thread.
 
## 1.0.90
* Mark ProgressRecord objects as complete when progress reaches 100% so that the progress bars don''t just stack on top of each other during bulk operations.
* Interpret Server Configurator exit codes on Invoke-ServerConfigurator and properly dispose of the Process object when Server Configurator exits.
* Switch out terminating errors in favor of normal errors in many functions. This way the user can decide how critical a particular error is and handle it without a try/catch block.
* Significantly improve performance of Add-Role on systems with many roles
* Add validation exception error handling to Set-Stream to improve error output.
* Modify Get-Log to catch and ignore PipelineStoppedException while passing any other exceptions to the pipeline as ErrorRecords
* Eliminate error in Get-CameraReport where Get-CameraSetting throws an error on some cameras due to the lack of "General" setting properties
 
## 1.0.89
* Update Set-ManagementServerConfig to also register the Data Collector server
* Modify Trace-Event so that the MaxInterEventDelay timer is only started after the first event is received.
* Fix bugs in Get-HardwareSetting and Get-CameraSetting where an empty object was returned if no matching setting was found. Now if the setting name has no wildcards and no matching setting is found, an error is returned. If a wildcard is present and no matching setting is found, the command returns nothing so a $null check will be useful. There''s more work to do in these device setting cmdlets to tidy up and improve their output.
 
## 1.0.88
* Update Set-RecorderConfig to synchronize the Authorization Server URI for the Data Collector Server to match the URI used by the Recording Server
 
## 1.0.87
* Replaced Get-Diagnostics with Invoke-DiagnosticsTool and improved functionality including returning a FileInfo object representing the new ZIP file and only opening explorer.exe to the path if [environment]::UserInteractive is true.
* Update Set-RecorderConfig to also update registration for the Data Collector'


    } # End of PSData hashtable

} # End of PrivateData hashtable

# HelpInfo URI of this module
# HelpInfoURI = ''

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''

}