PowerCli script to delete snapshot of vms

Add-PSSnapin Vmware.Vimautomation.Core
# Enter your vCenter and credentials
$VIServer = "name of vCenter"

# Connect to vCenter using the variables above
Connect-VIServer -Server $VIServer

#Get Windows Guest machines from input file
$vmguests = Get-Content "C:\csv-files\input.txt"


#Write new config options to VMs
foreach ($vm in $vmguests){
       
        Get-Snapshot -vm $vm | Remove-Snapshot -Confirm:$false      
        
}

# Disconnect from vCenter
Disconnect-VIServer -Server $VIServer -Confirm:$false

PowerCli script to pull LUN id of datastore of cluster

Add-PSSnapin Vmware.Vimautomation.Core
Connect-VIServer “name of vcenter”
$clusters = Get-Cluster
#$host_Cluster = $cluster | %{ Get-VMHost -Location $_ }
foreach($cluster in $clusters)
{
    $host_Cluster = Get-VMHost -Location $cluster
      
foreach($hostServer in $host_Cluster)
{
$esxcli = Get-EsxCli -VMHost $hostServer.Name
$data = $esxcli.storage.core.path.list()
$naa = $esxcli.storage.vmfs.extent.list()
#$data
#$naa
$report=@()
$naa | %{
$D = $_.DeviceName
$dataStore = $_.VolumeName
$ext = $_.ExtentNumber
        $data | %{
        if($_.Device -eq $D)
        {
           $row = "" | select DName, LUN, datastore, extent, Host, Cluster
            $row.Dname = $D
            $row.LUN = $_.LUN
            $row.datastore = $dataStore
            $row.Extent = $ext
            $row.Host = $hostServer.Name
            $row.Cluster = $cluster
        }
                }
           
$report += $row
}
$report | Export-csv -NoTypeInformation "C:\csv-files\datastore_inventory.cvs" -Append
}
}
Disconnect-VIServer -Server $global:DefaultVIServers -Force

vRealize Orchestrator script for RV tool







-----------------------------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.






SnapShot report of Linux/Windows server using vRealize Orchestrator

This is my first vRealize Orchestrator script to pull the information of snapshots of virtual machine x hours old.










Once you are done with attibutes and input/output parameters, time to write script.

----------------------------------Code to pull snapshot report-------------------------------
ar now = new Date();

var now_minus_hours = new Date();
now_minus_hours.setHours(now.getHours() - max_hours);
var i, logtext, contentMessage ;
System.log("Listing snapshots, older than: "+ now_minus_hours);
var vms = System.getModule("com.vmware.library.vc.vm.os").getAllLinuxVMs() ;
content = "VM Name,Power State,Snapshot Name \n";
var outStr = "";
contentMessage = "Hi Team, <br> <br> PFA snapshot status of Linux servers. <br> <br> Thanks<br> Manoj";
for (i in vms)
{
                var vm = vms[i];
                if(vm.snapshot)
                {
                                var allSnaps = new Array();
                                var allParents;
                                var snapshot = vm.snapshot;
                                var Power = vm.runtime.powerState.value;
                                var rootSnapshotList = snapshot.rootSnapshotList;
                                for each (var rsnap in rootSnapshotList)
                                {
                                getSnapshotsOfVM(rsnap);
                                }
                for each (var snap in allSnaps)
                                {
                                if(snap.createTime < now_minus_hours)
                                                {
                                                                //System.log("VM Name: " + snap.vm.name + " Snapshot Name: " + snap.name + " Snapshot creation time: " + snap.createTime.toLocaleString());
                                                                logtext = snap.vm.name + "," + Power + "," + snap.name + "\n";
                                                                content = content +  logtext ;
                                                }
                                }

     }
}

function getSnapshotsOfVM(snapshotTree)
{
    allSnaps.push(snapshotTree);
    var childTrees = snapshotTree.childSnapshotList;
    if(childTrees != null) {
        for(var index in childTrees) {
            if(childTrees[index] != null) {
                getSnapshotsOfVM(childTrees[index]);
            }
        }
    }
}

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 = "SnapShot_Linux.csv";
fileAttachment.content = content;
message.addMimePart(fileAttachment,"application/json; 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 Code to pull snapshot report-----------------------------

Please replace below line if you want to pull snapshot report of Windows servers.

var vms = System.getModule("com.vmware.library.vc.vm.os").getAllWindowsVMs() ;

Blow is written since long time, you are welcome to comment here.