Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 批快照PowerCLI脚本性能低下_Powershell_Scripting_Vmware_Esxi_Powercli - Fatal编程技术网

Powershell 批快照PowerCLI脚本性能低下

Powershell 批快照PowerCLI脚本性能低下,powershell,scripting,vmware,esxi,powercli,Powershell,Scripting,Vmware,Esxi,Powercli,我制作了一个powershell脚本,它将接收一批分隔的VM IP地址,并对每个VM进行快照 我的问题是我每次都为每个虚拟机调用getvm,这显然非常慢。我想知道是否有人可以看到另一种方法来执行相同的操作,而不必每次都调用它 Add-PSSnapin VMware.VimAutomation.Core $VCServer = "vc" Connect-VIServer $VCServer [array]$vms = (Read-Host “List of IP's (separate with

我制作了一个powershell脚本,它将接收一批分隔的VM IP地址,并对每个VM进行快照

我的问题是我每次都为每个虚拟机调用
getvm
,这显然非常慢。我想知道是否有人可以看到另一种方法来执行相同的操作,而不必每次都调用它

Add-PSSnapin VMware.VimAutomation.Core
$VCServer = "vc"

Connect-VIServer $VCServer
[array]$vms = (Read-Host “List of IP's (separate with comma)”).split(“,”) | %{$_.trim()}
foreach($vm in $vms)
    {
    Get-VM | where {$_.Guest.IPAddress -match $vm}| New-Snapshot -Name "Patching" -Description (Get-Date)
    }

只需将
Get VM
调用放在foreach外部,将其分配给一个变量并使用它:

$retrievedVMs = Get-VM
foreach($vm in $vms)
{
    $retrievedVMs | where {$_.Guest.IPAddress -match $vm}| New-Snapshot -Name "Patching" -Description (Get-Date)
}