如何将变量用作IIS应用程序池名称?解决调用报错问题
解决IIS应用池名称传递报错问题
报错内容(翻译为中文)
Get-IISAppPool : 无效的应用程序池名称 'DefaultAppPool
'。
所在位置 行:1 字符:1
- (Get-IISAppPool $appPoolName).processmodel.username
+ CategoryInfo : InvalidArgument: (:) [Get-IISAppPool], ArgumentException + FullyQualifiedErrorId : Invalid application pool name,Microsoft.Web.Administration.GetIISAppPoolCommand
问题原因
你用Out-String转换应用池对象时,会引入多余的换行、空白字符,导致$appPoolName不是纯净的应用池名称字符串,Get-IISAppPool无法识别这个带格式的名称。
修正方案
直接提取应用池的Name属性值,摒弃Out-String的使用:
方法一:通过-ExpandProperty提取属性值
$appPoolName = Get-IISAppPool | Where-Object {$_.Name -like "*Default*"} | Select-Object -ExpandProperty Name
方法二:直接访问对象属性
$appPoolName = (Get-IISAppPool | Where-Object {$_.Name -like "*Default*"}).Name
获取正确的名称后,执行以下命令即可正常返回结果:
(Get-IISAppPool $appPoolName).processmodel.username
内容的提问来源于stack exchange,提问作者Abhimanyu
相关产品推荐
相关产品推荐

