Get-file provides an account of all virtual machines in the folder structure.

Hi all

Tried a few searches in the community, but impossible to find exactly what I was looking for.  We have a configuration folder structure in vCenter.  We have some companies that we bought over time and we set up a folder, separate them with a top-level folder and folders nested for different types of virtual machine below, something like:

CompanyX

-Mail servers

-Web servers

-DB servers

For the purposes of internal billing, asked me to get a count of all virtual machines for each company.  I can get the count for virtual machines directly in the "CompanyX" folder, but it does not include virtual machines in subfolders.  This is the script I used so far:

Write-Output "VM enumeration for CompanyX VMware environment Total: $((Get-dossier 'CompanyX' |)). "(Get-VM) .count) | out-file "D:\ScriptResults\CompanyX.txt" - append

As I said, that works very well for the virtual machines in the head in the parent folder, but it does not go down to the next layer.  Is there a way to get folder do that?

I am a novice PowerShell/PowerCLI, so forgive me if I'm missing something obvious.

Thank you

Bob

Hi Bob,

I don't know if it was different in previous versions, but in the latest PowerCLI version 4.1 U1 if you

Get-file "CompanyX" | Get - VM

It will retrieve the VM in the top folder and all subfolders. You can easily check this with:

Get-file "CompanyX" | Get - VM | Select-Object - Property Name, folder

If you only want the virtual machine in the top folder you can use:

Get-file "CompanyX" - NoRecursion. Get - VM

The following script will get the VM number for all companies and write the result to a .csv file.

$ExcludeFolders = "Discovered virtual machine","other folder to exclude"
Get-Folder vm | Get-Folder -NoRecursion | `
Where-Object {$ExcludeFolders -notcontains $_.Name } | `
ForEach-Object {
  $Folder = $_
  $Report = "" | Select-Object -Property Company,"Number of VM's"
  $Report.Company = $Folder.Name
  $Report."Number of VM's" = ($Folder | Get-VM | Measure-Object).Count
  $Report
} | Export-Csv -Path CompanyVMsCount.csv -NoTypeInformation -UseCulture 

If there is high records of the page you want to exclude from the list you can add them to the $ExcludeFolders variable in the first line of the script. The second line of the script gets all the 'vm' top of the folders page. The third line filter unwanted records. A few lines create the output objects. And the last line written objects in a .csv file.

I added the Measure-Object cmdlet for the ($Folder |) Get - VM | Measure - Object). Account because otherwise you will get an error if the number is 0 or 1.

Best regards, Robert

Tags: VMware

