我有一个我正在测试的脚本“Deploy.PS1”。在这里面我通过几个参数:通过PowerShell脚本在.xml文档中传递不同的参数
param(
[Parameter(Mandatory = $True,valueFromPipeline=$true)][String] $param1,
[Parameter(Mandatory = $True,valueFromPipeline=$true)][String] $param2,
[Parameter(Mandatory = $True,valueFromPipeline=$true)][String] $param3,
[Parameter(Mandatory = $True,valueFromPipeline=$true)][String] $param4,
[Parameter(Mandatory = $True,valueFromPipeline=$true)][String] $param5
)
目前,当我运行该脚本,我必须运行脚本并传递参数”。\ Deploy.PS1 P1 P2 P3 P4 P5" ,并运行良好。我正在尝试创建一个已经包含参数的.xml文档。为此,我找到了一条帮助我的线索。现在该.xml文件看起来像这样:
<Deploy_Params>
<param>
<param1>p1</param1>
<param2>p2</param2>
<param3>p3</param3>
<param4>p4</param4>
<param5>p5</param5>
</param>
<param>
<param1>a1</param1>
<param2>a2</param2>
<param3>a3</param3>
<param4>a4</param4>
<param5>a5</param5>
</param>
<param>
<param1>b1</param1>
<param2>b2</param2>
<param3>b3</param3>
<param4>b4</param4>
<param5>b5</param5>
</param>
</Deploy_Params>
我需要什么是传递取决于我要部署到不同的环境参数的更多帮助。
例如: 我想用参数“p1 p2 p3 p4 p5”,“a1 a2 a3 a4 a5”或“b1 b2 b3 b4 b5”运行Deploy.PS1。我将如何在Deploy.PS1脚本或.xml文件中指定我想仅传递p,a或b参数,具体取决于是否要使用p,a或b环境?我注意到这里有几个类似于我的问题的其他线程,但仍然无法解决我的问题,请耐心等待,我可以提供额外的补充信息或代码,如果需要。谢谢)
感谢伟大的反应!我相信你的回答正是我所期待的。然而,我做了你建议的改变,试图通过暂时从Deploy.PS1中删除代码来仅测试param(... $ param1 ... $ param2 ...等等),然后我写了写主机$ param1,写主机$ param2..etc只是为了打印变量来检查脚本是否可以读取xml文件。我敢肯定,这不是正确的方法来检查,因为它返回“无法索引到一个空数组。行:1 char:1”,当我输入$ ParamSets ['Failover'] | \ Deploy.ps1。我应该如何正确测试? –
我更新了答案,尝试更好地解释使用情况。 – TheMadTechnician
使用参数溅射的替代方案。我可以把它写成答案 - 评论格式很差。 '$ ParamSets = @ { “A”= @ {Object =“AAA”}; “B”= @ {Object =“BBB”}; “C”= @ {Object =“CCC”}; }; $ args = $ ParamSets [“A”]; Write-Host @args; #写主机只是一个例子。可以是你的deploy.ps1.' –