para - Lee un archivo de propiedades en powershell
powershell comandos basicos (4)
No sé si hay alguna forma integrada de Powershell de hacer esto, pero puedo hacerlo con expresiones regulares:
$target = "app.name=Test App
app.version=1.2
..."
$property = "app.name"
$pattern = "(?-s)(?<=$($property)=).+"
$value = $target | sls $pattern | %{$_.Matches} | %{$_.Value}
Write-Host $value
Debería imprimir "Aplicación de prueba"
Supongamos que tengo un archivo.propiedades y su contenido es:
app.name=Test App
app.version=1.2
...
¿Cómo puedo obtener el valor de app.name?
Puede usar ConvertFrom-StringData para convertir los pares de Clave = Valor en una tabla hash:
$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
Quería agregar la solución si necesita escapar (por ejemplo, si tiene rutas con barras invertidas):
$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''
Sin el -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''
O de una sola manera:
(ConvertFrom-StringData([Regex]::Escape((Get-Content "./app.properties" -raw)) -replace "(//r)?//n", [Environment]::NewLine)).''app.name''
Si está ejecutando con powershell v2.0 puede que le falte el argumento "-Raw" para Get-Content. En este caso puedes usar lo siguiente.
Contenido de C: / temp / Data.txt:
ambiente = Q GRZ
target_site = FSHHPU
Código:
$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''