Leia o arquivo com parâmetros como parâmetro no script powershell

2

Eu tentei fazer um script do powershell que lê um arquivo com parâmetros:

Arquivo com parâmetros ( params.ini ):

[domain]
domain="google.com"
[port]
port="80"

Script do Powershell que lê o arquivo:

Get-Content "params.ini" | ForEach-Object -Begin {$settings=@{}} -Process {$store = [regex]::split($_,'='); if(($store[0].CompareTo("") -ne 0) -and ($store[0].StartsWith("[") -ne $True) -and ($store[0].StartsWith("#") -ne $True)) {$settings.Add($store[0], $store[1])}}

$Param1 = $settings.Get_Item("domain")
$Param2 = $settings.Get_Item("port")

# Displaying the parameters
Write-Host "Domain: $Param1";
Write-Host "Port: $Param2";

Mas eu quero que o arquivo seja lido por parâmetro. Por exemplo:

> scriptExample.ps1 -file C:\params.ini

Quais alterações devo aplicar?

    
por user1911 11.01.2018 / 23:04

1 resposta

3

Então você precisa lidar com argumentos.

$file contém o valor do argumento -file que você usará no seu script.

Argumento não obrigatório:

Param(
  [string]$file
)

Argumento obrigatório:

Param(
  [parameter(mandatory=$true)][string]$file
)

Código completo (usando argumento obrigatório):

Param(
  [parameter(mandatory=$true)][string]$file
)

Get-Content "$file" | ForEach-Object -Begin {$settings=@{}} -Process {$store = [regex]::split($_,'='); if(($store[0].CompareTo("") -ne 0) -and ($store[0].StartsWith("[") -ne $True) -and ($store[0].StartsWith("#") -ne $True)) {$settings.Add($store[0], $store[1])}}

$Param1 = $settings.Get_Item("domain")
$Param2 = $settings.Get_Item("port")

# Displaying the parameters
Write-Host "Domain: $Param1";
Write-Host "Port: $Param2";
.\scriptExample.ps1 -file params.ini
Domain: "google.com"
Port: "80"
    
por 11.01.2018 / 23:59