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

How to set environment variables per site on IIS using appcmd.exe?

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

我正在寻找一种使用 appcmd.exe 的方法,以便我可以将其包含在我的安装脚本中。

我得到的最接近的是这个:

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

-> dashboard 是我网站的名称。

但是这个命令returns这个错误:

错误(message:Cannot 找到请求的集合元素。)

您可能已经明白了,但这种格式应该有效:

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

如果您使用带有发布管理的 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