Asp.net foreach循环中变量后缺少“in”
我正在尝试执行下面的powershell脚本以获取应用程序池状态。但我遇到下面的错误。有人能帮我吗?我缺少什么 代码: 错误: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
+ 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,"
}