如何在 IIS 8 中远程停止/启动应用程序池
Posted
技术标签:
【中文标题】如何在 IIS 8 中远程停止/启动应用程序池【英文标题】:How to remotely stop/start an application pool in IIS 8 【发布时间】:2015-03-12 16:08:16 【问题描述】:警告:每人使用一行!
我在 IIS 6 中使用了这些命令,它们运行良好。
开始:
(get-wmiobject -namespace 'root\MicrosoftIISv2' -computername 'REMOTE_SERVER' -class 'IIsApplicationPool' | where-object $_.Name -eq 'W3SVC/AppPools/MY_FANCY_APPPOOL').InvokeMethod('Stop', $null)"
-和-
停止:
(get-wmiobject -namespace 'root\MicrosoftIISv2' -computername 'REMOTE_SERVER' -class 'IIsApplicationPool' | where-object $_.Name -eq 'W3SVC/AppPools/MY_FANCY_APPPOOL').InvokeMethod('Start', $null)
我正在 IIS 8 中寻找替代方案。我需要几个单行代码,并且它们必须是 Powershell 命令。我通过 TFS 中的 InvokePowerShellCommand
活动调用它们。有没有人可以帮助我?
【问题讨论】:
您不应该在构建过程中使用应用程序池。部署与构建是分开的——为此使用发布管理工具。过度扩展构建过程来进行部署通常是非常痛苦和不灵活的。 完全同意@DanielMann。 “构建”作业的目标是生成一个成功测试的候选发布工件。 让构建执行部署步骤对于 CI 或 CD 构建来说并不少见。虽然我不确定为什么在保存 web.config 文件或更改 bin 文件夹强制回收时需要明确回收应用程序池。 如果您正在部署使用 IIS(进程外)托管的 ASP.NET Core 应用程序,您可能需要这样做。应用程序文件在运行时被锁定,因此您需要停止池,进行部署,然后重新启动。 【参考方案1】:您可以执行以下操作来启动您的应用程序池:
Invoke-Command -ComputerName "REMOTE_SERVER" -ScriptBlock Start-WebAppPool -Name "MY_FANCY_APPPOOL"
您可以执行以下操作来停止您的应用程序池:
Invoke-Command -ComputerName "REMOTE_SERVER" -ScriptBlock Stop-WebAppPool -Name "MY_FANCY_APPPOOL"
【讨论】:
在运行Stop-WebAppPool
之前,您需要Import-Module
吗?即使安装了 IIS,我也遇到了这些命令工作的问题。
我现在无法检查,但我想您必须先在 REMOTE_SERVER 上启用 IIS 的远程管理。
@Pred 是的,将其添加到 ScriptBlock 的开头:Import-Module WebAdministration;
我在使用上述命令时遇到异常:[XXX.XX.X.XX] 连接到远程服务器 XXX.XX.X.XX 失败,并显示以下错误消息:WinRM 客户端无法处理请求。默认身份验证可在以下条件下与 IP 地址一起使用:传输为 HTTPS 或目标位于 TrustedHosts 列表中,并且提供了显式凭据。使用 winrm.cmd 配置 TrustedHosts。请注意,TrustedHosts 列表中的计算机可能未经过身份验证。有关如何设置 TrustedHosts 的更多信息,请运行以下命令:winrm...
我没有在我的 Win10 开发盒上加载 WebAdministration,我能够在 Server 2012 R2 实验室盒上执行此操作而没有任何错误。【参考方案2】:
首先,有时您需要添加显式等待,以便应用程序池响应控制消息:
Invoke-Command -ComputerName "$REMOTE_SERVER" -ScriptBlock Import-Module WebAdministration; Start-Sleep -s 10; Start-WebAppPool -Name "$APP_POOL_NAME"
然后停下来:
Invoke-Command -ComputerName "$REMOTE_SERVER" -ScriptBlock Import-Module WebAdministration; Stop-WebAppPool -Name "$APP_POOL_NAME"
【讨论】:
以上是关于如何在 IIS 8 中远程停止/启动应用程序池的主要内容,如果未能解决你的问题,请参考以下文章