我正在尝试运行以下内容,使用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
但即使这样也行不通。我不知所措。谢谢!
答案 0 :(得分:1)
正如您遇到的那样,"$site"
不会扩展到网站的名称,而是扩展到{{1}的对象的 类型 }指的。 $site
没有办法,但实际上是:
"$site.name"
PowerShell解析器停止在"$site" -eq "Microsoft.IIs.PowerShell.Framework.ConfigurationElement"
"$site.name" -eq "Microsoft.IIs.PowerShell.Framework.ConfigurationElement.name"
识别变量名称,并将其余部分(.
)视为字符串。
您可以使用".name"
子表达式运算符来转义整个语句:
$()
你可以在"Name: $($site.name)"
内做任何你喜欢的事情并将它们嵌套在你喜欢的地方:
$()