我正在編寫一個PowerShell腳本,以便使用實時遷移將VM從指定的主機中順序移出到其他羣集主機上。如何禁止PowerShell cmdlet(Move-VM)結果?
操作命令是Move-VM(或Move-SCVirtualMachine),它是VirtualMachineManager模塊的一部分。但是,當我運行此cmdlet時,它總是將結果返回到我要禁止的控制檯。我不想丟失命令返回的信息。
命令
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
的值爲空。
存儲Move-VM
返回的結果的最佳方式是什麼,而不完全丟棄該cmdlet的返回值,同時抑制其輸出到控制檯?我想避免讓我的腳本輸出this。
謝謝!
更新:
我一直在使用
-ErrorAction SilentlyContinue
或設置$ErrorActionPreference
試過了,但是如果有錯誤,那麼沒有輸出存儲到$move
。我仍然需要輸出Move-VM
,所以我可以檢查$move
並根據不同類型的故障執行不同的邏輯。我意識到我基本上試圖完成VMM的維護模式(從主機撤出所有虛擬機並將其遷移到集羣中的其他位置)。但是,VMM 2012 SP1嘗試一次將多個VM遷移到Server 2008R2主機,或者從Server 2008R2主機遷移到一臺主機,因此無法同時支持多個遷移1。因此,遷移失敗,VMM將嘗試重新執行另一組遷移。實質上,VMM陷入了失敗循環。該腳本通過編程方式避免了一次只遷移一個VM。
2個問題:你不想「1/17 ...」和「虛擬機剩下的。」或者你不想該錯誤(因爲這是通過使用'-ErrorAction SilentlyContinue'。:解決的)。另外,我可以問爲什麼你不能有輸出?狀態更新不會在需要一段時間時受到傷害,並且如果您從桌面上的快捷方式運行它或作爲計劃任務運行它,則在完成任何操作時都不會看到它。 –
嗨格雷默,我不想要紅色的錯誤輸出。白色文本只是我想要打印到控制檯上。我應該提到我嘗試過'-ErrorAction SilentlyContinue',但問題是如果出現錯誤,'$ move'爲空。如果發生故障,我希望能夠檢查'$ move'並根據故障類型運行邏輯。 –
當我看着你的示例輸出,看起來你看到錯誤流輸出,你可以很容易地用'2> $ null'或'2> err.txt'重定向。 –