$appcmd = "$($env:systemroot)\system32\inetsrv\AppCmd.exe"
# Define your application pools and their corresponding Atatus app names
$appPools = @{
"<IISAppPoolName1>" = "<AtatusAppName1>"
"<IISAppPoolName2>" = "<AtatusAppName2>"
}
# Base environment variables (common to all pools)
$environment = @{
COR_ENABLE_PROFILING = "1"
COR_PROFILER = "{A6C28362-6F75-472A-B36C-50C1644DA40A}"
COR_PROFILER_PATH = "<extracted directory>\atatus_profiler.dll"
ATATUS_PROFILER_HOME = "<extracted directory>"
ATATUS_PROFILER_INTEGRATIONS = "<extracted directory>\integrations.yml"
COMPlus_LoaderOptimization = "1"
ATATUS_LICENSE_KEY = "YOUR_LICENSE_KEY"
ATATUS_SERVER_URL = "YOUR_ON_PREMISE_URL"
ATATUS_ANALYTICS = "true"
ATATUS_TRACING = "true"
ATATUS_CAPTURE_BODY = "all"
}
# Apply environment variables per app pool
$appPools.GetEnumerator() | ForEach-Object {
$appPool = $_.Key
$atatusAppName = $_.Value
$envVars = $environment.Clone()
$envVars["ATATUS_APP_NAME"] = $atatusAppName
$envVars.Keys | ForEach-Object {
& $appcmd set config -section:system.applicationHost/applicationPools /+"[name='$appPool'].environmentVariables.[name='$_',value='$($envVars[$_])']"
}
}
# Recycle only the configured app pools to apply changes
$appPools.Keys | ForEach-Object {
& $appcmd recycle apppool /apppool.name:"$_"
}