cmdlets/Parse-iBases.ps1
. $PSScriptRoot\CommonUtils.ps1 #---------------------------------------------------------------------------------------- # возвращает путь к файлу iBases.v8i function Get-iBases { <# .SYNOPSIS Возвращает полный путь по умолчанию к файлу iBases.v8i. .DESCRIPTION Проверяет наличие и возвращает полный путь к файлу iBases.v8i. Если файл не существует, то возвращается $null. Расположение файла iBases.v8i по умолчанию: - Для ОС Windows: %APPDATA%\1C\1CEStart\ #> $Result = $null if (Test-Path("$env:APPDATA\1C\1CEStart\iBases.v8i")){$Result = "$env:APPDATA\1C\1CEStart\iBases.v8i"} $Result }# end of Get-iBases #---------------------------------------------------------------------------------------- # получает файл списка объектов для захвата из отчета сравнения function Parse-iBases { <# .SYNOPSIS Преобразует содержимое файла iBases.v8i в массив хэш-таблиц. .DESCRIPTION Преобразует текстовый файл настроек запуска баз iBases.v8i в массив хэш-таблиц, где в каждой хэш-таблице перечисленны все указаные для одной базы параметры. .PARAMETER FilePath Полный путь к файлу iBases.v8i, если не указан будет взят из профиля текущего пользователя. Для ОС Windows: %APPDATA%\1C\1CEStart\iBases.v8i. .EXAMPLE #Получить список файловых баз запускаемых на платформе 8.3: $FileBases = Parse-iBases | where {$_.Connect -macth 'File*' - and $_.Version -match '8.3*'} .EXAMPLE #Показать идентификаторы и имена баз запускаемых на платформе 8.3: Parse-iBases | where {$_.Version -match '8.3*'} | foreach{Write-Host ("{0}`t{1}" -f $_.ID, $_.Name)} #> [CmdletBinding()] param( [string]$FilePath # полный путь к файлу iBases.v8i ) if ($FilePath -eq '') {$FilePath = Get-iBases} Write-Verbose "FilePath = $FilePath" $iBases = @() switch -Regex -File $Filepath { "^\[(.+)\]$" { Write-Verbose ("`n`t Секция '{0}'" -f $matches[1]) if ($Section -ne $null){$iBases += $Section} $Section = @{Name = $matches[1]} } "^([^=]+)=(.*)$" { Write-Verbose ("Ключ '{0}' = '{1}'" -f $matches[1], $matches[2]) $Section.Add($matches[1], $matches[2]) } } $iBases }# end of Parse-iBases |