-----------------------------Code of Script to Pull Information----------------------------
var i,j, vmName;
var contentMessage,logtxtDisk,logtxtNIC,logtxtNetwork;
content = "VM Name,HostName,Cluster,PowerState,RAM,CPU,Core,IP Address,OS \n";
vdiskcontent = "VM Name,vDisk,Path,Size,DataStore \n";
vNetwork = "VM Name,Type,Port group \n";
logtxtHNetwork = "Hostname,vNic,Driver,Address,DevID,PortID,CDP Info \n";
contentMessage = "Hi Team, <br> <br> PFA VMs report. <br> <br> Thanks<br> Manoj";
for ( i in clustername )
{
actionResult = System.getModule("com.vmware.library.vc.cluster").getAllVMsOfCluster(clustername[i]);
for ( j in actionResult)
{
vmName = actionResult[j].name;
var guest = actionResult[j].runtime;
var hostname = guest.host.name;
var cluster = (actionResult[j].runtime.host).parent;
logtext = vmName +
"," + hostname + "," + cluster.name + "," +
actionResult[j].runtime.powerState.value + "," +
actionResult[j].config.hardware.memoryMB + "," +
actionResult[j].config.hardware.numCPU +
"," + actionResult[j].config.hardware.numCoresPerSocket + "," +
actionResult[j].guest.ipAddress + "," +
actionResult[j].guest.guestFullName + "\n";
content = content + logtext ;
//Get Datastores
var datastoresProp = new Properties();
var diskSizes = new Array();
var devices = actionResult[j].config.hardware.device;
var l = 0;
for (var k in devices)
{
if (devices[k] instanceof VcVirtualDisk)
{
diskSizes[l++] = devices[k].capacityInKB / 1048576;
var vmdkSize = devices[k].capacityInKB / 1048576;
var datastore = devices[k].backing.datastore;
var vmdkName = devices[k].deviceInfo.label;
var vmdkFName = devices[k].backing.fileName;
logtxtDisk = vmName + "," + vmdkName + "," + "," + vmdkFName + "," +
vmdkSize + "," + datastore.name + "\n";
vdiskcontent = vdiskcontent +
logtxtDisk;
}
if ( devices[k] instanceof VcVirtualVmxnet3)
{
logtxtNIC = vmName + ",vmxnet3, " + devices[k].backing.deviceName +
"\n";
vNetwork = vNetwork + logtxtNIC;
}
if ( devices[k] instanceof VcVirtualVmxnet2)
{
logtxtNIC = vmName + ",vmxnet2, " + devices[k].backing.deviceName+
"\n";
vNetwork = vNetwork + logtxtNIC;
}
if ( devices[k] instanceof VcVirtualPCNet32)
{
logtxtNIC = vmName + ",PCNet32, " + devices[k].backing.deviceName+
"\n";
vNetwork = vNetwork + logtxtNIC;
}
if ( devices[k] instanceof VcVirtualE1000)
{
logtxtNIC = vmName + ",E1000, " + devices[k].backing.deviceName+ "\n";
vNetwork = vNetwork + logtxtNIC;
}
}
}
}
/*Start - Code to get DataStore and NAA id */
var vdatastoretxt, hostcount, naaid, hname_ds;
var datastore, datastores;
vdatastoretxt = "DataStore,HostCount,HostName,VM Count,URL,Type,MHA,UUID,NAAID \n";
datastores = System.getModule("com.vmware.library.vc.datastore").getAllDatastores();
for each ( datastore in datastores)
{
try{
System.log(datastore.name);
var hosts_ds = datastore.host;
hname_ds = " ";
naaid = " ";
for each (var host_ds in hosts_ds)
{
hname_ds = host_ds.key.name + hname_ds;
}
if (hosts_ds.length != 0)
{
hostname = hosts_ds[0].key;
for each (var mountedVolume in hostname.configManager.storageSystem.fileSystemVolumeInfo.mountInfo)
{
for each( var volumeExtent in mountedVolume.volume.extent)
{
if(mountedVolume.volume.name.match(datastore.name))
{
var volumeMountinfo = mountedVolume.mountinfo;
System.log(volumeExtent.diskName);
naaid = volumeExtent.diskName + naaid;
}
}
}
}
vdatastoretxt = vdatastoretxt +
datastore.name + "," + hosts_ds.length + "," + hname_ds + "," +
datastore.vm.length + "," + datastore.info.url + "," +
datastore.summary.type + "," + datastore.summary.multipleHostAccess
+ "," + datastore.info.vmfs.uuid + "," + naaid + "\n";
}
catch (ex)
{
throw "Error"
}
}
/* End - Datastore & NAA id */
/* Start - Code to Pull Portgroup Information */
var pg_hosts,pg_hostname;
var portgroup,portgroups,vmNics,porttxt;
var promiscuous,ftransmit, macchange;
porttxt = "HostName,Portgroup,VLAN ID,vSwitch,Promiscuous,ForgedTransmits,MacChange,Policy \n";
for ( i in clustername )
{
pg_hosts = System.getModule("com.vmware.library.vc.cluster").getAllHostSystemsOfCluster(clustername[i]);
for each(pg_host in pg_hosts)
{
pg_hostname = pg_host.name;
System.log(pg_hostname);
portgroups = pg_host.configManager.networkSystem.networkInfo.portgroup;
for each (portgroup in portgroups)
{
if(portgroup.spec.policy.security.allowPromiscuous == "TRUE")
{
promiscuous = "True";
}
else
{
promiscuous = "False";
}
if((portgroup.spec.policy.security.forgedTransmits) = "TRUE")
{
ftransmit = "True";
}
else
{
ftransmit = "False";
}
if((portgroup.spec.policy.security.macChanges) = "TRUE")
{
macchng = "True";
}
else
{
macchng = "False";
}
porttxt = porttxt +
pg_hostname + "," + portgroup.spec.name + "," + portgroup.spec.vlanId +
"," + portgroup.spec.vswitchName + "," + promiscuous + "," + ftransmit +
"," + macchng + "," + portgroup.spec.policy.nicTeaming.policy
+ "\n";
System.log(porttxt);
}
}
}
/* End - Code to Pull Portgroup Information */
/* Start - Code to pull Network information of Host */
var txtNetwork = ";";
var nw_hosts,nw_host,pNic,pnicInfos,pnicInfo,nic,network,networks;
for ( i in clustername )
{
nw_hosts = System.getModule("com.vmware.library.vc.cluster").getAllHostSystemsOfCluster(clustername[i]);
for each(nw_host in nw_hosts)
{
pNic = nw_host.configManager.networkSystem.networkInfo.pnic;
pnicInfos = nw_host.configManager.networkSystem.queryNetworkHint();
for each (pnicInfo in pnicInfos)
{
if(pnicInfo.connectedSwitchPort)
{
for each (nic in pNic)
{
if( nic.device == pnicInfo.device)
{
networks = pnicInfo.subnet;
for each ( network in networks)
{
txtNetwork = network.ipSubnet + "(VLAN:" + network.vlanId + ")" +
txtNetwork;
}
logtxtHNetwork = logtxtHNetwork + nw_host.name + "," + pnicInfo.device
+ "," + nic.driver + "," + pnicInfo.connectedSwitchPort.address + ","
+ pnicInfo.connectedSwitchPort.devId + "," +
pnicInfo.connectedSwitchPort.portId + "," + txtNetwork + "\n";
}
}
}
else
{
logtxtHNetwork = logtxtHNetwork + nw_host.name + "," + pnicInfo.device
+ ",No Information,No Information,No Information,No Information,No
Information \n";
}
}
}
}
/* End - Code to pull Network information of Host */
var message = new EmailMessage();
// Override default settings if and only if input parameter is set
if ( smtpHost != null && smtpHost.length > 0 ){
message.smtpHost = smtpHost;
}
if ( smtpPort != null && smtpPort > 0 ){
message.smtpPort = smtpPort;
}
if ( fromName != null && fromName.length > 0){
message.fromName = fromName;
}
if ( fromAddress != null && fromAddress.length > 0){
message.fromAddress = fromAddress;
}
message.toAddress = toAddress;
message.subject = subject;
message.ccAddress = ccAddress;
message.addMimePart(contentMessage,"text/html; charset=UTF-8");
//Create Attachment
var fileAttachment = new MimeAttachment();
fileAttachment.name = "vmsReport.csv";
fileAttachment.content = content;
message.addMimePart(fileAttachment,"application/zip");// charset=UTF-8");
fileAttachment.name = "vDiskReport.csv";
fileAttachment.content = vdiskcontent;
message.addMimePart(fileAttachment,"application/zip");// charset=UTF-8");
fileAttachment.name = "vNetwork.csv";
fileAttachment.content = vNetwork;
message.addMimePart(fileAttachment,"application/zip");// charset=UTF-8");
fileAttachment.name = "vDatastore.csv";
fileAttachment.content = vdatastoretxt;
message.addMimePart(fileAttachment,"application/zip");// charset=UTF-8");
fileAttachment.name = "vPortgroup.csv";
fileAttachment.content = porttxt;
message.addMimePart(fileAttachment,"application/zip");// charset=UTF-8");
fileAttachment.name = "vHostNetwork.csv";
fileAttachment.content = logtxtHNetwork;
message.addMimePart(fileAttachment,"application/zip");// charset=UTF-8");
System.log( "sending mail to host: " +
message.bccAddress + ":" + message.smtpPort + " with user:" +
message.username + ", from:" + message.fromAddress + ", to:" +
message.toAddress );
message.sendMessage();
-----------------------------------------End of Script Code----------------------------------
Limit of Scripts:
1. Scsi bus sharing
2. RDM Info.
You are welcome to modify the script.