Как установить переменные среды для каждого сайта в IIS с помощью appcmd.exe?


person andrecarlucci    schedule 16.03.2017    source источник


Ответы (2)


Возможно, вы уже поняли это, но этот формат должен работать:

appcmd.exe set config "dashboard" -section:system.webServer/aspNetCore /+"environmentVariables.[name='foo',value='bar']" /commit:apphost
person Adam    schedule 22.06.2017
comment
Это работает, но если вы звоните из VSTS, это со временем добавит несколько элементов в конфигурацию, так что будьте осторожны. - person bryanbcook; 12.05.2018
comment
Вы можете использовать appcmd.exe set config my-website -section:system.webServer/aspNetCore /~environmentVariables /commit:site, чтобы очистить переменные среды. - person sduplooy; 03.01.2019
comment
@sduplooy /~environmentVariables вставляет тег <clear />, но не очищает список. Итак, теперь у меня есть теги clear и environmentVariable, повторяющиеся под <environmentVariables> <clear /> <environmentVariable name="test" /> <clear /><environmentVariable name="test" /> - person oleksa; 10.09.2019
comment
Я обнаружил, что clear config "Default Web Site/$(webSiteName)" -section:system.webServer/aspNetCore /commit:site делает именно то, что мне нужно — очищает весь узел aspNetCore в глобальном файле web.config для значения переменной $(webSiteName). - person oleksa; 10.09.2019
comment
Просто чтобы добавить ответ @oleksa, если вы делаете фиксацию на хосте приложения в команде set config, вы должны сделать фиксацию на хосте приложения в команде clear config. - person Tiago Cardoso; 10.10.2019
comment
команда выглядит хорошо appcmd.exe set config dashboard -section:system.webServer/aspNetCore /+environmentVariables.[name='foo',value='bar'] /commit:apphost как будет выглядеть команда, если добавить/отредактировать несколько переменных среды ? - person Saad Awan; 19.11.2020

Если вы используете VSTS с управлением выпусками. Вы можете использовать встроенный скрипт powershell размером не более 500 байт. Следующий скрипт удалит переменную перед вставкой, чтобы предотвратить добавление одной и той же записи каждый раз.

param($website,$var,$value,$Once=$false)
$cmd='c:\windows\system32\inetsrv\appcmd.exe'
$c=(&$cmd list config $website -section:system.webServer/aspNetCore)
if($c -like "*$var*" -and $Once -eq $true){return;}
if($c -like "*$var*"){&$cmd set config $website -section:system.webServer/aspNetCore /-"environmentVariables.[name='$var',value='$value']" /commit:apphost}
&$cmd set config $website -section:system.webServer/aspNetCore /+"environmentVariables.[name='$var',value='$value']" /commit:apphost
person Thom Kiesewetter    schedule 14.04.2018
comment
Я смог поместить это в задачу DeploymentGroup Inline PowerShell в VSTS и с легкостью установить ASPNETCORE_Environment, используя этот подход. - person bryanbcook; 12.05.2018