2017-05-31 85 views
0

我正在放置一個Powershell腳本,將在清晨計劃的時間回收所有當前正在運行的AppPools。現在,我只是試圖讓它在本地機器上工作,並且出現錯誤「無法驗證參數名稱參數」,參數爲空。「重新啓動WebAppPool使用foreach失敗

# Load IIS module: 
Import-Module WebAdministration 

# Get pool names: 
$poolList = (Get-ChildItem -Path IIS:\AppPools | Where {$_.State -eq 
"Started"} | Select -ExpandProperty Name) 

# Recycle Web App Pools 
foreach ($item in $poolList) 
{ 
Write-Host "Processing" $item -ForegroundColor Green 
Invoke-Command -ComputerName localhost -ScriptBlock {Restart-WebAppPool - 
Name $item} 
} 

當我運行腳本時,它循環遍歷每個AppPool項目。我看到用這條線......

Write-Host "Processing" $item -ForegroundColor Green 

...但是Invoke-Command說參數'Name'是空的。我確信我錯過了一些簡單的東西,但不知道它是什麼。

在此先感謝您的幫助。

+1

的可能的複製[Powershell的調用命令與變量的腳本名稱](https://stackoverflow.com/questions/11738227/powershell-invoke-command-with-variable-for-script-name ) – TessellatingHeckler

回答

0

您遇到此問題是因爲變量$ item設置爲範圍外。 (不知道這是否是最好的解釋。)您需要將參數傳遞給Invoke-Command中的腳本塊才能使用它。

Invoke-Command -ArgumentList $item {Restart-WebAppPool -Name $args[0]}

+0

謝謝。這工作。 –

0

傳遞參數到調用命令腳本塊不那麼簡單,but it is still pretty simple...

你會希望將「傳遞本地值」部分退房。

+0

這也工作。感謝您通過鏈接傳遞更多信息。 –