[英]How can I quickly find VMs with serial ports in PowerCLI
我有一個腳本,它運行大約15分鍾,檢查大約700個VM的各個方面。 這不是問題,但是我現在想查找連接了串行端口的設備。 這是我添加來檢查的功能:
Function UsbSerialCheck ($vm)
{
$ProbDevices = @()
$devices = $vm.ExtensionData.Config.Hardware.Device
foreach($device in $devices)
{
$devType = $device.GetType().Name
if($devType -eq "VirtualSerialPort")
{
$ProbDevices += $device.DeviceInfo.Label
}
}
$global:USBSerialLookup = [string]::join("/",$ProbDevices)
}
添加此功能會使腳本運行時間增加一小時,這是不可接受的。 有可能以更有效的方式做到這一點嗎? 我發現的所有方式都是這種形式。
另外,我知道以上述方式使用全局變量也不理想。 我不想這樣做。 但是,我要添加到現有腳本中,並使用其樣式/格式。
在循環中追加到數組( $arr += $newItem
)效果不佳,因為它將所有現有元素復制到新數組中。 這應該提供更好的性能:
$ProbDevices = $vm.ExtensionData.Config.Hardware.Device `
| ? { $_.GetType().Name -eq 'VirtualSerialPort' } `
| % { $_.DeviceInfo.Label }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.