有没有办法用文件提供powershell参数?
目前我有一个名为My_Script.ps1
的脚本。要启动此脚本,我必须在命令中提供正确的参数:
.\My_Script.ps1 -param1="x" -param2="x" -param3="x" -param4="x" -param5="x" -param6="x" ...
这可行,但它不是一个非常简单的启动脚本的方法。在PowerShell中是否可以使用存储参数的文件并在启动脚本时使用该文件?
实施例
在My_Script.ps1
中我添加了类似的内容:
Param(
[string]$File="Path/to/file"
)
在我的文件中,我有类似
的内容param1="x"
param2="x"
param3="x"
param4="x"
...
要执行脚本,您可以编辑文件,然后使用.\My_Script.ps1
答案 0 :(得分:2)
另一种选择: 只需使用ps1文件作为配置文件,并像在主脚本中那样定义变量
$Param1 = "Value"
$Param2 = 42
然后您可以使用dot-sourcing或import-module从配置文件中获取数据
. .\configfile.ps1
或
Import-Module .\Configfile.ps1
之后你可以使用变量
答案 1 :(得分:1)
除了splatting,您还可以在文件中的=
个分隔值中创建变量。
param1=foo
param2=bar
param3=herp
param4=derp
不要引用这些值。参数名称应该对变量有效(没有空格等)
PowerShell 3和更新版本:
(Get-Content c:\params.ini -raw | ConvertFrom-StringData).GetEnumerator() |
ForEach { Set-Variable $_.name $_.value }
PowerShell 2:
([IO.File]::ReadAllText('c:\params.ini') | ConvertFrom-StringData).GetEnumerator() |
ForEach { Set-Variable $_.name $_.value }
代码在当前范围内创建变量。可以在全局/脚本/父scope中创建。
答案 2 :(得分:0)
您可以使用此blog posting 开始并以类似ini的格式声明参数。
当然,您也可以使用类似csv的格式并使用import-csv cmdlet。