有很多关于如何配置 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