Automation

 View Only
  • 1.  Collecting VM information for Migration

    Posted Apr 07, 2022 11:47 AM

    Hi LucD

    The below script works find however i am struggling to get the Tag information

    Basically i need the script to filter tags related to category = Veeam but it dosent work can you help me please

    These are the two lines which gives a issue

    @{N="Tag-Catagory";E={(Get-Tagassignment -Entity $_.Name).Tag.Category |where {($_.Name).tag.catagory -eq "Veeam"} }},


    @{N="Tag";E={(Get-Tagassignment -Entity $_.Name).Tag.Name}},

     

     

    ##### Full Script ######

     

    $CollectVMlist = Get-Content -path "D:\Temp\vmlist.txt"

    foreach ($VMlist in $CollectVMlist) {


    get-cluster |get-vm $VMlist| Select-object @{N='VMName' ; E={$_.name}},


    @{N='FQDN';E={$_.ExtensionData.Guest.Hostname }},

    @{N='PowerState' ;E={$_.PowerState}},

    @{N='MemoryGB' ; E={[math]::Round($_.MemoryGB)}},


    @{N='NumCpu' ; E={$_.NumCpu}},


    @{N='CoresPerSocket' ; E={$_.CoresPerSocket}},


    @{N='Source-Cluster';E={(Get-Cluster -VM $_).Name}},


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


    @{N='VM-Size';E={(Get-HardDisk -VM $_ | Measure-Object -Sum CapacityGB).Sum}},


    @{N = ”Target-Cluster”; E = { '#' } },


    @{N = ”Target-vCenter”; E = { '#' } },

    @{N='Network' ;E={$_.ExtensionData.Guest.Net.network}},

    @{N='OS_Version' ; E={$_.Guest.OSFullName}},

    @{N='Hardware_version' ; E={$_.HardwareVersion}},

    @{N='VM_Tools_Ver' ;E={$_.ExtensionData.Guest.ToolsVersion}},

    @{N='VM_Tools_Status' ;E={$_.ExtensionData.Guest.ToolsStatus}},

    @{N='Tools_Running' ;E={$_.ExtensionData.Guest.ToolsRunningStatus}},


    @{N='vmhost' ; E={$_.vmhost}},

    @{N='ResourcePool' ; E={$_.ResourcePool}},

    @{N='moRefID' ;E={$_.id}},

     

    @{N="Tag-Catagory";E={(Get-Tagassignment -Entity $_.Name).Tag.Category |where {($_.Name).tag.catagory -eq "Veeam"} }},


    @{N="Tag";E={(Get-Tagassignment -Entity $_.Name).Tag.Name}},

     

    # @{N='IP';E={$_.Guest.IPAddress -join '|'}},

    @{N='IP';E={$_.Guest.IPAddress[0] }},

     

    @{N='Gateway';E={$_.ExtensionData.Guest.IpStack.IpRouteConfig.IpRoute.Gateway.IpAddress | where {$_ -ne $null}}},

    @{N='DNS';E={$_.ExtensionData.Guest.IpStack.dnsconfig.ipaddress -join '|' }},


    @{N='Network-Adapter' ; E={$_.Guest.nics.device}},

    @{N='Adapter-Type';E={(Get-NetworkAdapter | Select-Object -ExpandProperty Type -VM $_).Name }},

    @{N='Datastore-Cluster';E={(Get-datastorecluster -VM $_).Name}},

    @{N='Datastore';E={(Get-Datastore -VM $_).Name}}

    }

     

    #### END #####

     

    Many thanks

    RXJ



  • 2.  RE: Collecting VM information for Migration
    Best Answer

    Posted Apr 07, 2022 11:57 AM

    Did you already try with the Tag parameter on the Get-VM cmdlet?

    Your code should probably be

    @{N="Tag-Catagory";E={(Get-Tagassignment -Entity $_ |where {$_.Tag.Category.Name -eq "Veeam"}).Tag.Name }},


  • 3.  RE: Collecting VM information for Migration

    Posted Apr 07, 2022 02:53 PM

    Thanks so much LucD

    it works