Попытка разобрать текстовый файл с помощью PowerShell и создать список разделов, присутствующих в файле. При выполнении приведенного ниже фрагмента кода возникает ошибка при добавлении объекта в список.
Вызов метода завершился неудачно, так как [System.Management.Automation.PSObject] не содержит метод с именем op_Addition.
Первый объект добавляется в список, но выдается ошибка второго объекта. Интересно, что ошибка не возникает, если программа работает в режиме отладки.
function Process-Master-File {
[CmdletBinding()]
Param (
[Parameter(ValueFromPipeline = $true)][String[]]$PipeValue
)
Begin {
#create new section object
$codeSection = New-Object -TypeName psobject
$codeSection | Add-Member -MemberType NoteProperty -Name Name -Value $null
$codeSection | Add-Member -MemberType NoteProperty -Name SuppresionGroup -Value $null
$codeSection | Add-Member -MemberType NoteProperty -Name Mandatory -Value $False
$codeSection | Add-Member -MemberType NoteProperty -Name SectionBody -Value $null
[string]$out = ""
}
Process {
# Grab a line from the pipe
[string]$line = $_
# Find positions
try {
$pos = 0
$pos = $line.IndexOf('@Section')
if ($pos[0] -ne -1) {
if ($objTemp.Name) {
$objTemp.SectionBody = $section
$codeSectionList += $objTemp # Error is thrown here
$section = ""
}
$objTemp = $codeSection | Select-Object *
$objTemp.Name = $line.Substring($line.LastIndexOf(':') + 1).TrimEnd().TrimStart()
$objTemp.SuppresionGroup = $line.Substring($line.IndexOf('@SG') + 3, ($line.LastIndexOf(':') - $line.IndexOf('@SG') - 3)).TrimEnd().TrimStart()
if ($line.IndexOf('@Mandatory') -ne -1) {
$objTemp.Mandatory = $True
}
$section = $line
Write-Verbose $line
}
else {
$section += $line
}
}
Catch {
Write-Host "An error occurred while processing file:"
Write-Host $_
}
}
End {
$codeSectionList
}
}
$codeSectionList
используется, но не определена (как и$objTemp
). - person JosefZ   schedule 11.04.2020