2015-08-10 4 views
2

PowerShell У меня есть следующий переменный, которая содержит другие переменные:расширение переменного внутри здесь струны,

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

формат $ ($ xxx.yyy) отлично работает, если я запустить скрипт вручную, но я не могу его использовать потому что программа, выполняющая сценарий, использует токены в формате $() для вставки строк в сценарии powershell и сойдет с ума. Любой другой способ добиться такого же эффекта? Когда я использую только формат $ xxx.yyy, .yyy часть игнорируется. Он интерпретируется только тогда, когда я использую формат $().

ответ

3

Вы можете использовать строку формата для передачи значений:

$jsontemplate = @" 
{{ 
    "jsonrpc": "2.0", 
    "method": "trigger.update", 
    "params": {{ 
     "triggerid": "{0}", 
     "status": 1 
    }}, 
    "id": "{1}", 
    "auth": "{2}" 
    }} 
"@ -f $zabbixtriggerid, $zabbixAuth.id, $zabbixAuth.auth 

Посмотрите на последней строке, где я форматировать строку с помощью трех переменных.

+0

Как только я добавляю -f $ zabbixtriggerid, $ zabbixAuth.id, $ zabbixAuth.auth, я получаю следующую ошибку: Ошибка форматирования строки: строка ввода не была в правильном формате .. –

+0

О, похоже, вам нужно избегать фигурных скобок, используя два из них. Я могу ответить –

+0

отлично, он работает. –

Смежные вопросы