2017-01-13 17 views
1

特定のプレフィックスに一致するすべての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変数に一貫性を持たせるようにコードを更新しました。

+0

'$ vms'には何が含まれていますか?私はあなたがVMの配列を期待している間、それが配列の配列であると仮定します。 – Swonkie

+0

第2コードブロックからの検索と一致する仮想マシンのリストが含まれています。これは、名前、パワーステート、およびその他のプロパティを含む配列です。 – McKenning

答えて

1

最初の問題(変数ネーミングに関連する)が解決されて以来、私は現在、PowerCLIがどのVCenterでVMを削除したいのか不明確であることが原因であると考えています。したがって、すべてのvCentersを一度に実行するのではなく、vCenterによってVCenterに行くことができます:

$prefix = "TEST" 
$vcservers = @("VC1","VC2") 
ForEach ($vc in $vcservers) { 
    Connect-VIServer $vc 
    $vms += Get-VM -Server $vc | where {$_.Name -like "$prefix*"} 

    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 
     } 
    Disconnect-VIServer $vc 
} 
+0

良いキャッチですが、これは翻訳元のコードからのエラーです。変数が同じになるように質問を更新しました。 – McKenning

+1

私はテストするvcenterを持っていませんが、あなたの問題をもう一度見て、私はStop-VMとRemove-VMを実行するときに、どのVCenterを見ているのかわからないためだと思います。あなたができることは、Connect-VIServerを含むすべてのものを同じForEachループ内に含めることです。それを試して、それがどうなるか教えてください。それが動作する場合、私は別の答えとしてそれを追加します。 – twglomski

+0

同じForEachループ内にすべてを含める方法がわかりません。 foreachループ内に入るまでvCentersに接続していないときに、どのようにvmsのループを実行できますか? – McKenning

関連する問題