如何使用appcmd.exe在IIS上为每个站点设置环境变量?

时间:2017-03-16 20:37:30

标签: iis environment-variables appcmd

在IIS管理器上为每个站点设置环境变量非常容易:

IIS

我正在寻找使用appcmd.exe的方法,所以我可以在我的安装脚本中包含它。

我最接近的是:

C:\>C:\Windows\System32\inetsrv\appcmd.exe set config "dashboard" -section:system.webServer/aspNetCore /environmentVariables.[name='foo',value='bar'] /commit:apphost

- >仪表板是我网站的名称。

但是此命令会返回此错误:

错误(消息:找不到请求的集合元素。)

2 个答案:

答案 0 :(得分:6)

您可能已经弄清楚了,但这种格式应该有效:

appcmd.exe set config "dashboard" -section:system.webServer/aspNetCore /+"environmentVariables.[name='foo',value='bar']" /commit:apphost

答案 1 :(得分:4)

如果您正在使用VSTS进行发布管理。您可以使用最大500字节的内联PowerShell脚本。以下脚本将在插入之前删除变量,以防止每次添加相同的条目。

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