在 APC UPS 的電池電量達到臨界水平時,VMW​​are ESXi 虛擬機管理程序從容關閉

有很多關於如何配置 PowerChute Business Edition 以及如何從 PowerShell 連接到 VMWare 的文章,但不知何故,我無法在一個地方找到所有這些內容以及對細微之處的描述。 但它們確實存在。

一、簡介

儘管我們與能源有一定的聯繫,但有時也會出現電力問題。 這就是 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. 幸福的結局!

來源: www.habr.com

添加評論