Inventory of VC using powercli

Hi all

I'm looking for a script using powercli for several stocks of VCenterservers something like Vcenter name, host name, name of vm, the VM OS. Notes VM, information data store and vm tools release in excel or csv format

Note: for multiple Vcenters

You can check the PowerCLI version you are running? You can do it with the Get-PowerCLIVersion cmdlet. The latest version is: "VMware vSphere PowerCLI 5.1 Release 2 build 1012425. If you are using an earlier version, then please install the latest version. You can download this version of http://www.vmware.com/go/powercli.

The

Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Scope User -Confirm:$false

command should work in the latest version of PowerCLI.

Certificate warnings can be removed with the following command:

Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Scope User -Confirm:$false

To make the script more quickly, I did a new version using the cmdlet Get-View . This new version is about three times faster than the former.

& { foreach ($vCenterServer in $DefaultVIServers)
    {
      Get-View -Server $vCenterServer -ViewType VirtualMachine -Filter @{"Config.Template"="False"} -Property Name,
        Runtime.Host,
        Guest.GuestFullName,
        Config.Annotation,
        Datastore,
        Config.Tools.ToolsVersion |
      Select-Object -Property @{N="vCenter";E={$vCenterServer.Name}},
        @{N="VMHost";E={(Get-View -Id $_.Runtime.Host -Property Name).Name}},
        @{N="VM";E={$_.Name}},
        @{N="Guest OS";E={$_.Guest.GuestFullName}},
        @{N="Notes";E={$_.Config.Annotation}},
        @{N="Datastores";E={[string]::Join(',',(Get-View -Id $_.Datastore).Name)}},
        @{N="VMware Tools version";E={$_.Config.Tools.ToolsVersion}}
    }
  } |
Export-Csv -Path VMsInfo.csv -NoTypeInformation -UseCulture

Tags: VMware

