実行に約 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)
}
この関数を追加すると、スクリプトの実行時間が 1 時間長くなりますが、これは許容できません。より効率的な方法でこれを行うことは可能ですか? 私が発見したすべての方法は、これの変種です。
また、上記の方法でグローバル変数を使用することは理想的ではないことも承知しています。私はこれをしたくありません。ただし、既存のスクリプトに追加し、そのスタイル/フォーマットを使用しています。