私はPowerShellスクリプトを実行して、パラメータ付きのファイルを読み取ろうとしました:
パラメータ付きファイル(params.ini
):
[domain]
domain="google.com"
[port]
port="80"
ファイルを読み取るPowerShellスクリプト:
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";
しかし、ファイルをパラメーターで読み取ってほしい。例えば:
> scriptExample.ps1 -file C:\params.ini
どのような変更を適用する必要がありますか?
したがって、引数を処理する必要があります。
$file
には、スクリプト内で使用する-file
引数値が含まれています。
必須ではない引数:
Param(
[string]$file
)
必須の引数:
Param(
[parameter(mandatory=$true)][string]$file
)
完全なコード(必須の引数を使用):
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"