Get-VEValueFormatting.ps1
|
function Get-VEValueFormatting { <# .SYNOPSIS Return value formatting object for a code from a site .DESCRIPTION Return value formatting object for a code from a site .INPUTS The code string can be piped to the function .EXAMPLE $Code | Get-VEValueFormatting Example of how to get value formatting object for a code from a site using the VRM API .NOTES Author: Decembry Quentin #> [CmdletBinding(DefaultParameterSetName='Object')] [OutputType([PSCustomObject])] [Alias()] param( # The VE site [Parameter(Mandatory=$true,ParameterSetName='Object')] [PSTypeName('VictronEnergy.Site')] $Site, # The VE site id [Parameter(Mandatory=$true,ParameterSetName='Property')] [String] $SiteId, # The code [Parameter(Mandatory=$true,ValueFromPipeline=$true)] [string] $Code ) begin { if ($PSBoundParameters['Debug']) { $DebugPreference = 'Continue' } if ($MyInvocation.MyCommand.ModuleName) { $Private:ThisFunction = '{0}::{1}' -f $MyInvocation.MyCommand.ModuleName, $MyInvocation.MyCommand.Name } else { $Private:ThisFunction = '{0}::{1}' -f (Get-PSCallStack)[0].ScriptName, $MyInvocation.MyCommand.Name } Write-Debug "[$Private:ThisFunction] Begin" if (!$SiteId) { $SiteId = $Site.IdSite } } process { Write-Debug "[$Private:ThisFunction] Process code $Code" if (!$Script:VE_ValueFormatting.$SiteId) { try { Write-Debug "[$Private:ThisFunction] Get diagnostics to fill the table with value formatting objects" $null = Get-VEDiagnostics -SiteId $SiteId } catch { $_ | ForEach-Object { Write-Warning "[$Private:ThisFunction] $_" } } } if ($VF = $Script:VE_ValueFormatting.$SiteId.$Code) { Write-Debug "[$Private:ThisFunction] Return value formatting object" Write-Output -NoEnumerate -InputObject $VF } else { if ($Code -notin $Script:VE_MeasurementAttributes.Code) { throw "Invalid code '$Code'" } else { Write-Error "Code '$Code' unavailable" } } } end { Write-Debug "[$Private:ThisFunction] End" } } # SIG # Begin signature block # MIIIbQYJKoZIhvcNAQcCoIIIXjCCCFoCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUsSEgRImcGYw5mXuB8CiVOYMW # E1WgggX4MIICYjCCAgigAwIBAgITXwAAAAITcsrrTJecaQAAAAAAAjAKBggqhkjO # PQQDAjAkMQswCQYDVQQGEwJCRTEVMBMGA1UEAxMMSG9tZSBSb290IENBMB4XDTIy # MDUwNTE0MDMxOFoXDTMyMDUwNTE0MTMxOFowJzELMAkGA1UEBhMCQkUxGDAWBgNV # BAMTD0hvbWUgSXNzdWluZyBDQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDOT # aIIU+QU7LfsmyPqGkCf53SrJuaBPpb5iVILCvG3cQxL6vgIZaGRaKlzYO+lq3CnN # b4rtJW2d7rlTeehXtpWjggEUMIIBEDAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4E # FgQUYf1/nMEp3Df+Nzi+Hvk7FymPsrMwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBD # AEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUfSS6 # P6qin/3ibmvelGJQhV1r1VgwOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL3BraS5x # ZWRpbnV4LmJlL0hvbWUlMjBSb290JTIwQ0EuY3JsMEYGCCsGAQUFBwEBBDowODA2 # BggrBgEFBQcwAoYqaHR0cDovL3BraS5xZWRpbnV4LmJlL0hvbWUlMjBSb290JTIw # Q0EuY3J0MAoGCCqGSM49BAMCA0gAMEUCIERRzfMu3vx9vb+Apud4sDkOEKhKrCEl # gSsedbjZRJ+YAiEA8BBaOqhnbnsUBIX2nty77euunwoAHrCuWzab5xJiy0UwggOO # MIIDM6ADAgECAhNRAAAAMJpCm89a8zgYAAAAAAAwMAoGCCqGSM49BAMCMCcxCzAJ # BgNVBAYTAkJFMRgwFgYDVQQDEw9Ib21lIElzc3VpbmcgQ0EwHhcNMjIwNzExMDc0 # NzQ3WhcNMjQwNzExMDc1NzQ3WjAbMRkwFwYDVQQDExBEZWNlbWJyeSBRdWVudGlu # MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjALWtmJ1AQG77y9rUBbT # HXR9FZokTP01bBWfNzk4Kenr/Xpm7Jt09PqLoNS8ToWWKRz9EkM+jg7lnLljWKcO # G+fT1TbaEwxOpncugnbrioQQonbdWpyn0P7PxlqjUQdWd5Z7xQ0Z8RO3vvERWtDA # L9QH0VBHNK4WqdWh3ElV6ogJUsy5hYxVTIU0K5VEYkIT4qvqq0RdajKavGWIr57R # EsYv52Jcyh9FNgZKGdu9NwSKZUvkwHxGsI8zmwfP1I6QRkzsqPXlpk7A8NTD3+h+ # 4Y5AprRFyAWrVNYH+UQQe2D/PjjbKtfsU9xzG9EnqJF09pVRchapis+8DbfWnoC8 # iQIDAQABo4IBfTCCAXkwOgYJKwYBBAGCNxUHBC0wKwYjKwYBBAGCNxUIhorlOcPr # DIadiwndkzuHjPAAPqb1CYWVxXgCAWQCAQowEwYDVR0lBAwwCgYIKwYBBQUHAwMw # DgYDVR0PAQH/BAQDAgeAMBsGCSsGAQQBgjcVCgQOMAwwCgYIKwYBBQUHAwMwHQYD # VR0OBBYEFAkUh200U2U2epAoy2ZvT7nwAYGBMB8GA1UdIwQYMBaAFGH9f5zBKdw3 # /jc4vh75Oxcpj7KzMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9wa2kucWVkaW51 # eC5iZS9Ib21lJTIwSXNzdWluZyUyMENBLmNybDBJBggrBgEFBQcBAQQ9MDswOQYI # KwYBBQUHMAKGLWh0dHA6Ly9wa2kucWVkaW51eC5iZS9Ib21lJTIwSXNzdWluZyUy # MENBLmNydDAuBgNVHREEJzAloCMGCisGAQQBgjcUAgOgFQwTRGVjZW1icnkuUUBo # b21lLmxhbjAKBggqhkjOPQQDAgNJADBGAiEAh39vHCgqIDL4XazyHPiChMbu0by+ # aFP7rdzlJmM0K6ACIQCaP4CXolxlzdfkJsoIoDIJUrunYIlZ0yxs9OSnG1qmCjGC # Ad8wggHbAgEBMD4wJzELMAkGA1UEBhMCQkUxGDAWBgNVBAMTD0hvbWUgSXNzdWlu # ZyBDQQITUQAAADCaQpvPWvM4GAAAAAAAMDAJBgUrDgMCGgUAoHgwGAYKKwYBBAGC # NwIBDDEKMAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor # BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUHBo3nxFn # ZhPq4hh85zGgG7B3oDUwDQYJKoZIhvcNAQEBBQAEggEALwhPBYJ6lLj9t4R7UFoG # 0iNnPY7gNXXGQy06rnERFTXhqwxFkNyekXeBFmJE8rtN4dqUvfghTK6hMbtqVpNl # bqctQL4Uv45WhnBy0GqpCrqvVn/LI//3ZzNAn9n79FPB/YRq6NyhZPY/xq0xjlLD # Qr7bnFR9hkwDzUb8mDyY8w+OaAhD6352Ip5GUJxNRImOOfJ9XMakqrWPj+nYZ/c9 # 7O7ep6rUKEW6TuHtafJsQZ12d0bLo1SxsvZnJy5Vn/tjofOekmeBHNHNvvUfkNIo # bcVbrOwT8H85u2OnB41nb5d73xdfbW9gKS92LfiXEMMrNxFCTiwK6cWmI5K8Evli # 8A== # SIG # End signature block |