相关疑难解决方法(0)

在powershell中合并json对象

我的json看起来像这样:

{
    "Workflow": [
        {
            "Parameters": {
                "Project": "/Path/To/File",
                "OtherParam": "True"
            }
        }
    ],
    "Overrides": [
        {
            "Special": {
                "Parameters": {
                    "NewParam": "NewStuffGoesHere",
                    "OtherParam": "False"
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

...我想使用该Overrides.Special部分添加或更新工作流对象中的字段.换句话说,鉴于上面的json,我想做这样的事情:

$config = Get-Content workflow.json | out-string | ConvertFrom-Json
$configWithOverrides = Merge-Object $config.Workflow $config.Overrides.Special
Run Code Online (Sandbox Code Playgroud)

并最终得到这样的东西:

$configWithOverrides

Parameters
----------
@{Project=/Path/To/File; NewParam=NewStuffGoesHere; OtherParam=False}
Run Code Online (Sandbox Code Playgroud)

我当然可以Merge-Object根据覆盖部分中的内容编写上面的函数来根据需要添加或更新值,但似乎应该(可以?)是内置或单行方式来处理它.

我试过这个:

$test = $config.Workflow + $config.Overrides.Special
Run Code Online (Sandbox Code Playgroud)

......但这不太有效.

$test
Parameters
----------
@{Project=/Path/To/File; OtherParam=True}
@{NewParam=NewStuffGoesHere; OtherParam=False}
Run Code Online (Sandbox Code Playgroud)

这样可以添加参数:

>$test.Parameters.NewParam
NewStuffGoesHere
Run Code Online (Sandbox Code Playgroud)

......但是更新它们并不是那么好

>$test.Parameters.OtherParam
True
False
Run Code Online (Sandbox Code Playgroud)

注意 - 在这个例子中,我选择在将json转换为psobject之后处理合并,但这不是必需的.

powershell json

9
推荐指数
1
解决办法
5123
查看次数

如何在 PowerShell 中配置调用深度?

我只是在 PowerShell 中尝试,并在某些测试递归函数中收到有关调用深度设置为 1000 的错误。我在网上查找了一些信息,发现这是由于PowerShell中的错误处理造成的(如果我没猜错的话):

递归深度限制在版本 1 中得到修复。由于处理异常的方式,深度递归在 64 位模式下会导致问题。它导致级联内​​存不足错误。最终结果是我们硬限制了所有平台上的递归深度,以帮助确保脚本可移植到所有平台。- Bruce Payette,PowerShell 联合设计师

在这里找到的。

另外,我在 MSDN 上发现了这个异常页面,其中指出此限制是可配置的(但我没有找到有关如何执行此操作的任何内容) - 请参阅此处的备注部分。

这个限制怎么设置呢?

powershell recursion exception

5
推荐指数
1
解决办法
5353
查看次数

标签 统计

powershell ×2

exception ×1

json ×1

recursion ×1