我有一個我正在測試的腳本「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.' –