gpt4 book ai didi

json - 如何将json对象作为参数传递给另一个powershell脚本

转载 作者:行者123 更新时间:2023-12-02 22:37:13 25 4
gpt4 key购买 nike

我对 powershell 的东西很陌生。所以在这里需要一些帮助。

我想将一个 json 对象作为参数传递给另一个 ps1。从我搜索后读到的是,我需要将它从 json 字符串转换为 powershell 对象。如果我错了,请纠正我。这就是我正在做的

调用脚本:

$jsonParams = "{
`"TaskName`": `"$taskName`",
`"ExitCode`": `"$exitCode`",
`"ErrorMessage`": `"$errorMessage`"
}

$jsonObject = $jsonParams | ConvertFrom-Json
$argumentList = @($param1, $param2, $jsonObject)

Invoke-Expression "& `"$scriptPath`" $argumentList"

并在所谓的脚本中 -
param (
[string]$param1,
[string]$param2,
[Microsoft.PowerShell.Commands.JsonObject]$jsonObject
)

但是,调用脚本抛出错误
ConvertFrom-Json : Invalid object passed in, ':' or '}' expected. (21): {

这段代码有什么问题。此外,在 json 对象传递给被调用的脚本后,我应该如何访问它的值。

谢谢!!

最佳答案

您的 JSON 格式错误。我认为核心问题是您的 JSON 末尾有一个尾随逗号。您也不会在声明中关闭开场白。

如果您为此使用 here-string,您可能会更轻松。这是您不必使用所有这些反引号。

$jsonParams = @"
{
"TaskName": "$taskName",
"ExitCode": "$exitCode",
"ErrorMessage": "$errorMessage"
}
"@

$jsonObject = $jsonParams | ConvertFrom-Json
$jsonObject已经是一个自定义对象,不再是 JSON。你不需要对它做任何特别的事情。删除 param 块中的类型,只需调用脚本中的属性。
param (
[string]$param1,
[string]$param2,
$jsonObject
)
$jsonObject.TaskName

关于json - 如何将json对象作为参数传递给另一个powershell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34165334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com