Private/ExportHelpers.ps1
|
#requires -Version 5.1 <# .SYNOPSIS Shared output-safety helpers (CSV formula-injection escaping, HTML encoding). .DESCRIPTION Internal helpers used by export/report functions. CSV escaping follows the spreadsheet formula-injection convention: any value starting with =, +, -, @ (or tab/CR/LF) is prefixed with a single quote. HTML encoding uses System.Net.WebUtility.HtmlEncode (available on .NET Framework 4.x / PS 5.1). #> function Protect-CsvField { [CmdletBinding()] [OutputType([string])] param( [Parameter(Mandatory = $false)] [AllowNull()] [AllowEmptyString()] [object]$Value ) if ($null -eq $Value) { return '' } $text = [string]$Value if ($text.Length -eq 0) { return '' } if ($text -match '^[=+\-@\t\r\n]') { return "'$text" } return $text } function ConvertTo-HtmlEncoded { [CmdletBinding()] [OutputType([string])] param( [Parameter(Mandatory = $false)] [AllowNull()] [AllowEmptyString()] [object]$Value ) if ($null -eq $Value) { return '' } return [System.Net.WebUtility]::HtmlEncode([string]$Value) } |