Почему результат выполнения команды в PowerShell отличается при вводе ее в консоль и при использовании в ScriptProperty?

Как можно в PowerShell найти и вывести все заголовки в INI файле, применяя скрипт к переменной содержащей его содержимое, чтобы получить правильный порядок строк и номера строки для каждого заголовка, даже если в файле присутствуют пустые ключи?
  • 15 мая 2024 г. 7:00
Ответы на вопрос 2
1. Результат выполнения команды в PowerShell может отличаться при вводе ее в консоль и при использовании в ScriptProperty из-за контекста выполнения. Когда команда выполняется в консоли, она выполняется в текущем сеансе PowerShell с текущим окружением. А когда она используется в ScriptProperty, она выполняется в объеме выполнения сценария, который может иметь отличающееся окружение и параметры.

2. Чтобы найти и вывести все заголовки в INI файле в PowerShell, можно использовать следующий скрипт:

```
$iniData = Get-Content -Path "путь_к_файлу.ini"
$iniData | ForEach-Object {
    if ($_ -match "^\[(.+)\]") {
        $header = $matches[1]
        $lineNumber = $_.ReadCount
        Write-Output "Заголовок: $header, Номер строки: $lineNumber"
    }
}
```

Этот скрипт загружает содержимое файла INI в переменную `$iniData`, а затем проходит по каждой строке файла, ища строки, которые соответствуют шаблону `[заголовок]`. При обнаружении заголовка он выводит его название и номер строки. Таким образом, данный скрипт позволит найти все заголовки в INI файле и вывести их вместе с номерами строк, даже если в файле присутствуют пустые ключи.
Самое простое, если вас не устраивает <b>Get-IniContent</b> - поправить его, чтобы не путал :) <br/> <pre><code>...
$ini = [ordered]@{}
...
$ini[$section] = [ordered]@{}
...</code></pre> <br/> <br/> Или взять класс на c# <a href="https://stackoverflow.com/questions/217902/reading-writing-an-ini-file" rel="nofollow">Отсюда</a> <br/> и вкрячить его в свой powershell скрипт
Похожие вопросы