Powershell appcmd.exe пытается выполнить

W3C объясняет разбор в форме псевдорежима: W3C Link

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

0
задан Pavel Mekhnin 17 January 2019 в 15:45
поделиться

1 ответ

.eProto_Pool является свойством $Task. Если вы хотите разыменовать (то есть получить одно единственное свойство объекта) внутри строки, вам нужно заключить строку в $(), оператор подвыражения в PowerShell.

Например, я создам новую хеш-таблицу с именем $MyString, которая имеет два свойства.

$MyString = @{Name = "Stephen";Value="CoolDude"}

>$MyString

Name                           Value
----                           -----
Value                          CoolDude
Name                           Stephen

Посмотрите, что произойдет, если я попытаюсь сослаться на него внутри строки с обычным расширением строки. Это в основном то, что вы делали в своем примере выше. Посмотрите, как это работает не так, как вы ожидаете?

write-host " The user $MyString.Name is a $MyString.Value"
 The user System.Collections.Hashtable.Name is a System.Collections.Hashtable.Value

Время использовать оператор подвыражения для сохранения дня.

write-host " The user $($MyString.Name) is a $($MyString.Value)"
 The user Stephen is a CoolDude

Когда сомневаешься, подвыражай это.

На второй взгляд

Я думаю, что это может быть знак процента %, который вызывает у вас горе. Это сокращение для команды ForEach-Object в PowerShell. Попробуйте вместо этого:

Invoke-expression "$appcmd --% set config -section:system.applicationHost/applicationPools /+`"`"[name='$($Task.eProto_Pool)'].environmentVariables.[name='PRODUCT_NAME',value='eProto']`"`" /commit:apphost`""

Это должно экранировать нужные вам строки, а также передавать параметры, как свойство eProto_Pool в $Task.

0
ответ дан FoxDeploy 17 January 2019 в 15:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: