特定のプレフィックスに一致するすべてのVMの電源を切ってDeletePermanentlyするスクリプトがあります。他の自動化ツールをテストするときにこれを使用して、ラボを簡単にリセットすることができます。このスクリプトは、複数の事前定義されたvCenterサーバーに接続し、すべてのVMのリストを取得します。私が持っている問題は、VMの電源を切ったり、VMを削除しようとすると、「VMMAMEという名前のVirtualMachineが見つかりませんでした」ということです。PowerCLI:複数のvCenterサーバーでVMを操作する
のvCenterサーバに接続コード:両方のvCenterサーバから仮想マシンのリストを取得
$vcservers = @("VC1","VC2")
Connect-VIServer $vcservers
コード:パワー
$prefix = "TEST"
ForEach ($vc in $vcservers) {
$vms += Get-VM -Server $vc | where {$_.Name -like "$prefix*"}
}
コードオフと各VMを削除します
ForEach ($vm in $vms) {
$vmname = $vm.name
if ($vm.PowerState -eq "PoweredOn") {
Stop-VM -VM $vmname -confirm:$false
Remove-VM -VM $vmname -DeletePermanently -confirm:$false
}
}
Set-PowerCLIConfiguを使用してUsersおよびAllUsersスコープに "Multiple"プロパティを設定しましたそれで、すべてのvCenterサーバーを検索する必要がありますが、何らかの理由でそれが機能していません。
EDIT 1/25/17 $ vcservers変数に一貫性を持たせるようにコードを更新しました。
'$ vms'には何が含まれていますか?私はあなたがVMの配列を期待している間、それが配列の配列であると仮定します。 – Swonkie
第2コードブロックからの検索と一致する仮想マシンのリストが含まれています。これは、名前、パワーステート、およびその他のプロパティを含む配列です。 – McKenning