Public/Get-IniContent.ps1
function Get-IniContent { <# .SYNOPSIS Функция для чтения INI-файлов .DESCRIPTION Данная функция считывает содержимое INI-файла и представляет данные в виде hash-таблицы .PARAMETER Path Путь к INI-файлу .EXAMPLE $vThunderBirdConfigPath = Join-Path -Path $([System.Environment]::GetFolderPath('ApplicationData')) -ChildPath 'Thunderbird\profiles.ini' Get-IniFile -Path $vThunderBirdConfigPath .NOTES Более подробно об этой идеи можно почитать тут: https://devblogs.microsoft.com/scripting/use-powershell-to-work-with-any-ini-file/ #> [CmdletBinding()] Param( [Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 0)] $Path ) try { $Result = @{ } switch -regex -file $Path { “^\[(.+)\]” { # Section $section = $matches[1] $Result[$section] = @{ } $CommentCount = 0 } “^(;.*)$” { # Comment $value = $matches[1] $CommentCount = $CommentCount + 1 $name = “Comment” + $CommentCount $Result[$section][$name] = $value } “(.+?)\s*=(.*)” { # Key $name, $value = $matches[1..2] $Result[$section][$name] = $value } } return $Result } catch { #$PSCmdlet.ThrowTerminatingError($PSItem) Write-Error -Exception $PSItem.Exeception } } |