Powershell中的数组的Appcmd语法

时间:2015-06-02 15:49:45

标签: powershell iis

我正在尝试运行以下内容,使用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

但即使这样也行不通。我不知所措。谢谢!

1 个答案:

答案 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)" 内做任何你喜欢的事情并将它们嵌套在你喜欢的地方:

$()