我对 powershell 的东西还很陌生。所以这里需要一些帮助。
我想将一个 json 对象作为参数传递给另一个 ps1。从我搜索后读到的内容来看,我需要将其从 json 字符串转换为 powershell 对象。如果我错了,请纠正我。这就是我正在做的
调用脚本:
$jsonParams = "{
`"TaskName`": `"$taskName`",
`"ExitCode`": `"$exitCode`",
`"ErrorMessage`": `"$errorMessage`"
}
$jsonObject = $jsonParams | ConvertFrom-Json
$argumentList = @($param1, $param2, $jsonObject)
Invoke-Expression "& `"$scriptPath`" $argumentList"
Run Code Online (Sandbox Code Playgroud)
并在调用的脚本中 -
param (
[string]$param1,
[string]$param2,
[Microsoft.PowerShell.Commands.JsonObject]$jsonObject
)
Run Code Online (Sandbox Code Playgroud)
但是,调用脚本会抛出错误
ConvertFrom-Json : Invalid object passed in, ':' or '}' expected. (21): {
Run Code Online (Sandbox Code Playgroud)
这段代码有什么问题。另外,将 json 对象传递给调用的脚本后,我应该如何访问其中的值。
谢谢!!
您的 JSON 格式错误。我认为核心问题是 JSON 末尾有一个逗号。您也不要在声明中关闭开盘报价。
无论如何,如果您使用此处字符串,您可能会更容易。这是你不必使用所有这些反引号。
$jsonParams = @"
{
"TaskName": "$taskName",
"ExitCode": "$exitCode",
"ErrorMessage": "$errorMessage"
}
"@
$jsonObject = $jsonParams | ConvertFrom-Json
Run Code Online (Sandbox Code Playgroud)
$jsonObject已经是自定义对象,不再是 JSON。你不需要用它做任何特别的事情。删除参数块中的类型,然后仅调用脚本中的属性。
param (
[string]$param1,
[string]$param2,
$jsonObject
)
$jsonObject.TaskName
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30310 次 |
| 最近记录: |