Similar Questions

  • How to change network name for all virtual machines within the same cluster

    We have recently changed name vswitch to take into account that something significant, in the past vCenter could change the labels of networh for all virtual machines... seems this time help labels are not changed (maybe its got something to do with the update vcenter for 2.5.U3)...

    in any case, someone at - it a powershell script that could find all the virtual machines that are referring to the old label network and then changing again the name... ?

    Enjoy the respponses...

    Thanks in advance

    A few things on this blog could help.

    If you know the names you want to use, you could also just use something like:

    Get-Cluster X | Get-VM | Get-NetworkAdapter | Where { $_.NetworkName -eq "OldNetwork" } | Set-NetworkAdapter -NetworkName "NewNetwork" -confirm:$false
    Get-Cluster X | Get-VM | Get-NetworkAdapter | Where { $_.NetworkName -eq "NewNetwork" } | Set-NetworkAdapter -Connected:$true -confirm:$false
    
  • Make a break all virtual machines in a folder

    Can someone tell me how to pause all virtual machines in a given folder. I use ESX 3.5 update4. Right now I'm playing with the VI toolkit, but if someone knows another way, which is fine too. Thank you.

    I suspect you mean "hang" when you say 'break '.

    This can be done like this

    Get-Folder  | Get-Vm | Suspend-Vm
    
  • vCenter shows all virtual machines and the host is disconnected

    Hello

    I have a two nodes in the cluster ESXi6 U2 (recently updated to 5.5) running on hp dl380p gen8. For some reason all the virtual machines are running on host A (HA and DRS are enabled).  vCenter shows all virtual machines and host A is disconnected. Cannot connect to A host using vSphere client or web client. Cannot vMotion the VMs. Impossible to activate SSH. Connection DCUI works very well. Cannot perform any action VM

    All virtual machines are in place are running at this point. I don't want to restart the virtual machines. Can you help me please?

    Thank you

    AJ

    Frozen screen DCUI came back to life. The active SSH access, killed the running process. The host of running backs.

    See you soon,.

    AJ

  • create the virtual machine of the existing structure

    I received the file of the VM I import into my ESXi 5.5 Vcenter infrastructure.

    I see these files:

    test. NVRAM

    test.VMDK

    test - s001.vmdk

    test - s002.vmdk

    test.vmsd

    test.vmx

    test.vmxf

    VMware.log

    How can I import this virtual machine? I have to create the file (what a name? "It is a necessary specific name?) in my data store where I'm going to move these files?

    After?

    I see these files:

    test.vmx

    What is the source of these files? Like VMware Workstation or vCenter/ESXi?

    If these documents are in vCenter/ESXi, then copy the whole folder to the ESXi 5.5 data store

    Once copied a right-click on the test.vmx file and registry with the default settings.

  • Orchestrator 5.1 REPORT-all the virtual machines in the data center and create a CSV file

    Hello

    What I basically want to do is create a report CSV of all virtual machines in the data center with various information (VMname, domain name FULL, IPaddress, status, data warehouses, tools etc...).  The export list in the client feature is insufficient (especially for any KPI report).

    Problem: (workflow is still under construction so real email send does not not and need to clean the code)

    I am stuck at the part of the creation of a table that can be parsed correctly in the CSV file.  2 ways I've tried will produce a report of single object or combine all of the table into a single string (where I am now).  I think the main problem I have is that I have to create a 2D within my service to push toward the final table that is written to the CSV format.  Basically, I do not understand how to push my variables in a loop of a table.

    Any help or assistance?

    Thank you

    B

    BOOM!

    Added some comments, removed the hardcoded in the csv temp file, deleted path the hardcoded port 25 for SMTP - mail settings should come from the configuration of the MAIL plug-in. And fixed / confirmed that the workflow now includes the attachment for e-mail and ends with success!

  • Gwetting a list of all virtual machines and used space


    I apologize for my very basic question.

    I need to make a file (better if an Excel file) with a list of all virtual machines in a simple 5.x vSphere infrastructure including 2 VMare ESXi 5.x servers and the disk space used (allocated, used) of each virtual computer.

    The easiest way seems to list the virtual machines from the vSphere client and export the list as a .xls file.

    It seems simple, but when I look at the file I see a lot of missing VMs or a large number of missing values for several virtual machines (just the Runts).

    Is this a problem with my vSphere client?

    I tried to create a PowerCli script using the "Get - VM|" Select-object Name"command, but my limited skills will let me extract the value of the used space.»

    Can someone please provide a sample of PowerCli I can just copy and use?

    Is there another way to get the information I need?

    Concerning

    Marius

    .

    Not knowing that if you have configured a cluster or just stand-alone hosts, here is one simple line...

    Get-VMHost-name | get - vm | select name, usedspaceGB

    From there, you can make formatting, get total usage etc.

  • Start all virtual machines

    Hello

    A couple of weeks, I installed Vmware server 2.0 on Ubuntu 8.04 server, I must say that it works perfectly, I encounter any problem yet. At this point, I am trying to automate some processes such as backup and start and stop virtual machines.

    The thing is for the moment we have 4 virtual machines and im starting those manually now (1 by 1) using the vmrun command, now my question is, is anyway to start all virtual machines at the same time? I tried many things and I can't make it work, some help would be really appreciated.

    Thanks in advance and best wishes,

    Stone.

    OK - enter you requirement exactly, in my defense.

    I posted earlier, a shell script to the server 2.0 beta forum, which found all the *.vmx scripts, and then made a "suspend" their needs so very easy to change it to do a 'departure' instead.

    See the 'vmware - suspend' script in this post:

    http://communities.VMware.com/message/1036371

    Post edited by: guyrleech

  • Shared behavior of the virtual machine on the host system shutdown

    Shared behavior of the virtual machine on the host system shutdown

    Greetings,

    I installed WIn7 - 64 bit host system, WS8 and there seems to be a very nice and high quality configuration. I am very happy.

    There is a shared VM and it's a Setup 64-bit Ubuntu 10.04 Server functioning as a base configuration LAMP for some basic web applications, etc..

    I was unable to find the settings to control the behavior of the VM shared with the system that hosts stop. When I stop the host system, I believe that the common VM is off tension or stop gracefully, I don't know who. What I like best is for the shared VM will not apply instead. The reason is that starting the virtual machine is a bit complicated and requires manual intervention. Whereas, if it is stopped since a State suspended without manual intervention is necessary.

    I found that if there is a loss of power, I can hibernate the host system in time before my battery runs out. Resuming the host hibernate system works correctly and the VM shared within WS8 is back to its previous functional State.

    It would be nice and helpful being able to stop or restart the host system and know that the shared virtual machine has been automatically suspended. So now I have to log on to the user account from the host system and open WS8 and manually suspend the virtual machine before you stop or restart the host system.

    Is there a way to have the shared VM automatically suspended when the host system is stop?

    Thank you for your time and attention.

    You can configure the stop action by editing the following file:

    %ProgramData%\VMware\hostd\vmAutoStart.XML

    If you want to configure the action stop for all virtual machines, find the section of under the section. Change it on hold

    If you want to change the action stop for only this one machine virtual, you must first configure this shared VM to be started automatically (in WS, right-click on the item 'VMs shared' in the library, select "manage computers virtual auto-start '). After doing this, manually change the vmAutoStart.xml. Find the entry for the virtual machine in the section (if you have more than one computer configured to autostart virtual, it will take some more digging to understand what VM to change). Change the entry for this virtual machine to hang.

    Save the file. Reboot the host (not auto-start power actions are only made when the host is restarted). Now when stop you the host, WS should suspend the VM (s)

    As always, manually edit the configuration files is not considered supported its use. Save the file before you edit. Adjust at your own risk.

  • PowerCLI to deploy virtual machines at the same time

    Can I deploy multiple VMs usng PowerCLI, but they spread out in the order and with an error.  It seems almost easier to deploy them manually so that they are created at the same time and not one after the other.  I also want the static IP but don't know how.

    For now, I use a card file customization that indicates static IP and guest for this.  But he never does, he deploys the vms system then throws an error stating VC ' a specified parameter was not correct.  nicsettings: adatpter:ip. "I want to increment IP addresses on virtual computers deploy.

    This is my Basic .ps1 file content

    New-vm - vmhost vm04a.domain.com - name w2k8sp2s64qa14-vm-model Template_w2k8sp2s64qa - Datastore vm04a_storage OSCustomizationspec - w2k8sp2s64

    Can someone help me?

    1 assign static IP addresses

    2 deploy all virtual machines at the same time

    ...

    The parameter - RunAsync right on the New - VM cmdlet.

    She will continue with the line after the New - VM without delay that the cmdlet New - VM to finish.

  • Put virtual machines inside the VMkernel port group

    Hello

    Network for administrators of VMware SIAS layout:

    "You can not put VMs within that group of port because it is made especially for a VMkernel port."

    However, I use ESXi 5.5 and is able to put normal interface of VM inside the vmk port group. (I only created 1 vmk port group so all virtual machines in the same group with the vmkernel interface)

    May I know if this is a new feature, or something is wrong?

    Thank you!

    This may be possible with distributed switches not with standard switches.

  • Method to move the virtual machines in the data store temporary so I can rebuild pool recommended NFS

    Our current data store is a mounting NFS on Nexenta (zfs), which has a pool, I need to rebuild (migration of raidz2 to mirror striped for performance). Initially, I was relying on the judgment of all virtual machines, create a new pool, copy (cp - r) of the Nexenta console all virtual machines to the new pool, recreating the pool mirror and then copy (cp - r) all the data back.

    I have seen several discussions on this topic and seems like the simplest method would be to use the feature to "Migrate" so that the virtual machines are not fragmented. However in some of my pre-test when I copy a virtual machine between the basins of the Nexenta console it appears (from the data store Explorer) to initially create the vmdk provisioned and then once completed it copy looks too thin.

    I hope that I can simply copy the Nexenta console, using the option "Migrate" in vCenter on each of my 40 MV looks like it would be * quite * tedious compared to the simple issuance of an order of 'cp - r' and leave all the copies of VMs (1.5 to) during the night and then adding them to each host.

    Does anyone have experience with this? Or maybe a way to generate scripts easily (?) the option "migrate" in vCenter?

    Thank you all!

    You can select multiple VMs in vCenter regularly using CTRL + click or shift + click and both migrate them as long as they have the same storage destination.  You can also schedule it as a task.    Add manually each computer virtual back in hand is not less painful than migrating individually, anyway.

  • I'm looking for a Script that can list all virtual machines with type of NIC E1000 via the output of the CSV file.

    Hi gurrus and LucD

    I'm looking for a Script that can list all virtual machines with type of NIC E1000 via the output of the CSV file.

    The script should search for information in a multiple Vcenter servers and multiple clusters and list all the VMs name, status (two powers on or off) with type card NETWORK Type E1000 only no other.

    Concerning

    Nauman

    Try like this

    $report = @)

    {foreach ($cluster Get-cluster)

    foreach ($rp in Get-ResourcePool-location $cluster) {}

    foreach ($vm in (Get-VM-location the $rp |)) Where {Get-NetworkAdapter - VM $_______ | where {$_.}} Type - eq "e1000"}})) {}

    $report += $vm. Select @{N = "VM"; E={$_. Name}},

    @{N = 'vCenter'; E={$_. Uid.Split('@') [1]. "Split(':') [0]}},"

    @{N = "Cluster"; E = {$cluster. Name}},

    @{N = "ResourcePool"; E = {$rp. Name}}

    }

    }

    }

    $report | Export Csv C:\temp\report.csv - NoTypeInformation - UseCulture

  • Get use of the resources of all virtual machines in a cluster

    Hello

    I have developed a measure of capacity management report that collects all the use of the resources of the virtual machines in a datacenter. The function that collects it looks like this:

    def hostMemoryConsumed =]

    def memoryConsumed = 0.0f

    def memoryGranted = 0.0f

    VMs. each() {}

    VM->

    try {}

    memoryConsumed += vm.host.memory.consumed.current.average / 1024.0f<----- how="" to="" do="" this="" to="" get="" from="">

    memoryGranted += vm.host.memory.capacity.current.average / 1024.0f

    }

    {} catch (NullPointerException e)

    }

    VMS is a function of type parameter VMS VMW

    The works above for virtual machines in the data center, but I need it to be after cluster. I can find a cluster of virtual machines, but I'm having trouble with referring to specific values for example consumed memory and capacity.

    If I change the type parameter: VMW Cluster how the metric reference would look like (see the try {})?

    I don't think that a query will help me.

    Thanks in advance

    Erik Alm

    If you want to do for a cluster, you can just get the list of virtual machines in a cluster of first and passing in your script.  If you have a function for a VMWCluster you can add a parameter for "vmwCluster" that is underneath and it should give you a table (topologyObjects) that has all the virtual machines in the cluster.

    QS = server.get ("QueryService") / / query Service

    tquery = qs.createStatement("!) (' VMWVirtualMachine where esxServer.parent.name = "+" ' "+ vmwCluster +" "" ") .setQueryTopologyObjects (true);

    topologyObjects = qs.executeStatement (tquery) .getTopologyObjects)

  • Is no vmdk file, but the script says, all virtual machines backed up Ok!

    Hello everyone;

    Please excuse any lack of details because this is the first time that I write. I've scoured internet for days now trying to find no matter how much detail that could help me solve the problem. I'm new in the world of script ESXi and ghettoVCB.

    My intention is to run several tasks on a schedule. Each type of backup (quarterly, monthly, weekly, daily and multiple) runs at a specific time. The planning section works very well.

    I'm hoping to solve this urgent backup, I should be able to solve reboot.

    Here is the command I use:

    /vmfs/volumes/datastore1/ghettoVCB.sh w /tmp/ghettoVCB-work.multiple f/vmfs/volumes/datastore1/vmlist-Multiple g/vmfs/volumes/datastore1/vmconfig-DataSet1-multiple-l /vmfs/volumes/datastore1/ghettoVCB_logs/ghettoVCB.Multiple_Backup.log

    vmconfig-DataSet1-multiple contains:

    # Multiple backups - rotation County 6

    #

    VM_BACKUP_VOLUME = / vmfs/volumes/Vault2-DataSet1/URANUS/Multiple

    DISK_BACKUP_FORMAT = thin

    VM_BACKUP_ROTATION_COUNT = 6

    POWER_VM_DOWN_BEFORE_BACKUP = 0

    ENABLE_HARD_POWER_OFF = 0

    ITER_TO_WAIT_SHUTDOWN = 4

    POWER_DOWN_TIMEOUT = 5

    SNAPSHOT_TIMEOUT = 15

    ENABLE_COMPRESSION = 0

    VM_SNAPSHOT_MEMORY = 0

    VM_SNAPSHOT_QUIESCE = 0

    VMDK_FILES_TO_BACKUP =

    Vmlist-multiple contains 1 server is listed:

    # List all virtual machines that are backed up several times a day

    HEAT

    The log indicates that the backup was successful - but it has not been the case. Backup size should be approximately 8 GB. However, when you look at the output folder, only the following files are here:


    HEAT.vmx

    STATUS.ok

    Question is now - where are the vmdk files that should be present?

    Output (-d debug) can be found here: http://pastebin.com/hMGphTL3

    So, here is what I observed:

    When you run the script, the snapshot only takes a few seconds to create and delete then. I'm seeing happens on the list of the tasks of vSphere Rencent (screenshot attached).

    If I create a snapshot manually - it will take much more time to create and delete a snapshot. The difference here is 6 minutes, and 4 seconds using the script create a snapshot manually.

    So my presumption is that he is not actually create the snapshot, although vSphere said it is being created. So why is it the case?

    Help, please.

    ADDENDUM:

    If I run the following:

    ./ghettoVCB.sh m HEAT

    The backup is successful.

    Your said he clearly did not config file to back up all files hard.

    VMDK_FILES_TO_BACKUP =

    I expect to see something like this if you want all the hard files

    VMDK_FILES_TO_BACKUP = "all".

Maybe you are looking for