MoRef filtered get - view

Try to get resutlts an error

PS > Get-View - ViewType property, Parent, MoRef hostsystem-name

Get - view: 2011-02-08 08:46:35 Get-View

Online: 1 character: 14

+ Get-view < < < < ViewType - hostsystem-name of the property, Parent, MoRef

+ CategoryInfo: NotSpecified: (:)) [Get-view], InvalidProperty)

+ FullyQualifiedErrorId: Client20_MoServiceImpl_GetNetInteropEntityView_ViError, VMware.VimAutomation.ViCore.Cmd

ts.Commands.DotNetInterop.GetVIView

I can still run and access.

PS > (Get-View - ViewType hostsystem). MoRef

Is there a way to specify this property which must be returned?

Kind regards

Ryan

The command

Get-view ViewType - hostsystem-name of the Parent property

Returns an array if you have more than one host. This means that you must do something like:

(Get-view ViewType - hostsystem-name of the Parent property) [0]. MoRef

or

$x = get - View - ViewType hostsystem-property name, Parent
$x [0]. MoRef

to retrieve the first host MoRef.

Tags: VMware

Similar Questions

  • PowerCLI: Get - view filters and OR conditions

    Hi all

    I'm little a beginner when it comes to tools from command-line and scripting in general, but I was playing around with PowerCLI and Get - view in particular and I wanted to understand if there was a way to specify multiple conditions and a 'GOLD' between them make in filters.
    Something like...

    Notice-EEG - ViewType VirtualMachine-filter @{name = "ABC123" or snapshot! = "} # does not work

    I took a glance at the documentation and I was unable to find a solution, but maybe a more experienced writer can confirm this?
    Thank you!

    I'm afraid, this is not possible, that all expressions in the filter hash table must comply.

    So, indeed, all expressions are AND-ed together.

    You can make a combination of two Get - sight lines of course.

    But I admit that this solution is not elegant or optimal.

  • Get-view SearchRoot when duplicate. MoRef exists

    I created a script to list the details of the bunch and I thought I would faster by using get - view instead of the Get command for each object.  I came across a problem on line 14.  It seems that I have data centers in different virtual centers with the same. MoRef values.  Not sure how I can script around that.

    Note that this script below is a global script version

    $csvreport = @()
    $ClusterList=@()
    $OutputFile="C:\Temp\looptesting.csv"
    $Date=Get-Date -Format d
    
    
    
    
      foreach ($virtualcenter in $DefaultVIServers) {
    
    
      ForEach ($DC in (Get-View -ViewType  Datacenter -Server $virtualcenter)){
    
      Foreach ($cluster in (Get-View -ViewType ClusterComputeResource -SearchRoot $DC.MoRef)){
    
      $ClusterList = "" |select-object "Collection Date","Virtual Center",DataCenter,Cluster
    
      $ClusterList."Collection Date"=$Date
      $ClusterList."Virtual Center"=$virtualcenter
      $ClusterList.DataCenter=$DC.Name
      $ClusterList.Cluster=$cluster.Name
    
      $csvreport += $ClusterList 
      }
      }
      }
    
    
    
    
    $csvreport |export-csv -NoTypeinformation $OutputFile
    

    Can't you just use the Server parameter on line 14, as you did on line 12?

  • Using filters and Get - view to find virtual machines with a specific guest operating system.

    I have the following code snippet to find all virtual machines with the updated OS to ' Red Hat Enterprise Linux * "prompt. It does not work. If the filter is left out, I find myself with all virtual machines.

    The immediate question is the specs for the game ' Red Hat Enterprise Linux. " Originally from the "Performance Difference between GET - VM and GET-VIEW")

    http://www.batchworks.de/performance-difference-between-get-VM-and-get-view/ ).

    $ClusterFilter = Get-View -ViewType ClusterComputeResource -Property Name -Filter @{“Name” = $ClusterName } | select -ExpandProperty MoRef

    $VirtualMachines = Get-View -ViewType VirtualMachine -Property Config -SearchRoot $ClusterFilter


    The biggest problem for me is to understand for Get-View filter. I was capable of a bit of insight to gleen from the URL below, but I think what Miss me is the reference (Microsoft) for what is happening to the right of the equal sign. What is the correct terminology for this type of query expression / where the syntax is 'left' = 'straight' and keywords such as "-match" are not allowed.

    http://purple-screen.com/?Cat=3

    VMware vSphere 5.1

    http://Wannemacher.us/?p=259

    Regular expressions with Windows PowerShell

    Right in the filter expression is an RegEx expression, please allow for characters before and after the word Linux.

    And the name of the OS is Config.GuestFullName.

    I corrected the entries more early as well.

    $ClusterName = "^MyCluster$"$ClusterFilter = get-view -ViewType ClusterComputeResource -Property Name -Filter @{"Name" = $ClusterName } | select -ExpandProperty MoRefWrite-Host $ClusterFilter
    
    $VirtualMachinesNoFilter   = Get-View -ViewType VirtualMachine -Property Name,Config -SearchRoot $ClusterFilter $VirtualMachinesWithFilter = Get-View -ViewType VirtualMachine -Property Name,Config -SearchRoot $ClusterFilter -Filter @{"Config.GuestFullName"=".*Linux.*"}
    
  • get - view filtering

    The following code returns no resource pool yet I know that there are some

    $myhost = get-view viewtype - hostsystem-property name, Parent - filter @{'Name' = 'Blah'}

    $resourcepools = get-view - viewtype ResourcePool-property name, filter-owner @{'Owner' = $myhost. Parent}

    $resourcepools

    I also tried

    $myhost = get-view viewtype - hostsystem-property name, Parent - filter @{'Name' = 'Blah'}

    $resourcepools = get-view - viewtype ResourcePool-property name, filter-owner @{Owner.Value "= $myhost". ""} Parent.Value}

    $resourcepools

    Nothing helps.


    Anyone know why this is and how to do it?

    Kind regards


    Ryan

    It will work

    $resourcepools = get-view -viewtype ResourcePool -property Name, Owner -filter @{"Owner"=$myhost.Parent.Value}
    
  • Get-View for VMS in subfolders

    Hello community

    I need the list of all the virtual machines in a specific folder, including subfolders.

    In fact, I use the following script

    $vms = Get-Folder "VDI" | Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"}
    
    foreach($line in ($vms | Get-Random -Count 20) ) { 
        if($line.PowerState -eq "PoweredOff") {
            $line | Start-VM -RunAsync | Out-Null
        }
    }
    

    The script runs periodically, and it will take more than 30 seconds to over 2000 virtual machines I want to speed up with Get - view. I've already tried it, but unfortunately it does not list the virtual machines of the subfolders.

    Someone at - it an idea how to solve this problem?

    You can try like this

    $folderName = "VDI".

    $folder = get-View - ViewType property file-name - filter @{'Name' = $folderName} | Select MoRef - ExpandProperty

    Notice-EEG - ViewType VirtualMachine - SearchRoot $folder |

    Select name

  • Folder Get view filter VM


    Hello


    I have a script that get all the VM name and IP address on a specific vCenter and the VM naming convention, and it works like a charm. I would go more deep in the filter setting to be able to search in one specific folder.


    Is it possible to do with get-view?


    Here is my current get-view function:


    Notice-EEG - ViewType VirtualMachine-name of the property, Guest.HostName, Config.Hardware.Device, Guest.IPAddress - filter @{"Runtime.PowerState" ="PoweredOn"; "' the name '=' ^ BGSOFW ';


    Thanks for your help


    Manu

    Try something like this

    $folderName = "MyFolder"$tgtFolder = Get-Folder -Name $folderName
    
    Get-View -ViewType VirtualMachine -Filter @{"Parent"=$tgtFolder.ExtensionData.MoRef.Value} |Select Name
    

    The folder should be the folder where are virtual machines.

    In the case of nested folders, the script requires little additional code.

  • Folder is a virtual computer in the use of Get-View

    All, I run a script to collect information on the virtual machines in the environment, but have not been able to figure out how to get the file to in the virtual machine is.  I know I could use a get - vm | Select name, file etc. but at the time wherever I have add a get - vm statement, I'll add a TON of execution time of the script.

    I currently use it as my get-views command...

    Notice-EEG - ViewType VirtualMachine-Name property, Runtime.Host, Config.GuestFullName, Config.Annotation, Config.Hardware.NumCPU, Config.Hardware.MemoryMB, Guest.Disk, Config.Template, Guest.IpAddress | Sort-Object-property name. %{
    If ($_.) Config.Template - not $true) {}
    $row = "" | Select-Object Name, Notes, MemoryGB, host, CPU, OS, Cluster, IPAddress, DiskSpaceGB, UsedSpaceGB

    ....

    I know I'm just grabbing some properties, but I was not able to find the property that gives the name of the folder.

    To try to find the right one, I did

    $vm = get-View - ViewType VirtualMachine-filter @{"Name" ="VM_Name"}

    Then just walk through the $vm variable. (Property) etc.

    Anyone?

    In the VirtualMachine object, the Parent property contains the MoRef (pointer) to the object of the file.

    In order to

    Select Name,@{N="Folder; E = {Get-view $_.} Parent | Select name - ExpandProperty}}

  • Use get - view to get the host data center

    Hey guys,.

    I'm trying to shoot the host number of name and the version with get-view.

    I got to that, but I also want to get the data center that host belongs to.

    How can I get that advice please, don't have Googling has not helped a lot.

    Thank you

    RJ

    With the ExtensionData property we have access to the object VirtualMachine .

    Most of the managed objects vSphere has a property, called Parent, which points to the object that is connected to our object (the ' mother' in other words).

    The content of the Parent property is a MoRef (pointer). To get the real object, we use the cmdlet Get-view with this MoRef.

    We repeat this process in a while loop until the parent object is an object of data center .

    It's a bit like the structure of the tree in the vSphere Client.

    You start with the ESX (i) server and back up in the tree until you encounter a data center.

  • with Get-VIew-filter

    How can I search a host using its MoRef, code below does not work:

    Get-view viewtype - HostSystem-filter @ {"HostId"="host-139"}

    Luke,

    I was referring to the construction of the ManagedObjectReferen object.

    I wonder why you can not use the MoRef property. Maybe it's a bug.

    Can I use other moref properties, but NOT the property of MoRef

    The following example works:

    $v = get-view - ViewType virtualmachine-filter @{"runtime.host"="" ^ $host-2116 "}

    This wil return all virtual machines from the host-2116. The porperty runtime.host is of type ManagedObjectReference.

  • Get-clusters. Get-view resulting with the argument cannot be null or empty

    Recently, one of my faithful scripts stopped working - all the words of wisdom and advice are welcome.

    SCRIPT:

    $clusters = get-Cluster | Get-opinion

    foreach ($cluster in $clusters)

    {

    $1stESXinCluster = Get-VIObjectByVIView - MORef $cluster. Host [0]

    }

    RESULT:

    The argument cannot be null or empty.

    In: line tank: 5:46

    + $1stESXinCluster = Get-VIObjectByVIView - MORef < < < < $cluster. Host [0]

    It would be possible, one of the pole which is located in $cluster is without a host.

    You can add the conditional operator in the present.

    $clusters = Get-Cluster | get-view
    foreach ($cluster in $clusters)
    {
    if ($cluster.Host[0]-ne $null){
    $1stESXinCluster = Get-VIObjectByVIView -MORef $cluster.Host[0]
         }
    }
    

    Hope this helps

  • Speed by using Get - VM vs Get-View

    Many VI Toolkit script I wrote end up needing to do something like this:

    Get-VM-name "vmname" | Get-View | etc.

    For some reason, I have to repeatedly Get-display to get something of value in the script.   For anyone who is located in a large enough knows that it's quite slow.   My colleague will me and said ' why don't you just jump the Get - VM and use Get - view directly?   You know it's a pretty clever idea, so I do.   I'm blown away at how much difference it is so I'll and the script I use time.

    Using the command Get-VM-name "vmname" | Get-view takes 1 minute and 37 seconds to run.  Ugh.

    Using the command Get-View - ViewType VirtualMachine-filter @{"Name" = "vmname"} takes... Wait what he

    Wait what he

    Wait what he

    5.12 seconds!

    Yes.  I don't do this.  The question I have for the VI Toolkit/Powershell assistants out there is WHY! ???

    The script I used for the test is attached.  Yes, it's not the world the better as its only my 3rd custom wrote the script to this day well I'll take recommendations contained in private messages or something different to make it better, nicer, faster, cooler, more powershell as.

    Hey, Ian,

    You can verify that you are using VI Toolkit 1.0 Update 1 (v.1.0.1). Between 1.0 and 1.0 1 update we have taken measures to improve the speed of Get - VM (limited). So if you're on upgrade-1.0.0 to 1.0.1 will relieve your problem a little bit.

    Basically, the reason why "Get - VM" is significantly slower than 'Get-View - ViewType VirtualMachine' is the virtual computer object is quite large and contains much more data than the view.

    A slow Get - VM is clearly a serious problem because it is by far the most frequently invoked cmdlet. If we look at ways to resolve the problem.

    One of the biggest steps we are taking is delegating the filtering on the server nickname. So, when you call Get - VM "vmname" the server would send a single virtual machine. This optimization is based on a feature which is new to VC 4.0. The bad news is that it will be a while before out us the version that has this optimization.

    Meanwhile, we are looking at ways to reduce the size of the VirtualMachine object by removing some of these objects nested such as VMGuest and virtual devices. The largest obstace of this change is the need for backward compatibility. If it's not completely simple, but I think that we will be able to find a compromise accepbable.

  • Regular Get-view filter expressions

    I have the following code:

    $vms = get-VM-location 'test '.

    for ($i = 0; $i - lt $vms. County; $i++)

    {

    $vmOS = get-View - ViewType 'VirtualMachine' - filter @{"Name" = $vms [$i] .name} - property @("Nom", "Config.GuestFullName") | Select-Object - property name, @{N = "ConfiguredOS"; E={$_. Config.GuestFullName}}

    $vmOS

    }

    $vms contains some virtual machines to a folder called 'test '. I have 2 virtual machines in the folder - 'test' and 'test2 '. When I run the code above, when the 'test' VM is put in the loop, she returned twice. Time for 'test', and 'test2 '. I'm looking for a regular expression that I can use to get the exact name of each virtual computer so that only 1 value is returned by $vmOS in each loop.

    The filter is a regular expression, you can use the indicators of positions (^ and $).

    Something like that

    $vms = get-VM-location 'test '.

    for ($i = 0; $i - lt $vms. County; $i++)

    {

    $vmOS = get-View - ViewType 'VirtualMachine' - filter @{"Name" = "^ $($vms[$i].name)$" ""}-property @("Nom","Config.GuestFullName") |

    Select-Object - property name, @{N = "ConfiguredOS"; E={$_. Config.GuestFullName}}

    $vmOS

    }

  • Get - view ClusterComputeResource vs StoragePod

    The following example of a loop in the cluster/host/vm to PowerCLI LinkedView - a Simple example, I found. The beautiful Hippo

    $VMArray = @)

    $ClusterArray = get-view ViewType - ClusterComputeResource

    $ClusterArray | % {

    $_. UpdateViewData ("$host.name", "Host.VM.Name")

    $ClusterName = $_. Name

    $_. LinkedView.Host | % {

    $HostName = $_. Name

    $_. LinkedView.VM | % {

    $VMName = $_. Name

    $VMArray += new-Object - TypeName PSObject - Prop)

    @{'Clusters' = $ClusterName;

    "Home" = $HostName;

    'Name' = $VMName

    }

    )

    }

    }

    }

    I tried the equivalent code for the storage of cluster/datastore/vm

    $DSVMArray = @)

    $DSClusterArray = get-view ViewType - StoragePod

    $DSClusterArray | % {

    $_. UpdateViewData ("ChildEntity.Name", "ChildEntity.VM.Name")

    $DSClusterName = $_. Name

    $_. LinkedView.ChildEntity | % {

    $DSName = $_. Name

    $_. LinkedView.VM | % {

    $VMName = $_. Name

    $DSVMArray += new-Object - TypeName PSObject-Prop)

    @{'DSCluster' = $DSClusterName;

    'Datastore' = $DSName;

    "VM" = $VMName;

    }

    )

    }

    }

    }

    But this error

    Exception by calling 'UpdateViewData' with '2' or the arguments: "the path specified."

    is not correct. Item "vM" does not exist. »

    Online: 4 char: 5

    +     $_. UpdateViewData ("ChildEntity.Name", "ChildEntity.VM.Name")

    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo: NotSpecified: (:)) [], MethodInvocationException)

    + FullyQualifiedErrorId: ArgumentException

    The data structures are the same for me.  Could someone please explain the error?

    Cannot use UpdateViewData if properties can be null.  In my case I have warehouses of data with no VM so I can not UpdateViewData ("ChildEntity.VM.Name").

    $DSVMArray = @)

    $DSClusterArray = get-view ViewType - StoragePod

    $DSClusterArray | % {

    $DSCluster = $_

    $DSCluster.UpdateViewData ("ChildEntity.Name")

    $DSClusterName = $DSCluster.Name

    If ($DSCluster.LinkedView.ChildEntity.VM.Count - gt 0) {}

    $DSCluster.LinkedView.ChildEntity.UpdateViewData ("VM. Name")

    }

    $DSCluster.LinkedView.ChildEntity | %{

    $DSName = $_. Name

    $_. LinkedView.VM | %{

    $VMName = $_. Name

    $DSVMArray += new-Object - TypeName PSObject-Prop)

    @{'DSCluster' = $DSClusterName;

    'Datastore' = $DSName;

    "VM" = $VMName;

    }

    )

    }

    }

    }

  • Get - VM to Get-View - viewtype VirtualMachine

    We want to replace our Get-VM with Get-View-viewtype VirtualMachine function, because it is a faster method.

    But for some reason, the output is not the same.

    You expect that they return both the same VirtualMachine object.

    Out with Get - VM:

    Name, PowerState, NUM CPUs, MemoryGB

    Out with Get-View - viewtype VirtualMachine:

    Capacity, Config, layout, LAyoutEx, storage,... all the VMware.Vim.VirtualMachine object.

    Our methods:

    $Hosts = get-VMsByLocation-site $Location

    $VMs = @)

    $Hosts | {ForEach}

    (A) $VMs += Get - VM $_

    (B) $VMs += Get-view -ViewType VirtualMachine - filter @{'Name' = $_}

    }

    https://www.VMware.com/support/developer/windowstoolkit/wintk40u1/HTML/get-VM.html

    https://communities.VMware.com/thread/474763

    https://www.VMware.com/support/developer/converter-SDK/conv50_apireference/Vim.virtualmachine.html

    https://pubs.VMware.com/vSphere-51/index.jsp#com.VMware.PowerCLI.cmdletref.doc/virtualmachine.html

    Hello, tendonsie-

    Yes, you are right: If you change the type of object that you are using, and then later call what's going used probably not work with .

    However, another part of the power of Get - view: you have direct access to a representation of the object "full" vSphere - the View .NET VirtualMachine object, in this case.  So, you do no need another call to get the CpuReservationMhz - you can get it directly from the object VirtualMachine who have already recovered you.  An example of include these goods in the output (based on the example I gave first):

    Get-View -ViewType VirtualMachine -Property Name,Runtime.PowerState,Config.Hardware,Config.CpuAllocation.Reservation | Select-Object Name,    @{n="PowerState"; e={$_.Runtime.PowerState}},    @{n="NumCPU"; e={$_.Config.Hardware.NumCPU}},    @{n="MemoryGB"; e={$_.Config.Hardware.MemoryMB / 1KB}},    @{n="CpuReservationMhz"; e={$_.Config.CpuAllocation.Reservation}}
    

    You see the additional calculated property, CpuReservationMhz, here.  Now you don't need even have call the Get-VMResourceConfiguration cmdlet.

    Thus, work comes to discover what are the properties of the View .NET object that you have recovered.  And this work is supported by the vSphere API documentation, a link that is available to VMware vSphere Web Services SDK Documentation.  How is that?

Maybe you are looking for