ライブ マイグレーションを使用して、VM を指定したホストから別のクラスター ホストに順次移動する PowerShell スクリプトを作成しています。
操作コマンドは、VirtualMachineManager モジュールの一部である Move-VM (または Move-SCVirtualMachine) です。ただし、このコマンドレットを実行すると、常に結果がコンソールに返されるので、これを抑制したいと考えています。コマンドが返す情報を失いたくありません。
コマンド
Move-VM -VM $vmToMigrate -VMHost $destinationHost
と$move = (Move-VM -VM $vmToMigrate -VMHost $destinationHost)
コマンドの結果が成功か失敗かにかかわらず、コンソールに情報を返します。私のスクリプトには、 に保存された結果に応じて処理を進める方法に関するロジックが組み込まれている$move
ため、 の結果が必要ですが、Move-VM
それらをコンソールにエコーさせたくないだけです。私が試してみました
($move = (Move-VM -VM $vmToMigrate -VMHost $destinationHost)) | out-null
しかし、によって返される情報Move-VM
はキャプチャされません。の値$move
は null です。
Move-VM
コンソールへの出力を抑制しながら、コマンドレットが返すものを完全に破棄せずに、によって返された結果を保存する最良の方法は何ですか? スクリプトがthisを出力しないようにしたい。
ありがとう!!
アップデート:
を使用
-ErrorAction SilentlyContinue
または設定しようとし$ErrorActionPreference
ましたが、エラーが発生した場合、出力は に保存されません$move
。の出力が必要なので、さまざまな種類の障害に基づいてさまざまなロジックをMove-VM
調べて実行できます。$move
基本的に、VMM のメンテナンス モードが行うこと (すべての VM をホストから退避させ、クラスター内の別の場所に移行する) を達成しようとしていることに気付きました。ただし、VMM 2012 SP1 は、Server 2008R2 ホストとの間で一度に複数の VM を移行しようとします。これは、一度に複数の VM を移行することはできません。したがって、移行は失敗し、VMM は別のグループの移行を再実行しようとします。基本的に、VMM は障害ループに陥ります。このスクリプトは、一度に 1 つの VM のみをプログラムによって移行することで、これを回避します。