在 APC UPS 电池处于临界状态时正常关闭 VMWare ESXi 管理程序

有很多关于如何配置 PowerChute Business Edition 以及如何从 PowerShell 连接到 VMWare 的文章,但不知何故,我无法在一处找到所有这些内容以及对细微之处的描述。 但它们确实存在。

1。 条目

尽管我们与能源有一定的联系,但有时也会出现电力问题。 这就是 UPS 发挥作用的地方,但遗憾的是,它的电池续航时间并不长。 该怎么办? 关!

虽然所有服务器都是物理服务器,但一切进展顺利,PowerChute Business Edition 帮助我们摆脱了困境。 免费,5台服务器,足够了。 代理、服务器和控制台安装在一台计算机上。 当临近结束时,代理只需执行一个命令文件,将 shutdown.exe /s /m 发送到相邻服务器,然后关闭其操作系统。 每个人都还活着。
然后是虚拟机的时候了。

2. 背景和思考

那么我们有什么呢? 什么都没有——一台装有 Windows Server 2008 R2 的物理服务器和一台装有多个虚拟机(包括 Windows Server 2019、Windows Server 2003 和 CentOS)的虚拟机管理程序。 还有另一款 UPS – APC Smart-UPS。

我们听说过 NUT,但还没有抽出时间来研究它;我们只使用了手头上的东西,即 PowerChute Business Edition。

虚拟机管理程序可以自行关闭其虚拟机;剩下的就是告诉它时间到了。 有一个非常有用的东西 VMWare.PowerCLI,这是 Windows Powershell 的扩展,它允许您连接到虚拟机管理程序并告诉它您需要的一切。 还有很多有关 PowerCLI 设置的文章。

3. 流程

UPS 物理连接到 2008 服务器的 com 端口,幸运的是它就在那里。 尽管这并不重要 - 可以通过接口转换器 (MOXA) 连接到任何虚拟 Windows 服务器。 此外,除非另有明确说明,所有操作均在 UPS 连接的计算机 - Windows Server 2008 上执行。 其上安装了 PowerChute Business Edition 代理。 这里是第一个微妙点:代理服务必须不是从系统启动,而是从用户启动,否则代理将无法执行cmd文件。

接下来我们安装.Net Framework 4.7。 这里需要重启一下,即使框架在安装后没有明确要求,否则它不会进一步进行。 之后,更新可能仍然会出现,也需要安装。

接下来我们安装了PowerShell 5.1。 还需要重启,即使他不问。
接下来,安装 PowerCLI 11.5。 这是一个相当新的版本,因此有以前的要求。 你可以通过互联网来完成,有很多关于这方面的文章,但我们已经下载了它,所以我们只是将所有文件复制到 Modules 文件夹中。

检查:

Get-Module -ListAvailable

好的,我们看到我们已经安装了:

Import-Module VMWare.PowerCLI

是的,Powershell 控制台当然是以管理员身份启动的。

Powershell 设置。

  • 允许执行任何脚本:

Set-ExecutionPolicy Unrestricted

  • 或者您只能允许忽略脚本证书:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • 允许 PowerCLI 连接到具有无效(过期)证书的服务器:

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • 禁止输出关于加入经验交流计划的PowerCLI消息,否则日志中将会有很多不必要的信息:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • 保存用于登录 VMWare 主机的用户凭据,以免在脚本中显式显示它们:

New-VICredentialStoreItem -Host address -User user -Password 'password'

检查将显示我们救了谁:

Get-VICredentialStoreItem

您还可以检查连接:Connect-VIServer 地址。

脚本本身,例如:已连接、关闭、断开连接以防万一,可以使用以下选项:


    Connect-VIserver -Server $vmhost 
    Stop-VMHost $vmhost -force -Confirm:$false 
    Disconnect-VIserver $vmhost -Confirm:$false

4.默认.cmd

由 APC 代理启动的同一批处理文件。 它位于“C:Program Files[ (x86)]APCPowerChute Business Editionagentcmdfiles”中,其中:

“C:Windowssystem32WindowsPowerShellv1.0powershell.exe”-文件“C:...shutdown_hosts.ps1”
似乎一切都已配置和检查,我们甚至启动了 cmd - 它工作正常,将其关闭。

我们从 APC 控制台运行命令文件测试(那里有一个测试按钮)——它不起作用。

这就是那个尴尬的时刻,所有的工作都没有结果。

5. 宣泄

我们查看任务管理器,我们看到 cmd 闪烁,powershell 闪烁。 让我们仔细看看 - cmd *32 以及相应的 powershell *32。 我们明白 APC代理服务是32位的,这意味着它运行相应的控制台。

我们以管理员身份启动 powershell x86,并再次从步骤 3 安装和配置 PowerCLI。

好吧,让我们更改一下 powershell 调用行:

"C:Windows<b>SysWOW64</b>WindowsPowerShellv1.0powershell.exe…

6. 幸福的结局!

来源: habr.com

添加评论