此处字符串内的变量扩展,powershell

Iok*_*kan 3 powershell

我有以下包含其他变量的变量:

$jsontemplate = @"
{
    "jsonrpc": "2.0",
    "method": "trigger.update",
    "params": {
        "triggerid": "$($zabbixtriggerid)",
        "status": 1
    },
                                               "id": "$($zabbixAuth.id)",
                                               "auth": "$($zabbixAuth.auth)"
                                               }
"@
Run Code Online (Sandbox Code Playgroud)

如果我手动运行脚本, $($xxx.yyy) 格式工作正常,但我无法使用它,因为运行脚本的程序使用 $() 格式的标记将字符串插入到 powershell 脚本中,并且会变得疯狂。还有其他方法可以达到同样的效果吗?当我仅使用 $xxx.yyy 格式时,.yyy 部分会被忽略。仅当我使用 $() 格式时它才会被解释。

Mar*_*ndl 5

您可以使用格式字符串来传递值:

$jsontemplate = @"
{{
    "jsonrpc": "2.0",
    "method": "trigger.update",
    "params": {{
        "triggerid": "{0}",
        "status": 1
    }},
    "id": "{1}",
    "auth": "{2}"
    }}
"@ -f $zabbixtriggerid, $zabbixAuth.id, $zabbixAuth.auth
Run Code Online (Sandbox Code Playgroud)

查看最后一行,我使用三个变量格式化字符串。