Você está pegando um contador de desempenho que retorna os dados do processo para cada processo individual, além de todos os processos combinados em um contador (_Total). Você precisará filtrar pelo nome do processo para obter os dados de desempenho desse processo específico.
O motivo pelo qual você não tem dados é porque o comando Get-WMIObject
retorna uma matriz de objetos ManagementBaseObject, cada um contendo o atributo IOWriteOperationsPersec
, mas a matriz não contém esse atributo em si. Você acaba com uma matriz $arrayDIO
vazia e, portanto, sem dados de desempenho para Measure-Object
.
Veja o código atualizado na linha 5 do seu exemplo:
$arrayDIO += % { (Get-WmiObject Win32_PerfFormattedData_PerfProc_Process | Where-Object { $_.Name -eq "_Total"}).IOWriteOperationsPersec }
Onde coloquei "_Total"
, você pode substituir isso pelo nome real do processo para o qual deseja obter os dados do contador ou simplesmente deixá-lo como está para recuperar o total de todos os processos.
EDITAR:
Para fazer isso funcionar no Physical Disk Writes, você precisa usar um contador de desempenho diferente ( link ).
Experimente:
$arrayDIO += % { (Get-WmiObject Win32_PerfRawData_PerfDisk_PhysicalDisk | Where-Object { $_.Name -like "0*"}).DiskWriteBytesPersec /1024 }
/1024
converte o contador de Bytes para MB e "0*"
seleciona o ID do disco. Se você tiver vários discos, precisará alterar isso para o ID do disco correto.