script para copiar comandos basicos archivos powershell properties-file

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