我正在尝试运行以下命令,以在Powershell中使用appcmd为我们的每个网站设置处理程序映射:
$websites = Get-ChildItem IIS:\Sites
foreach ($Site in $WebSites) {
C:\Windows\system32\inetsrv\appcmd set config "$site" /section:handlers -accessPolicy:"Read,Script,Execute"}
但是,我在遍历每个站点时收到针对每个站点的此错误消息:
ERROR ( message:Cannot find SITE object with identifier "Microsoft.IIs.PowerShell.Framework.ConfigurationElement". )
我究竟做错了什么?我尝试使用$ sites变量的属性:
$site.name
但即使那样也行不通。我很茫然。谢谢!
如您所见,"$site"
它不会扩展到网站的名称,而是扩展到所引用的对象的类型$site
。"$site.name"
并非遥不可及,但实际上:
"$site" -eq "Microsoft.IIs.PowerShell.Framework.ConfigurationElement"
"$site.name" -eq "Microsoft.IIs.PowerShell.Framework.ConfigurationElement.name"
PowerShell解析器停止识别位于的变量名.
,并将其余的(".name"
)视为字符串。
您可以使用$()
子表达式运算符对整个语句进行转义:
"Name: $($site.name)"
您可以在内部做任何您想做的事情,$()
然后将它们全部嵌套:
"Random Site Name: $("$(Get-Random -Maximum ([int32]::MaxValue)){0}" -f $site.name)"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句