Ответ 1
Да, прочитайте файл, разделите каждую строку и назначьте результат разделения параметрам Name и Value:
Get-Content file.txt | Foreach-Object{
$var = $_.Split('=')
New-Variable -Name $var[0] -Value $var[1]
}
Есть ли способ прочитать текстовый файл C:\test.txt и получить определенное значение?
т.е. файл выглядит следующим образом:
serverName=serv8496
midasServer=serv8194
Я хочу каким-то образом установить значение переменной в моем script из этого файла, например:
$MidasServer= (from file midasServer value)
Я не буду знать номер строки, где находится ссылка.
Как это сделать?
Да, прочитайте файл, разделите каждую строку и назначьте результат разделения параметрам Name и Value:
Get-Content file.txt | Foreach-Object{
$var = $_.Split('=')
New-Variable -Name $var[0] -Value $var[1]
}
Если это именно то, как отображается ваш файл, т.е. список пар значений ключа, обозначенных знаком равенства, тогда вы должны взглянуть на 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