![](/img/trans.png)
[英]Need to list all sites, app pools, and sub apps in IIS 6.0 (Server 2k3)
[英]Recycle all apps pools in IIS by command line
我有一个 PowerShell 脚本:
& $psexec $serveraddr -u $remoteuser -p $remotepass -accepteula C:\\Windows\\System32\\inetsrv\\appcmd.exe list apppool /xml | C:\\Windows\\System32\\inetsrv\\appcmd.exe recycle apppool /in
我用来回收所有 IIS 池。 问题是只有从 IIS 池给出的默认值被回收。 不回收私人泳池。 第二个 appcmd 找不到它们。 首先 appcmd 查找所有池,由 IIS 提供和私有。
错误是:
错误(消息:Nie można odnaleźć obiektu APPPOOL o identyfikatorze "Core1"。)
从波兰语来说,它是:
错误(消息:找不到 ID 为“Core1”的对象 APPPOOL。)
我不能回收私人游泳池。 有没有办法绕过这个?
所以命令的第二部分在本地执行。 我已更改脚本以通过单个命令回收每个池:
& $psexec $server -u $remoteuser -p $remotepass -accepteula C:\\Windows\\System32\\inetsrv\\appcmd.exe recycle apppool /apppool.name:Core1
这是一个用于回收所有应用程序池的单线:
& $env:windir\system32\inetsrv\appcmd list apppools /state:Started /xml | & $env:windir\system32\inetsrv\appcmd recycle apppools /in
这对您的问题来说太过分了,但您可能对在多台服务器上并行执行某些操作的通用替代方法感兴趣:
$servers=@('server1', 'server2', 'server3')
$recycleAppPools = {
echo $(Get-Wmiobject -Class Win32_ComputerSystem).Name
appcmd list apppools /state:Started /xml | appcmd recycle apppools /in
echo "`n"
}
workflow Perform-Deployment {
Param ($servers, $actionBlock)
# Run on all servers in parallel
foreach -parallel ($server in $servers) {
"Doing on $server..."
# Execute script on the server
InlineScript {
$scriptBlock = [scriptblock]::Create($Using:actionBlock)
Invoke-Command -computername $Using:server -ScriptBlock $scriptBlock
}
}
}
cls
# Execute workflow
Perform-Deployment $servers $recycleAppPools
此外,您可以将参数传递给脚本块,例如:
$DeployPythonPackage = {
param($venv, $pythonPackagePath)
& "$venv\scripts\pip" install --upgrade $pythonPackagePath
}
workflow Perform-Deployment {
Param ($servers, $actionBlock, $venv, $pythonPackagePath)
# Run on all servers in parallel
foreach -parallel ($server in $servers) {
"Deploying Python package '$pythonPackagePath' on $server..."
# Execute script on the server
InlineScript {
$scriptBlock = [scriptblock]::Create($Using:actionBlock)
Invoke-Command -computername $Using:server -ScriptBlock $scriptBlock `
-ArgumentList $Using:venv, $Using:pythonPackagePath
}
}
}
cls
# Execute workflow
Perform-Deployment $servers $DeployPythonPackage $venv $pythonPackagePath
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.