Asp.net foreach循环中变量后缺少“in”

Asp.net foreach循环中变量后缺少“in”,asp.net,powershell,iis,foreach,application-pool,Asp.net,Powershell,Iis,Foreach,Application Pool,我正在尝试执行下面的powershell脚本以获取应用程序池状态。但我遇到下面的错误。有人能帮我吗?我缺少什么 代码: 错误: + ForEach ($_.name in $applicationPools) + ~ Missing 'in' after variable in foreach loop. At C:\Users\JoyMathew\Desktop\App.ps1:9 char:38 + ForEach ($_.name in $applicationPoo

我正在尝试执行下面的powershell脚本以获取应用程序池状态。但我遇到下面的错误。有人能帮我吗?我缺少什么

代码:

错误:

+ ForEach ($_.name in $applicationPools)
+            ~
Missing 'in' after variable in foreach loop.
At C:\Users\JoyMathew\Desktop\App.ps1:9 char:38
+ ForEach ($_.name in $applicationPools)
+                                      ~
Unexpected token ')' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : MissingInInForeach
再加上, 快乐

我的意思是:

import-module webadministration
$applicationPools = Get-ChildItem IIS:\AppPools
ForEach ($pool in $applicationPools)
{
$appPool = $pool.name
$appmemversion = (get-ItemProperty "IIS:\AppPools\$appPool").ManagedRuntimeVersion.value
$appmem = (get-ItemProperty "IIS:\AppPools\$appPool").recycling.periodicrestart.privateMemory.value
$apptimeinv = (get-ItemProperty "IIS:\AppPools\$appPool").recycling.periodicRestart.time # | select-object value
$appsettime = (get-ItemProperty "IIS:\AppPools\$appPool").Recycling.periodicRestart.schedule.collection[0].value #| select-object value 
Write-Output "$appPool,$appmemversion,$appmem,$apptimeinv,$appsettime," 
}

对于Get ItemProperty正在返回的对象,我使用了.not符号来进行选择。。。这样,如果其中一个项为null,则输出中将为null。

$\u在管道中使用。。。您已将$application池与foreach循环分开,因此如果将$$\u.name更改为变量名,如$pool,则可以解决您的问题。@thomschumacher您应该回答这个问题,并给出一个更正代码的快速示例。我尝试包装$$\u.name,但我仍然得到同样的错误。我能够在其他系统上运行相同的代码。但是在一些应用服务器上面临这个问题。括号中的第一部分需要是变量的名称,而不是$属性的名称。很高兴我能提供帮助
import-module webadministration
$applicationPools = Get-ChildItem IIS:\AppPools
ForEach ($Name in $applicationPools)
{
    $appPool = $Name
    $appmemversion = get-ItemProperty "IIS:\AppPools\$appPool" ManagedRuntimeVersion.value
    $appmem = get-ItemProperty "IIS:\AppPools\$appPool" recycling.periodicrestart.privateMemory.value
    $apptimeinv = get-ItemProperty "IIS:\AppPools\$appPool" recycling.periodicRestart.time | select-object value
    $appsettime = get-ItemProperty "IIS:\AppPools\$appPool" Recycling.periodicRestart.schedule.collection[0].value | select-object value 
    Write-Output "$appPool,$appmemversion,$appmem,$apptimeinv,$appsettime," 
}

# OR

import-module webadministration
$applicationPools = Get-ChildItem IIS:\AppPools
$applicationPools | ForEach-Object {
    $appPool = $_.name
    $appmemversion = get-ItemProperty "IIS:\AppPools\$appPool" ManagedRuntimeVersion.value
    $appmem = get-ItemProperty "IIS:\AppPools\$appPool" recycling.periodicrestart.privateMemory.value
    $apptimeinv = get-ItemProperty "IIS:\AppPools\$appPool" recycling.periodicRestart.time | select-object value
    $appsettime = get-ItemProperty "IIS:\AppPools\$appPool" Recycling.periodicRestart.schedule.collection[0].value | select-object value 
    Write-Output "$appPool,$appmemversion,$appmem,$apptimeinv,$appsettime," 
}
import-module webadministration
$applicationPools = Get-ChildItem IIS:\AppPools
ForEach ($pool in $applicationPools)
{
$appPool = $pool.name
$appmemversion = (get-ItemProperty "IIS:\AppPools\$appPool").ManagedRuntimeVersion.value
$appmem = (get-ItemProperty "IIS:\AppPools\$appPool").recycling.periodicrestart.privateMemory.value
$apptimeinv = (get-ItemProperty "IIS:\AppPools\$appPool").recycling.periodicRestart.time # | select-object value
$appsettime = (get-ItemProperty "IIS:\AppPools\$appPool").Recycling.periodicRestart.schedule.collection[0].value #| select-object value 
Write-Output "$appPool,$appmemversion,$appmem,$apptimeinv,$appsettime," 
}