public/Get-AxisRecordingProfile.ps1
<#
.SYNOPSIS Retrieves the recording profiles for an Axis device. .DESCRIPTION The Get-AxisRecordingProfile function retrieves the recording profiles for a specified Axis device. It checks for both continuous recording profiles and action rules associated with each lens of the device. It returns an object containing information about the status, type, disk location, and any errors for each lens. .PARAMETER Device The name or IP address of the Axis device. .EXAMPLE Get-AxisRecordingProfile -Device "192.168.1.100" Lens Status Type Disk Error ---- ------ ---- ---- ----- 1 OK Continuous SD_DISK N/A 2 OK Continuous SD_DISK N/A 3 OK Continuous SD_DISK2 N/A 4 OK Continuous SD_DISK N/A #> function Get-AxisRecordingProfile { [cmdletbinding()] Param( [Parameter(Mandatory=$true)] [String]$Device ) $LensCount = (Get-AxisViewStatus -RemoveCombinedViews -Device $Device | Measure-Object).count $SingleLens = $LensCount -eq 1 $cProfiles = Get-AxisContinuousRecordingProfile -Device $Device $Actions = Get-AxisAction -Device $Device | ? { $_.TemplateToken -eq "com.axis.action.unlimited.recording.storage" } #Decode Actions $aProfiles = @() ForEach ($ap in $Actions) { $Lens = 1 #No "camera=" in stream options defaults to 1 if(!$SingleLens -and $ap.StreamOptions.contains('camera')) { $Lens = $ap.StreamOptions.subString($ap.StreamOptions.indexOf('camera=')+7,1) } $aProfiles += [PSCustomObject]@{ ID = $ap.ID camera = $Lens Disk = $ap.StorageLocation } } $output = @() ForEach ($Lens in 1..$LensCount) { $HasCProfile = $cProfiles.camera -contains $Lens $HasAProfile = $aProfiles.camera -contains $Lens if($HasCProfile -and $HasAProfile) { $output += [PSCustomObject]@{ Lens = $Lens Status = 'Error' Type = 'N/A' Disk = 'N/A' Error = 'Continuious Profiles and Action rules found for this lens' } } elseif($HasCProfile) { $cProfile = $cProfiles | ? { $_.camera -eq $Lens } $output += [PSCustomObject]@{ Lens = $Lens Status = 'OK' Type = 'Continuous' Disk = $cProfile.Disk Error = 'N/A' } } elseif($HasAProfile) { $aProfile = $aProfiles | ? { $_.camera -eq $Lens } $output += [PSCustomObject]@{ Lens = $Lens Status = 'Warning' Type = 'Action' Disk = $aProfile.Disk Error = 'It is recomended to use Continuous Profiles' } } else { $output += [PSCustomObject]@{ Lens = $Lens Status = 'Warning' Type = 'N/A' Disk = 'N/A' Error = 'No Profile Exists' } } } return $output } |