Can't you just update the script like this
$allvms = @()
$vmlist = Get-Vm | where {$_.PowerState -eq "PoweredOn"}
ForEach ($vm in $vmlist){
$vmv = $vm | Get-View
$vms = "" | Select Name #, OS
if ($vmv.Config.GuestFullName -match "Windows"){
$vms.Name = $vm.name
$allvms += $vms
}
}
$allvms | Out-File "D:\temp\computers.txt"