【问题标题】:Restart-WebAppPool fails using foreach使用 foreach 重新启动 WebAppPool 失败
【发布时间】:2017-05-31 16:08:27
【问题描述】:

我正在整理一个 Powershell 脚本,它将在清晨的预定时间回收所有当前正在运行的 AppPools。现在我只是想让它在本地机器上工作并且收到错误“无法验证参数'Name'上的参数。参数为空。”

# 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 说参数“名称”为空。我确定我错过了一些简单但不知道它是什么的东西。

提前感谢所有帮助。

【问题讨论】:

标签: powershell


【解决方案1】:

您遇到此问题是因为变量 $item 超出了范围。 (不确定这是否是最好的解释。)您需要将参数传递给 Invoke-Command 中的脚本块才能使用它。

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

【讨论】:

    【解决方案2】:

    将参数传递到 Invoke-Command 脚本块并不是那么简单,but it is still pretty simple...

    您需要查看“传递本地值”部分。

    【讨论】:

    • 这也有效。感谢您传递链接以获取更多信息。
    猜你喜欢
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2014-03-20
    相关资源
    最近更新 更多