Прочитать файл свойств в PowerShell Предположим, что у меня есть файл .properties и его содержимое: app.name=Test App app.version=1.2 ... как я могу получить значение app.name? Ответ 1 Вы можете использовать ConvertFrom-StringData для преобразования пары Key = Value в хеш-таблицу: $filedata = @' app.name=Test App app.version=1.2 '@ $filedata | set-content appdata.txt $AppProps = convertfrom-stringdata (get-content ./appdata.txt -raw) $AppProps Name Value ---- ----- app.version 1.2 app.name Test App $AppProps.'app.version' 1.2 Ответ 2 Если вы работаете с powershell v2.0, вам может не хватать аргумент "-Raw" для Get-Content. В этом случае вы можете использовать следующее. Содержимое C:\temp\Data.txt: окружающая среда = Q GRZ target_site = FSHHPU код: $file_content = Get-Content "C:\temp\Data.txt" $file_content = $file_content -join [Environment]::NewLine $configuration = ConvertFrom-StringData($file_content) $environment = $configuration.'environment' $target_site = $configuration.'target_site' Ответ 3 Я не знаю, есть ли какой-нибудь интегрированный способ Powershell для этого, но я могу сделать это с помощью регулярного выражения: $target = "app.name=Test App app.version=1.2 ..." $property = "app.name" $pattern = "(?-s)(?<=$($property)=).+" $value = $target | sls $pattern | %{$_.Matches} | %{$_.Value} Write-Host $value Должен напечатать "Test App"
Ответ 1 Вы можете использовать ConvertFrom-StringData для преобразования пары Key = Value в хеш-таблицу: $filedata = @' app.name=Test App app.version=1.2 '@ $filedata | set-content appdata.txt $AppProps = convertfrom-stringdata (get-content ./appdata.txt -raw) $AppProps Name Value ---- ----- app.version 1.2 app.name Test App $AppProps.'app.version' 1.2
Ответ 2 Если вы работаете с powershell v2.0, вам может не хватать аргумент "-Raw" для Get-Content. В этом случае вы можете использовать следующее. Содержимое C:\temp\Data.txt: окружающая среда = Q GRZ target_site = FSHHPU код: $file_content = Get-Content "C:\temp\Data.txt" $file_content = $file_content -join [Environment]::NewLine $configuration = ConvertFrom-StringData($file_content) $environment = $configuration.'environment' $target_site = $configuration.'target_site'
Ответ 3 Я не знаю, есть ли какой-нибудь интегрированный способ Powershell для этого, но я могу сделать это с помощью регулярного выражения: $target = "app.name=Test App app.version=1.2 ..." $property = "app.name" $pattern = "(?-s)(?<=$($property)=).+" $value = $target | sls $pattern | %{$_.Matches} | %{$_.Value} Write-Host $value Должен напечатать "Test App"