2013-11-28 1 views

答えて

28

あなたはConvertFrom-を使用することができますStringDataは、ハッシュテーブルにキー=値のペアを変換するには:あなたはあなたが得る - コンテンツのための「-raw」引数が欠落する可能性があるのPowerShell V2.0で実行している場合

$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 
+0

ありがとうございます! $ AppProps = convertfrom-stringdata(取得コンテンツ./app.properties -raw) $ AppProps.'client.version ' – jos11

+9

PowerShell 3で '-Raw'フラグが追加されましたPowerShell 2でこれを使用する場合は、 'Get-Content $ file | Out-String'を使用します。 – Koraktor

1

これを行うためのいくつかの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 

「テストアプリケーション」を印刷する必要があります

7

。この場合、以下を使用することができます。

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' 
0

私はしたかったですエスケープする必要がある場合は、ソリューションを追加します(たとえば、バックスラッシュを含むパスがある場合)。-rawなし

$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' 

$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' 

または1行のファッションで:

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