2015-06-02 35 views
0

我试图运行下面要设置处理映射每个PowerShell中使用APPCMD我们网站的阵列:APPCMD语法在PowerShell中

$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".) 

我在做什么错?我尝试使用$ site变量的属性:

$site.name 

但即使这样也行不通。我很茫然。谢谢!

+1

试试'appcmd set config“$($ site.Name)”' –

+0

这样做!非常感谢!!! –

回答

1

正如您所遇到的,"$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)"