在APC UPS的电池电量严重不足的情况下正确关闭VMWare ESXi虚拟机管理程序

在开放空间中,有许多文章介绍了如何配置PowerChute Business Edition,以及如何从PowerShell连接到VMWare,但是以某种方式在一个地方找不到所有这些内容,并详细说明了这些要点。他们是。



1.简介



尽管我们与能源有关,但有时也会出现电问题。这就是UPS发挥作用的地方,但是它的电池很不耐用。该怎么办?关掉!



只要所有服务器都是物理服务器,一切就可以顺利进行,而PowerChute Business Edition可以帮助我们。免费,适用于5台服务器,足够了。代理,服务器和控制台安装在一台计算机上。当接近尾声时,代理简单地执行了一个批处理文件,在其中将shutdown.exe / s / m发送到相邻服务器,然后熄灭其OS。每个人都还活着。

然后是虚拟机的时代。



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



然后,我们安装了.Net Framework 4.7。即使框架在安装后未明确要求重新启动,此处也需要重新启动,否则它将无法继续进行。之后,更新可能仍然会出现,您还需要安装它。



接下来,我们安装了PowerShell 5.1。即使没有要求,也需要重新启动

接下来,安装PowerCLI 11.5。从此和以前的要求来看,是一个非常新的版本。可以通过Internet进行有关此的许多文章,但是我们已经下载了它,因此我们只是将所有文件复制到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. Default.cmd



APC代理启动的同一批处理文件。位于“ C:\ Program Files [(x86)] \ APC \ PowerChute Business Edition \ agent \ cmdfiles”中,并位于:



“ C:\ Windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe”-“ FileC :\ ... \ shutdown_hosts.ps1“

似乎所有内容都已设置并检查,甚至启动了cmd-正常工作,将其关闭。



我们从APC控制台运行命令文件检查(有一个“测试”按钮)-它不起作用。



在这里,那尴尬的时刻没有完成任何工作。



5.导泻



我们看任务管理器,我们看到-cmd闪烁,powershell闪烁。让我们仔细看看-cmd * 32,以及相应的powershell * 32。我们知道APC代理服务是32位的,这意味着它会启动相应的控制台。



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



好吧,更改用于调用powershell的行:



"C:\Windows\<b>SysWOW64</b>\WindowsPowerShell\v1.0\powershell.exe…


6.幸福的结局!




All Articles