我正在整理一个Powershell脚本,该脚本将在清晨的预定时间回收所有当前运行的AppPools。现在我只是想让它在本地机器上运行并且收到错误“无法验证参数'名称上的参数'。参数为空。”
# 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'为空。我确定我错过了一些简单的东西,但不知道它是什么。
提前感谢您提供任何帮助。
答案 0 :(得分:0)
将参数传递给Invoke-Command脚本块并不是那么简单,but it is still pretty simple...
您想查看"传递本地值"部分。
答案 1 :(得分:0)
您遇到此问题,因为变量$ item设置在范围之外。 (不确定这是否是最佳解释。)您需要将参数传递给Invoke-Command中的脚本块才能使用它。
Invoke-Command -ArgumentList $item {Restart-WebAppPool -Name $args[0]}