如何通过PowerShell设置IIS应用程序池setProfileEnvironment属性
如何通过PowerShell设置setProfileEnvironment属性
运行配置代码时触发的报错信息:
"在此对象上找不到属性'setProfileEnvironment',请验证该属性存在且可设置。"
原报错代码示例:
$IISServerManager = Get-IISServerManager $pool = $IISServerManager.ApplicationPools.Add("MyPoolName") ... $pool.ProcessModel.LoadUserProfile = $true $pool.ProcessModel.SetProfileEnvironment = $true
报错原因
Microsoft.Web.Administration程序集的强类型ProcessModel对象默认没有公开SetProfileEnvironment属性,这个属性是IIS配置节点中的扩展属性,无法通过强类型对象的属性直接赋值,直接调用就会触发属性不存在的错误。
正确配置方案
方案1:基于IIS ServerManager对象操作(适配原有代码逻辑)
直接通过配置元素的通用属性赋值方法操作,不需要调整原有代码的整体结构:
$IISServerManager = Get-IISServerManager $pool = $IISServerManager.ApplicationPools.Add("MyPoolName") $pool.ProcessModel.LoadUserProfile = $true # 调用配置元素的通用赋值方法设置扩展属性 $pool.ProcessModel.ElementElement.SetAttributeValue("setProfileEnvironment", $true) # 提交所有配置变更到IIS配置文件 $IISServerManager.CommitChanges()
方案2:基于WebAdministration模块的IIS PSDrive操作
如果习惯用PowerShell原生IIS管理命令,可以用这种方式:
# 导入IIS管理模块 Import-Module WebAdministration # 新建应用程序池,已存在的池可跳过此步 New-WebAppPool -Name "MyPoolName" # 配置LoadUserProfile Set-ItemProperty -Path "IIS:\AppPools\MyPoolName" -Name "processModel.loadUserProfile" -Value $true # 配置setProfileEnvironment Set-ItemProperty -Path "IIS:\AppPools\MyPoolName" -Name "processModel.setProfileEnvironment" -Value $true
注意:
setProfileEnvironment依赖LoadUserProfile = $true的配置才能生效,配置完成后重启对应应用程序池即可让配置生效。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

