I want to add/delete/edit IIS, asp.net core website environment variables in an automated way through appcmd/batch file or PowerShell script, not only one website's variable but on bulk operation. although I can do this one by using IIS UI
Although I can add environment variable by using appcmd
appcmd.exe reset config "variable" -section:system.webServer/aspNetCore /+"environmentVariables.[name='foo',value='bar']"
I could not find a way for add/delete/update multiple websites environment values by just clicking single button instead of going each website's configuration setting to set multiple values, After that I can use that inline script in Azure DevOps pipeline
You can write multiple powershell into a file and execute it. Here is an example for reference.
Create a file and named "xxx.ps1".
Write multiple powershell statements.
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Core Web Site' -filter "system.webServer/aspNetCore/environmentVariables" -name "." -value @{name='foo';value='bar'}
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Core Web Site' -filter "system.webServer/aspNetCore/environmentVariables" -name "." -value @{name='doc';value='qwe'}
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site' -filter "system.webServer/aspNetCore/environmentVariables" -name "." -value @{name='foo';value='bar'}
Write-Output ('Execute succeed')
Edit and remove enironment value
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Core Web Site' -filter "system.webServer/aspNetCore/environmentVariables/environmentVariable[@name='foo' and @value='bar']" -name "name" -value "foo2"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Core Web Site' -filter "system.webServer/aspNetCore/environmentVariables/environmentVariable[@name='foo' and @value='bar']" -name "value" -value "bar2"
Remove-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Core Web Site' -filter "system.webServer/aspNetCore/environmentVariables" -name "." -AtElement @{name='foo1';value='bar1'}
Open powershell to execute the file(file's path + name).
PS C:\WINDOWS\system32> & "D:\floder1\xxx.ps1"