繁体   English   中英

文件中的命令行参数

[英]command line arguments from file

我有一个powershell脚本,我希望为其在命令行中传递很少的参数。 有很多参数不是问题,因为它被配置为计划任务,但是我想使事情变得更容易为人们提供支持,这样,如果他们需要从命令行运行脚本,那么键入的东西就更少了。

因此,我正在考虑将参数包含在文本文件中的选择,或者使用每行中具有键/值对的Java样式属性文件,或者是一个简单的XML文件,该文件每个参数具有一个名称元素和一个name元素。值元素。

arg1=value1
arg2=value2

我对PowerShell专家对这两个选项的观点以及是否正确的做法感兴趣。

谢谢

如果要使用ini文件方法,可以轻松地解析ini数据,如下所示:

$ini = ConvertFrom-StringData (Get-Content .\args.ini -raw)
$ini.arg1

这种方法的缺点是所有arg类型都是string这对于字符串甚至数字AFAICT都适用。 它掉落的地方是[switch] args。 传递True$true并没有达到预期的效果。

另一种方法是将args放在.ps1文件中,并执行该文件以返回包含所有args的哈希表,然后可以将其散布,例如:

-- args.ps1 --
@{
ComputerName = 'localhost'
Name = 'foo'
ThrottleLimit = 50
EnableNetworkAccess = $true
}

$cmdArgs = .\args.ps1
$s = New-PSSession @cmdArgs

为了稍微扩展Keith的答案,可以根据配置文件中的值设置实际变量,例如

$ini = ConvertFrom-StringData (Get-Content .\args.ini -raw)
$ini.keys | foreach-object { set-variable -name $_ -value $ini.Item($_) }

所以一个文件包含

a=1
b=2
c=3

用上述代码处理时,应导致创建三个变量:

$a = 1, $b = 2, $c = 3

我希望这将适用于简单的字符串值,但我相当确定它不够“聪明”,无法将myArray = 1,2,3,4,5转换为实际数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM