PowerChute Business Edition の設定方法や PowerShell から VMWare に接続する方法についての記事はたくさんありますが、微妙な点について説明したものを XNUMX か所にまとめて見つけることができませんでした。 しかし、それらは存在します。
1 エントリー
私たちはエネルギーと何らかの関わりがあるにもかかわらず、電気に関する問題が時々発生します。 ここで UPS が活躍しますが、残念なことにバッテリーの寿命は長くありません。 何をするか? 消す!
すべてのサーバーが物理的なものであったため、物事は順調に進んでいたのですが、PowerChute Business Edition が私たちを助けてくれました。 サーバー 5 台までは無料で、これで十分でした。 エージェント、サーバー、コンソールが XNUMX 台のマシンにインストールされました。 終了が近づくと、エージェントは単に shutdown.exe /s /m を隣接サーバーに送信するコマンド ファイルを実行し、OS をシャットダウンしました。 誰もが生きています。
次に、仮想マシンの時代が来ました。
2. 背景と反省
それで、私たちは何を持っているのでしょうか? 何もありません。Windows Server 2008 R2 を搭載した 2019 台の物理サーバーと、Windows Server 2003、Windows Server XNUMX、CentOS を含む複数の仮想マシンを備えた XNUMX 台のハイパーバイザーです。 そしてもう XNUMX つの 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
OK、インストールされていることがわかります:
Import-Module VMWare.PowerCLI
はい、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