有沒有辦法通過命令行將對象(如哈希表)傳遞到PowerShell腳本文件?Powershell腳本文件參數非字符串
這是我的代碼:
Param(
[hashtable]$lookupTable = @{}
)
我嘗試這樣做:
powershell.exe -NonInteractive -ExecutionPolicy ByPass -File D:\script.ps1 @{APIKey="Uz9tkNhB9KJJnOB-LUuVIA"}
@{APIKey="Uz9tkNhB9KJJnOB-LUuVIA"}
是哈希表的參數。
錯誤:
D:\script.ps1 : Cannot process argument transformation on parameter 'lookupTable'.
Cannot convert the "@{APIKey=Uz9tkNhB9KJJnOB-LUuVIA}" value of type "System.String" to type "System.Collections.Hashtable".
+ CategoryInfo : InvalidData: (:) [script.ps1], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,script.ps1
基於該誤差,其解釋所述參數爲字符串。我也通過teamcity傳遞這個參數,它只直接接受參數並將它傳遞給上面顯示的命令行。
有什麼我可以做的參數來告訴powershell它是一個哈希表類型的對象?
PS。
通過TeamCity的允許的輸入是:
- 腳本文件
- 腳本執行模式[「把腳本到PowerShell的標準輸入與‘指令 - ’論據」和「執行與腳本名爲.psl」 - 文件「論點」]。
- 其他命令行參數。
- 腳本參數(如果啓用 「與-File參數執行的.ps1」 被選擇)
這是格式TeamCity的使用以執行-Command模式的腳本:
powershell.exe -NonInteractive [commandline params] -ExecutionPolicy ByPass -Command - < [script file]
因此:
powershell.exe -NonInteractive @{ APIKey = 'Uz9tkNhB9KJJnOB-LUuVIA'} -ExecutionPolicy ByPass -Command - < D:\BuildAgent-02\work\2204bf4ff5f01dd3\scripts\script.ps1
這是格式TeamCity的使用以執行 - 文件模式下運行腳本:
powershell.exe -NonInteractive [commandline params] -ExecutionPolicy ByPass -File [script file] [script arguments]
因此,當我使用腳本PARAMS:
powershell.exe -NonInteractive -ExecutionPolicy ByPass -File D:\BuildAgent-02\work\2204bf4ff5f01dd3\scripts\script.ps1 @{ APIKey = 'Uz9tkNhB9KJJnOB-LUuVIA'}
反正是有解決這個格式TeamCity的使用?例如。在腳本參數下,我可以做 - 命令序列化參數嗎?
感謝您的回覆,我試過了,但不幸的是,該命令的構建和執行格式有一些限制,我更新了我的問題。 –