![在powershell脚本中读取带有参数的文件作为参数](https://linux22.com/image/716082/%E5%9C%A8powershell%E8%84%9A%E6%9C%AC%E4%B8%AD%E8%AF%BB%E5%8F%96%E5%B8%A6%E6%9C%89%E5%8F%82%E6%95%B0%E7%9A%84%E6%96%87%E4%BB%B6%E4%BD%9C%E4%B8%BA%E5%8F%82%E6%95%B0.png)
我尝试编写一个 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
我应该应用哪些更改?
答案1
所以您需要处理参数。
$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"