Переменные в PowerShell внутри «

#powershell #variables

#powershell #переменные

Вопрос:

Есть ли способ добавить переменные в эту команду?

 Set-NAVServerConfiguration -ServerInstance $ServiceName -KeyName "DestinationAppsForMigration" -KeyValue '[{"appId":"12345-6789", "name":"Some Name", "publisher": "Some Publisher" }]'
  

То, что я хотел бы иметь, было бы чем-то вроде этого:

 Set-NAVServerConfiguration -ServerInstance $ServiceName -KeyName "DestinationAppsForMigration" -KeyValue '[{"appId":$TableMigrationExtID, "name":$TableMigrationExtName, "publisher": $TableMigrationExtPublisher }]'
  

С $TableMigrationExtID , $TableMigrationExtName и $TableMigrationExtPublisher содержащие значения.
Если я попытаюсь запустить, он покажет эту ошибку
Ошибка

Комментарии:

1. просто переключитесь ' и "

Ответ №1:

Согласно инструкции о кавычках, вы должны заключить свою строку во внешние двойные кавычки, чтобы внутренние переменные были заменены их значениями. Учитывая, что вам также необходимо сохранить внутренние двойные кавычки, вам придется экранировать их с помощью обратной метки или другой двойной кавычки.

Использование экранирования двойными кавычками:

 Set-NAVServerConfiguration -ServerInstance $ServiceName -KeyName "DestinationAppsForMigration" -KeyValue "[{""appId"":$TableMigrationExtID, ""name"":$TableMigrationExtName, ""publisher"": $TableMigrationExtPublisher }]"
  

С помощью обратного экранирования:

 Set-NAVServerConfiguration -ServerInstance $ServiceName -KeyName "DestinationAppsForMigration" -KeyValue "[{`"appId`":$TableMigrationExtID, `"name`":$TableMigrationExtName, `"publisher`": $TableMigrationExtPublisher }]"
  

Комментарии:

1. Спасибо! Не получал результата, но потом я заметил, что он не проходит должным образом, как показано в сообщении об ошибке. Добавить, чтобы снова добавить double » к переменным. Итак, это сработало, спасибо! Set-NAVServerConfiguration -ServerInstance $ServiceName -Ключевое имя «DestinationAppsForMigration» -значение ключа «[{«»AppID»»: $TableMigrationExtID, «»name»»:$TableMigrationExtName, «»publisher»»: $TableMigrationExtPublisher }]»

Ответ №2:

Это возможно. Быстрый и грязный ответ

 Set-NAVServerConfiguration -ServerInstance $ServiceName -KeyName "DestinationAppsForMigration" -KeyValue '[{"appId":'   $TableMigrationExtID   ', "name":'   $TableMigrationExtName   ', "publisher":'   $TableMigrationExtPublisher   ' }]'
  

В основном вы добавляете строку вместе с ‘something’ $variable ‘что-то еще’

Комментарии:

1. Я получил эту ошибку, пытаясь использовать это решение, Set-NAVServerConfiguration: не удается найти позиционный параметр, который принимает аргумент ‘ ‘. Спасибо за ответ!