Подтвердить что ты не робот

Powershell извлекает переменную из текстового файла

Есть ли способ прочитать текстовый файл C:\test.txt и получить определенное значение?

т.е. файл выглядит следующим образом:

serverName=serv8496
midasServer=serv8194

Я хочу каким-то образом установить значение переменной в моем script из этого файла, например:

$MidasServer= (from file midasServer value)

Я не буду знать номер строки, где находится ссылка.

Как это сделать?

4b9b3361

Ответ 1

Да, прочитайте файл, разделите каждую строку и назначьте результат разделения параметрам Name и Value:

Get-Content file.txt | Foreach-Object{
   $var = $_.Split('=')
   New-Variable -Name $var[0] -Value $var[1]
}

Ответ 2

Если это именно то, как отображается ваш файл, т.е. список пар значений ключа, обозначенных знаком равенства, тогда вы должны взглянуть на ConvertFrom-StringData, который

преобразует строку, содержащую одну или несколько пар ключей и значений в хеш-таблицу. Поскольку каждая пара ключей/значений должна находиться в отдельной строке, здесь строки часто используются в качестве входного формата.

Итак, если текстовый файл содержит только данные в вашем примере, вы можете сделать это, чтобы создать хеш-таблицу

$Path = "C:\temp\test.txt"
$values = Get-Content $Path | Out-String | ConvertFrom-StringData
$values.midasServer

Если значение $values.midasServer будет иметь значение serv8194. Не нужно знать, где находятся свойства в отношении файла. Ваш входной файл также может иметь различное ведущее и конечное пространство вокруг знака равенства, которое даст тот же результат.

В зависимости от вашего варианта использования вы можете сделать этот шаг дальше и создать пользовательский объект из этой хеш-таблицы

New-Object -TypeName pscustomobject -Property $values

Если у вас есть хотя бы PowerShell v3 или выше, вы можете упростить процесс (если вы хотите создать собственный psobject)

$values = [pscustomobject](Get-Content $Path -Raw | ConvertFrom-StringData)
$values.midasServer