programing

파워셸에서 속성 파일 읽기

padding 2023. 8. 21. 20:57
반응형

파워셸에서 속성 파일 읽기

file.properties가 있고 그 내용은 다음과 같습니다.

app.name=Test App
app.version=1.2
...

어떻게 하면 app.name 의 가치를 얻을 수 있습니까?

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

powershell v2.0으로 실행 중인 경우 Get-Content에 대한 "-Raw" 인수가 누락되었을 수 있습니다.이 경우 다음을 사용할 수 있습니다.

C:\temp\Data의 내용입니다.txt:

환경=QGRZ

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'

탈출이 필요한 경우(예: 백슬래시가 있는 경로가 있는 경우) 솔루션을 추가하고 싶었습니다.

$file_content = Get-Content "./app.properties" -raw
$file_content = [Regex]::Escape($file_content)
$file_content = $file_content -replace "(\\r)?\\n", [Environment]::NewLine
$configuration = ConvertFrom-StringData($file_content)
$configuration.'app.name'

-raw 없이:

$file_content = Get-Content "./app.properties"
$file_content = [Regex]::Escape($file_content -join "`n")
$file_content = $file_content -replace "\\n", [Environment]::NewLine
$configuration = ConvertFrom-StringData($file_content)
$configuration.'app.name'

또는 한 줄 방식으로:

(ConvertFrom-StringData([Regex]::Escape((Get-Content "./app.properties" -raw)) -replace "(\\r)?\\n", [Environment]::NewLine)).'app.name'

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

"테스트 앱"을 인쇄해야 합니다.

언급URL : https://stackoverflow.com/questions/20275525/read-a-properties-file-in-powershell

반응형