Similar Questions

  • Browse data using PowerCLI warehouses

    We have a large installation of VMware 5.0 in several data centers, clusters and hosts.  If we remove a VM from the inventory without noticing the datastore he resided on and the need to add it to the inventory, you must go through each data store and browse through each one of them.

    Is there an easier way to search for a virtual machine using PowerCLI or another method?

    Hello, AliSarreshteh-

    Yes, nearby.  Like writing your piece of code get all files with "DES084" at the end of the file name.  Since you want to find all files with "DES084" anywhere in the name, I guess (not only at the end of the file name), you must add an another wildcard to the value of the - include parameter in the statement "dir".  As:

    ...## search for everything that has "DES084" in the namedir -Recurse -Path vmstores:\ -Include *DES084* | select Name,DatastoreFullPath,LastWriteTime | Export-Csv -NoTypeInformation -UseCulture -Path D:\MyVMDKInfo.csv
    

    What to do better for you?

  • PowerCLI: Deploying VM problem of model using PowerCLI

    Hi all


    I'm trying to deploy [clone] virtual machines from a template that is located in a NFS using PowerCLI script.

    First the script will add the NFS to the ESX host. Since NFS added, it will save the file .vmtx to the inventory. Then, the model, it will deploy as many virtual machines as specified in the XML file.
    But after adding the NFS, when the script tries to enumerate on the 'data warehouses' available, the added NFS shows for some hosts. So in turn, the le script script fails.

    I am running PoweCLI 5.0 and host is ESXi 5.0

    The script used is

    function Reg_Template
    {
    Param ($hsname, $dsname, $DSPath, $TMPNAME)
    $strMyHostName = $hsname
    $dsBrowser = get-View (Get-View (Get-VMHost-name $hsname) USER.USER). DatastoreBrowser
    $dcname = get-datacenter - VMHost $hsname
    $folder = get-View (Get-data center-name $dcname |) Get - Folder - name "vm") USER.USER
    foreach ($dsImpl to $dsBrowser.Datastore)
    {
    $ds = get-views $dsImpl
    if($DS.) Summary.Name - not $dsname) {continue}
    $strMyTemplateDatastorePath = '[' + $ds. Summary.Name + "]" + "" + $dspath
    # get the View .NET object for the destination folder
    $viewDestinationFolder = get-view ViewType - file-name of the property - filter @{'Name' = $folder.name}
    (# save the model third param $true means to register as a model)
    $taskMoRef = $viewDestinationFolder.RegisterVM_Task ($strMyTemplateDatastorePath, $tmpname, $true $null,')
    (Get-view ViewType-HostSystem property name - filter @{"Name" = $strMyHostName}). MoRef)
    $task = get-views $taskMoRef
    While ($task.info.state - eq "running" - or $task.info.state - eq "on hold")
    {
    $task. UpdateViewData ("Info.State")
    }
    If ($task.Info.State - eq "success") {break}
    on the other
    {
    Write-Host $task.Info.State
    recorder $fh1, 1, "Failure adding" $tmpname "to" $hsname
    }
    }

    Can someone give cela seconds and check whats up.

    Thanks in advance.

    Can you try to add after you create the data store based NFS?

    Get-VMHostStorage - RescanVmfs

    On all your servers ESX (i)

  • Rename (change display name) VM using PowerCLI

    Facing some difficulties to find how to rename a command line PowerCLI virtual computer.

    Tried to use the instructions of supplier of the inventory of the "vSphere PowerCLI Administration Guide" (p.24), but it doesn't seem to find the virtual machine.

    I can see him when registering the contents of a directory, but when executing 'ren VM1 VM2' get the following error (in fact, I get the same behavior when trying to delete or do anything else):

    x:\Datacenter\vm\folder > ls

    Name                           Type                 Id

    -


    -


    --

    VM1 VirtualMachine VirtualMachi...

    x:\Datacenter\vm\folder > ren vm1 vm2

    Rename-Item: cannot rename because "vm1" question does not exist.

    Online: 1 character: 4

    + ren < < < < vm1 vm1

    x:\RDC\vm\Dev_Test > del vm1

    Remove-Item: can not find the path "x:\Datacenter\vm\folder\vm1" because it does not exist.

    Online: 1 character: 4

    + del < < < < vm1

    Thank you!

    To modify a virtual machine name:

    Get - vm "vswitch test | set-vm-name "vSwitch_test" - confirm: $false

    -KjB

  • Using PowerCLI 5.5 instead of 5.0

    CPO 3.1

    PowerCLI 5.5

    CPO seems to use PowerCLI 5.0 by default and cannot be changed I would say.

    I'm working on automation for VDS (virtual switches distributed) and the built in VMware adapter is somewhat limited in this Department as I was trying to use PowerCLI, but even basic commands in 5.5, such as Get-VDSwitch are "not recognized as cmdlets' in my process of CPO where the same functions in my console PowerCLI command I use for testing.

    So am I correct my observation that CPO by default even when 5.0 5.5 PowerCLI is installed? Is there a way to change this? Is there a place to download an upgraded version of the adapter for VMware?

    Lots of error: the PowerCLI script execution succeeded, but returned the following errors:
    The term 'Get-VDSwitch' is not recognized as the name of a cmdlet, function, script file, or an executable program. Check the spelling of the name, or if a path has been included, make sure the path is correct, and then try again.

    5.5 PowerCLI console load this snap-in to start the console.  This new component snap (comes with PowerCLI 5.5) did not exist when the activity was written.  Thus, it is not responsible for activity.  Maybe we can improve the activity in order to allow users to specify plug-in extra so that it loads. :)

  • Using PowerCLI to recover the capacity of volume comments data

    I am using PowerCLI to declare on the volume letter and free space associated with a guest computer.  I am currently addressing this problem through the extensiondata of the VM guest and then placing the properties I want in a PSObject.

    The question that I am running is that numeric values keep coming up as zero when it is inside the loop for, although they correctly resolve by themselves.  One thing I found interesting was these two upcoming properties like "System.Nullable [long"] when executing GetType(), but I don't know if that is related to the question.

    The script is below, and I changed the font color on the problem section.  I'd appreciate any help.

    # Pre - performance Variables

    $USCulture = New-Object - TypeName System.Globalization.CultureInfo - ArgumentList "en - us".

    $USCulture.NumberFormat.PercentDecimalDigits = 2

    $USCulture.NumberFormat.NumberDecimalDigits = 2

    Guest computers #Get

    [table] $vmguests = $vmcluster | Get - VM

    foreach ($vmguest to $vmguests)

    {

    $vmguestinfo = new-Object - TypeName System.Management.Automation.PSObject

    $vmguestinfo | Add-Member - MemberType NoteProperty-Name "Hostname" - value $vmguest.extensiondata.guest.Hostname

    $vmguestinfo | Add-Member - MemberType NoteProperty-Name "GuestState"-$vmguest.extensiondata.guest.GuestState value

    $vmguestinfo | Add-Member - MemberType NoteProperty-Name 'GuestFullName'-$vmguest.extensiondata.guest.GuestFullName value

    $vmguesthdds = $vmguest. ExtensionData.Guest.Disk

    for ($i = 0; $i - lt $vmguesthdds. Length; $i++)

    {

    $vmguestinfo | Add-Member - MemberType NoteProperty-Name ' DiskPath$ I '-$vmguesthdds [$i] value. DiskPath

    $vmguestinfo | Add-Member - MemberType ScriptProperty-Name ' CapacityGB$ I "-value {($vmguesthdds [$i]. Capacity). ToString ("N", $USCulture)}

    $vmguestinfo | Add-Member - MemberType ScriptProperty-Name ' UsedSpaceGB$ I "-value {[System.Decimal]: Subtract ($vmguesthdds [$i].} Capacity, $vmguesthdds [$i]. FreeSpace). ToString ("N", $USCulture)}

    $vmguestinfo | Add-Member - MemberType ScriptProperty-Name ' FreeSpacePercent$ I "-value {[System.Decimal]: Divide ($vmguesthdds [$i].} FreeSpace), ($vmguesthdds [$i]. Capacity). ToString ("P", $USCulture)}

    }

    [table] $vmguestresults += $vmguestinfo

    }

    Thank you

    Yes, he had a few typos in the code.

    I corrected which, in the code and the attachment.

    Try this one.

    I'm afraid that I can't achieve this GitHub repository.

    A search on your GitHub account does not return either

  • check if there is a service on a vmguest using powercli

    Is there a way I can check if there is a service on a vmguest, using powercli?

    I found several ways to do it using powershell commands, but I want to know if I can do it using powercli.

    Thank you

    If you have installed on the virtual machines VMware tools, you can use the Invoke-VMScript cmdlet to run a script PowerShell inside the guest OS.

    $vm = get-VM-name MyVM

    $cmd = "get-Service WinRM name.

    Invoke-VMScript - VM $vm - $cmd ScriptText

    According to the account under which you run the script, you may need to use the GuestCredential parameter

  • Identify DIMM memory installed using PowerCLI

    Hi guys,.

    Does anyone know how identify the DIMM memory installed using PowerCLI?

    With the help of smboisDump, I get the following

    MEMORY: 25 #.

    Geographical area: "DIMM_A1.

    Bank: "CPU 1 CHANNEL 0 DIMM 1.

    Manufacturer: '0xCE00 '.

    Series: "35F3A656."

    Part number: "M393B1K70DH0-YH9".

    Matrix memory: #23

    Form factor: 0 x 09 (DIMM)

    Type: 0 x 18 (DDR3)

    Detail of type: 0 x 2000 (registered)

    Data width: 64-bit (bit ECC + 8)

    Size: 8 GB

    Speed: 1333 MHz

    I would like to be able to get this help PowerCLI, in particular the following information will be of interest

    • Location
    • Part number
    • Type
    • Size
    • Speed


    I need to perform upgrades memory for 50 5.5 ESXi hosts and prefer if I didn't have to read all the smboisDump files and manually copy and paste the information in Excel.

    I have looked at using get-esxcli and get-view but, do not know the correct attributes to select.


    Thank you


    OK, I seem to have bypassed the error.

    Although the CIM server on host Service showed the execution, I have restarted using the following

    CIMService = Get-VMHostService - VMHost $item | Where {$_.} Label - match "CIM Server"}

    Restart VMHostService - $CIMService HostService - confirm: $false


    After that, the previous code worked

    I found the following handy KB VMware http://kb.vmware.com/kb/1025757

    Another good blog for ESX material followed by using PowerShell is physical ESX followed with PowerShell - VMware PowerCLI Blog - Blogs from VMware

    and

    for the CIM of information https://www.vmware.com/support/developer/cim-sdk/smash/u3/ga/apirefdoc/

  • Get a user/group, details of role using Powercli

    Hi all

    I wrote the script to extract the user role by using Powercli below information and got the details.

    $Excel = new-Object - ComObject Excel.Application

    $Excel.visible = $True

    $Excel = $Excel.Workbooks.Add)

    $Sheet = $Excel.Worksheets.Item (1)

    $Sheet.Activate () | Out-Null

    $Sheet.Name = 'vCenter roles. "

    $Sheet.Cells.Item (1,1) = 'name '.

    $Sheet.Cells.Item (1,2) = 'Role '.

    $Sheet.Cells.Item (1,3) = "entity".

    $Sheet.Cells.Item (1.4) = 'entity Type.

    $Sheet.Cells.Item (1.5) = 'vCenter.

    $intRow = 2

    $WorkBook = $Sheet.UsedRange

    $WorkBook.Interior.ColorIndex = 19

    $WorkBook.Font.ColorIndex = 11

    $WorkBook.Font.Bold = $True

    $gps = get-vipermission

    {foreach ($gp to $gps)

    $vc = $gp.uid.split(':@') [1]

    $Sheet.Cells.Item ($intRow, 1) = $gp.principal

    $Sheet.Cells.Item ($intRow, 2) = $gp. Role

    $Sheet.Cells.Item ($intRow, 3) = $gp.entity.Name

    $Sheet.Cells.Item ($intRow, 4) = $gp.entityid.split('-') [0]

    $Sheet.Cells.Item ($intRow, 5) = $vc

    $intRow = $intRow + 1

    }

    $WorkBook.EntireColumn.AutoFit)

    In addition, I am trying to expand the list of privileges using the script below.

    $gvips = get-vipermission | Role of group | Select name

    {foreach ($gvip to $gvips)

    Get-ferrule-name $gvip.name | Select Name, PrivilegeList

    }

    I can find out the name and the list of privileges, but not completely due to the long list of Privlieges for certain roles. I'm out like {xxx.xxxxxxxxxxxxxxxx...}

    As it then not be able to see full privileges.

    If single role that I want to see, then I can run the command get-ferrule-name admin | Select - expandproperty PrivilegeList

    Above command will list the perfect performance. But this command cannot be used for loop with the parameter 'Name '.

    Can anyone suggest me how to get result with all the details.

    Is it possible I can get 2 out of Scripts in a spreadsheet or HTML with SameFormat file.

    Thanks in advance.

    Try like this

    $reportName = "C:\Report.xlsx".

    Get-VIPermission |

    Select Principal,Role,@{n='Entity'; E={$_. Type of Entity.Name}},@{N='Entity'; E={$_. "EntityId.Split('-') [0]}}, @{N = 'vCenter';" E={$_. {{Uid.Split (' @: ') [1]}} |

    Export-Xlsx-path $reportName - WorksheetName permissions

    Get-ferrule.

    Select Name,@{N='PrivilegeList'; E = {[string]: join (",", $_.)} PrivilegeList)}} |

    Export-Xlsx-path $reportName - AppendWorksheet - WorksheetName roles - end SheetPosition

  • Using PowerCLI update CMDB

    I need a guide on how to use PowerCLI to update my CMDB.  For example:

    -J' I create a Virtual Machine in vCenter

    CMDB - one yet knows about this

    -J' have the VMname, IP address, OS vCenter with powerCLI type (this part is easy)

    Then I go and use the same script to hit the API of a commonly used CMDB and update the CMDB.

    Is there a guide for general how to do this or a script example of someone who did it?

    Thank you!

    For example, I use a simple real method:

    Every night a script is on demand making it an export of the vCenters with relevant information, CPU, memory, StorageSpace, etc. VMname.

    It is exported to a CSV file to a shared location.

    Every night he runs a CMDB solution, importing the CSV file and editing the right values. I don't know the name of solutions. Try to understand how you can modify / add CMDB items in your first CMDB software, from there you can begin to build your script to get the relevant information in the right format so your CMDB can add it.

  • VCSA device using PowerCli Configuration (or any other api?)

    Hello

    I was able to deploy aircraft to vcenter server 5.5 using powerCLI.

    Now how to configure it. Here I speak not of the vcsa configuration and NOT vcenter configuration - I hope it makes sense.

    Is there a powercli cmd-left for me to do or should I hit him all vcsa api?

    Please notify.

    Thank you

    RJ

    Hey Luke,

    I scripted it myself and it works!

    AUTOMATE THE DEPLOYMENT OF VCENTER SERVER APPLIANCE. RJ approve this Message!

    And also on my github at rjapproves/VMware - VCSA5.5 - Automation · GitHub

    Thank you

    RJ

  • Migration of vm to another folder using powercli

    Hi guys,.

    I'm migrating some hosts between 2 different virtual centers and will have all the entrants of the virtual machine on the new virtual Center placed by default in the folder "Discovered virtual machine."  I'm trying to use powercli to move the virtual machine linux to a specific folder and windows of the virtual machine to a different folder.  However, I was unable to do so and was hoping that someone here can help.  I am new to using powercli.  Here is what I tried:

    Get-Datacenter "XXX" | Get folder "Discovered virtual machine | Get - vm | Where-Object {$_.} PowerState - eq "Receptor"} | Get-vmguest | Where-Object {$_.} {OSFullName-like "* Linux *"} | Move-VM-Destination 'Linux '.

    Looks like that move-vm does not like the input it receives from get-vmguest.  However, it is as the input to get - vm, but I can't seem to get a list of virtual machines linux just by using the get - vm command.  Any help would be appreciated.

    Thank you

    -Simran

    Get-Datacenter "XXX" | Get folder "Discovered virtual machine | Get - vm | Where-Object {$_.} PowerState - eq "Receptor" - and $_. {ExtensionData.Config.GuestFullName - like ' * Linux * "} | Move-VM-Destination 'Linux '.

  • Determine the use of vCPU using PowerCLI

    Is there a way to determine how many vCPUs uses makes it a virtual machine using PowerCLI?  For example, suppose you try to size just your virtual machines with powerCLI.  If the virtual machine uses several threads, it can use the multiple vCPUs.  If it is mono-thread, it can only use one vCPU even if she has a high workload.  You can determine what virtual machines have multiple vCPUs but use less than they are allocated?

    As much as I know there is no meter that indicates if a core is used or not.

    What you could do, is the use of the CPU, and then check if the assigned processors are required.

    For example, suppose that the average CPU usage is 25%, and the maximum is 50%.

    If this VM has 4 processors assigned, you may deduct 2 CPUs would be sufficient.

    But this isn't an accurate calculation.

    Once you lower the processors assigned to the virtual machine, you will need to see if there's an obvious increase of the ready time.

  • Way to the commands per second using PowerCLI

    You can use powerCLI for average orders per second of a virtual machine on a historical period in the same way, as you can with cpu.usagemhz.average?

    Just to clarify:

    Does

    datastore.numberreadaveraged.Average

    give me information on the entire data store connected to the virtual machine? Or is information specific to just the VM I comment on?

    (In this case, I'm eager to get all the IOPs for all all of the virtual disks connected to a specific virtual machine)

    It gives you the IOPS / s specific to entire virtual machine and not the data store.

    Also - I'm the zeros for my data when I launch the present.  I see in vSphere client commands per second only to the data in real time, not for the last day, week or year.  Is it because of my level settings statistics?

    Yes, vCenter 5.0 and place unfortunately don't collect statistics of e/s long term on a per-VM level more.

    However, you can still add these values to return to lower levels of statistics as described in this article:

    http://alpacapowered.WordPress.com/2012/12/17/control-vCenter-performance-counter-collection-and-get-back-VM-IOPS-statistics/

  • The list of DNS suffixes customized using PowerCLI

    If I have 4 custom DNS suffixes configured on my ESXi hosts, how can I list using powerCLI?

    Hello

    Try this:

    Get-VMhost [ESX] | Get-VMHostNetwork

    or

    Get-VMhost [ESX] | Get-VMHostNetwork |  Select SearchDomain


    Kind regards

    Julien

Maybe you are looking for