簡體   English   中英

如何在PowerCLI中快速找到具有串行端口的VM

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM