Public/Tools/Get-StreamProperties.ps1
function Get-StreamProperties { <# .SYNOPSIS Get a list of configuration properties from the designated camera stream .DESCRIPTION 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. .EXAMPLE PS C:\> Select-Camera | Get-StreamProperties -StreamName 'Video stream 1' 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. #> [CmdletBinding()] [OutputType([VideoOS.ConfigurationApi.ClientService.Property[]])] param ( # Specifies the camera to retrieve stream properties for [Parameter(ValueFromPipeline, Mandatory, ParameterSetName = 'ByName')] [Parameter(ValueFromPipeline, Mandatory, ParameterSetName = 'ByNumber')] [VideoOS.Platform.ConfigurationItems.Camera] $Camera, # Specifies a StreamUsageChildItem from Get-Stream [Parameter(ParameterSetName = 'ByName')] [ValidateNotNullOrEmpty()] [string] $StreamName, # Specifies the stream number starting from 0. For example, "Video stream 1" is usually in the 0'th position in the StreamChildItems collection. [Parameter(ParameterSetName = 'ByNumber')] [ValidateRange(0, [int]::MaxValue)] [int] $StreamNumber ) process { switch ($PSCmdlet.ParameterSetName) { 'ByName' { $stream = (Get-ConfigurationItem -Path "DeviceDriverSettings[$($Camera.Id)]").Children | Where-Object { $_.ItemType -eq 'Stream' -and $_.DisplayName -like $StreamName } if ($null -eq $stream -and ![system.management.automation.wildcardpattern]::ContainsWildcardCharacters($StreamName)) { Write-Error "No streams found on $($Camera.Name) matching the name '$StreamName'" return } foreach ($obj in $stream) { Write-Output $obj.Properties } } 'ByNumber' { $streams = (Get-ConfigurationItem -Path "DeviceDriverSettings[$($Camera.Id)]").Children | Where-Object { $_.ItemType -eq 'Stream' } if ($StreamNumber -lt $streams.Count) { Write-Output ($streams[$StreamNumber].Properties) } else { Write-Error "There are $($streams.Count) streams available on the camera and stream number $StreamNumber does not exist. Remember to index the streams from zero." } } Default {} } } } |