Private/Get-FirebirdDatabaseHeader.ps1
|
function Get-FirebirdDatabaseHeader { <# .SYNOPSIS Parses PageSize and ODSVersion from gstat -h output. .PARAMETER Database The Firebird database to inspect. .PARAMETER Environment The Firebird environment to use. .OUTPUTS Hashtable with PageSize and ODSVersion keys. #> [CmdletBinding()] param( [Parameter(Mandatory)] [FirebirdDatabase]$Database, [Parameter(Mandatory)] [FirebirdEnvironment]$Environment ) $connectionString = $Database.ConnectionString() $gstat = $Environment.GetGstatPath() Write-VerboseMark -Message "Reading database header from '$connectionString'." $gstatResult = Invoke-ExternalCommand { & $gstat -h $connectionString } -Passthru -ErrorMessage 'Error running gstat.' $pageSize = $null $odsVersion = $null $lines = $gstatResult.StdOut | Select-Object -Skip 5 foreach ($line in $lines) { if ($line -match '^\s+Page size\s+(\d+)') { $pageSize = [int]$Matches[1].Trim() Write-VerboseMark -Message "Parsed Page size: $pageSize" } if ($line -match '^\s+ODS Version\s+([\d]+\.[\d]+)') { $odsVersion = [version]$Matches[1].Trim() Write-VerboseMark -Message "Parsed ODS Version: $odsVersion" break } } @{ PageSize = $pageSize ODSVersion = $odsVersion } } |