我有多个网站 - 每个网站都在一个单独的应用程序池中。我指的应用程序池有 1 个工作进程。停止应用程序池后,我正在尝试等待并验证工作进程是否已停止。
$appPoolName = $appPool.name;
Write-Host "appPoolName: $appPoolName";
$w3wp = Get-ChildItem "IIS:\AppPools\$appPoolName\WorkerProcesses\";
while($w3wp -and $retrys -gt 0)
{
Write-Host "w3wp value is: $w3wp";
Start-Sleep -s 10;
$retrys--;
$w3wp = Get-ChildItem "IIS:\AppPools\$appPoolName\WorkerProcesses\";
Write-Host "w3wp value(2) is: $w3wp";
if(-not $w3wp)
{
break;
}
}
这两个值的打印始终是“Microsoft.IIs.PowerShell.Framework.ConfigurationElement”,即使我看到进程已停止并且不再在任务管理器中。
也很奇怪:当我在代码运行并调用时打开另一个 PowerShell 会话时
$w3wp = Get-ChildItem "IIS:\AppPools\$appPoolName\WorkerProcesses\";
w3wp 没有价值(因为它不再存在)。
任何想法为什么价值没有改变?或者也许如何以不同的方式做到这一点?
提前致谢 :)