2015-06-02 62 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)"