Private/ConvertTo-CloudPCReportValue.ps1
|
function ConvertTo-CloudPCReportValue { [CmdletBinding()] param( [AllowNull()] [object]$Value, [AllowNull()] [string]$PropertyType, [Parameter(Mandatory)] [string]$Column ) begin { } process { if ($null -eq $Value -or $Value -isnot [string] -or [string]::IsNullOrWhiteSpace($Value)) { $Value } elseif ($PropertyType -eq 'DateTime') { try { ([datetime]$Value).ToLocalTime() } catch { Write-Verbose "ConvertTo-CloudPCReportValue: could not parse DateTime value '$Value' for '$Column'." $Value } } elseif ($PropertyType -in @('Int32','Integer')) { $parsed = 0 if ([int]::TryParse($Value, [ref]$parsed)) { $parsed } else { $Value } } elseif ($PropertyType -eq 'Int64') { $parsed = 0L if ([long]::TryParse($Value, [ref]$parsed)) { $parsed } else { $Value } } elseif ($PropertyType -in @('Double','Decimal')) { $parsed = 0.0 if ([double]::TryParse($Value, [System.Globalization.NumberStyles]::Float, [System.Globalization.CultureInfo]::InvariantCulture, [ref]$parsed)) { $parsed } else { $Value } } elseif ($PropertyType -eq 'Boolean') { $parsed = $false if ([bool]::TryParse($Value, [ref]$parsed)) { $parsed } else { $Value } } else { $Value } } end { } } |