PowerShell 스크립트를 작성하여 라이브 마이그레이션을 사용하여 VM을 지정된 호스트에서 다른 클러스터 호스트로 순차적으로 이동시킵니다.PowerShell cmdlet (Move-VM) 결과를 어떻게 억제합니까?
작동 명령은 VirtualMachineManager 모듈의 일부인 Move-VM (또는 Move-SCVirtualMachine)입니다. 그러나이 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
의 값은 null입니다.
Move-VM
에 의해 반환 된 결과를 저장하는 가장 좋은 방법은 cmdlet이 반환하는 내용을 완전히 삭제하지 않고 콘솔에 대한 출력을 억제하는 것입니다. 스크립트 출력을 피하려고합니다. this.
감사합니다.
업데이트 :
나는
-ErrorAction SilentlyContinue
를 사용하거나$ErrorActionPreference
설정을 시도했지만 에러가 발생했을 경우, 다음 출력이$move
에 저장되지 않습니다. 나는 여전히Move-VM
의 출력을 원할 것이므로$move
을 검사하고 다른 유형의 실패를 기반으로 다른 논리를 실행할 수 있습니다.VMM의 유지 관리 모드에서 수행하는 작업 (기본적으로 호스트에서 모든 VM을 비우고 클러스터의 다른 위치로 마이그레이션)을 수행하려고합니다. 그러나 VMM 2012 SP1은 한 번에 여러 VM을 서버 2008R2 호스트간에 마이그레이션하려고 시도합니다.이 호스트는 한 번에 & 개의 마이그레이션을 1 개 이상 지원할 수 없습니다. 따라서 마이그레이션이 실패하고 VMM은 다른 마이그레이션 그룹을 다시 실행하려고 시도합니다. 기본적으로 VMM은 오류 루프에 빠지게됩니다. 이 스크립트는 프로그래밍 방식으로 한 번에 하나의 VM 만 마이그레이션하는 것을 방지합니다.
2 질문 :이 실패하면 나는 항상 같은
[void]
내 함수 호출을 앞에 그 오류 (왜냐하면'-ErrorAction SilentlyContinue'. :)를 사용하여 해결 되었기 때문입니다. 또한 출력을 가질 수없는 이유는 무엇입니까? 상태 업데이트는 시간이 걸릴 때 해를 끼치 지 않으며, 바탕 화면이나 예약 된 작업의 바로 가기에서 실행하면 어쨌든 완료 될 때 표시되지 않습니다. –안녕 Graimer, 나는 빨간색 오류 출력 싶지 않아요. 흰색 텍스트는 내가 콘솔에 인쇄하고 싶은 것입니다. 내가'-ErrorAction SilentlyContinue'를 시도했음을 언급 했어야 만하지만, 문제가 있다면'$ move'는 null입니다. 실패가 있으면'$ move'를 검사하고 실패의 유형에 따라 논리를 실행할 수 있기를 원합니다. –
샘플 출력을 보면,'2> $ null' 또는'2> err.txt'로 쉽게 리다이렉트 할 수있는 에러 스트림 출력이있는 것으로 보입니다. –