Quantcast
Channel: VMware Communities : Discussion List - VMware {code}
Viewing all articles
Browse latest Browse all 2738

Exclude vAPPs with no VMs

$
0
0

Hi all,

 

The following script is very good but we would like to know how to make it ignore the vAPPs with no VMs

 

$ConfigFile = "$PSScriptRoot/Config.json"

$Configs = Get-Content -Raw -Path $ConfigFile -ErrorAction Continue | ConvertFrom-Json -ErrorAction Continue

 

if (!($Configs)) {

  Throw "Import JSON Config Failed"

  }

 

$VcdHost = $Configs.Base.VcdHost

$BasicAuth = $Configs.Base.BasicAuth

 

#region: Login

$Uri = "https://$VcdHost/api/sessions"

$Authorization = 'Basic {0}' -f $BasicAuth

$Headers = @{'accept' = 'application/vnd.vmware.vcloud.session+xml;version=27.0'; 'Authorization' = $Authorization}

$ResponseHeaders = $null

try {

  $Login = Invoke-RestMethod -uri $Uri -Method Post -Headers $Headers -ResponseHeadersVariable 'ResponseHeaders'

}

catch {

  Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__

  Exit

}

#endregion

 

#region: Cleanup Confidential Data

Clear-Variable -Name BasicAuth, Authorization, Headers

#endregion

 

#region: Get vApps

$Uri = "https://$VcdHost/api/query?type=orgVdc"

$Headers = @{'accept' = 'application/*+xml;version=27.0'; 'x-vcloud-authorization' = [String]$ResponseHeaders.'x-vcloud-authorization'}

[XML]$orgVdcs = Invoke-RestMethod -uri $Uri -Method Get -Headers $Headers

#endregion

 

#region: Get vApps

$Uri = "https://$VcdHost/api/query?type=vApp"

$Headers = @{'accept' = 'application/*+xml;version=27.0'; 'x-vcloud-authorization' = [String]$ResponseHeaders.'x-vcloud-authorization'}

[XML]$vApps = Invoke-RestMethod -uri $Uri -Method Get -Headers $Headers

#endregion

 

#region: Get VMs

$Uri = "https://$VcdHost/api/query?type=vm"

$Headers = @{'accept' = 'application/*+xml;version=27.0'; 'x-vcloud-authorization' = [String]$ResponseHeaders.'x-vcloud-authorization'}

[XML]$VMs = Invoke-RestMethod -uri $Uri -Method Get -Headers $Headers

#endregion

 

#region: Get orgNetworks

$Uri = "https://$VcdHost/api/query?type=orgNetwork"

$Headers = @{'accept' = 'application/*+xml;version=27.0'; 'x-vcloud-authorization' = [String]$ResponseHeaders.'x-vcloud-authorization'}

[XML]$orgNetworks = Invoke-RestMethod -uri $Uri -Method Get -Headers $Headers

#endregion

 

#region: Get edgeGateway

$Uri = "https://$VcdHost/api/query?type=edgeGateway"

$Headers = @{'accept' = 'application/*+xml;version=27.0'; 'x-vcloud-authorization' = [String]$ResponseHeaders.'x-vcloud-authorization'}

[XML]$edgeGateways = Invoke-RestMethod -uri $Uri -Method Get -Headers $Headers

#endregion

 

#region: Output

## Simple Stats

$orgVdcsTotal = ([Array]$orgVdcs.QueryResultRecords.OrgVdcRecord).Count

$body="vCloudStats orgVdcCountTotal=$orgVdcsTotal"

Write-Host $body

$vAppsTotal = ([Array]$vApps.QueryResultRecords.VAppRecord).Count

$body="vCloudStats vAppCountTotal=$vAppsTotal"

Write-Host $body

$VMsTotal = ([Array]$VMs.QueryResultRecords.VMRecord | Where-Object {$_.isVAppTemplate -ne "true"}).Count

$body="vCloudStats VMCountTotal=$VMsTotal"

Write-Host $body

$VMsPoweredOff = ([Array]$VMs.QueryResultRecords.VMRecord | Where-Object {$_.isVAppTemplate -ne "true" -and $_.status -eq "POWERED_OFF"}).Count

$body="vCloudStats VMCountPoweredOff=$VMsPoweredOff"

Write-Host $body

$orgNetworksTotal = $orgNetworks.QueryResultRecords.OrgNetworkRecord.Count

$body="vCloudStats orgNetworkCountTotal=$orgNetworksTotal"

Write-Host $body

$edgeGatewaysTotal = ([Array]$edgeGateways.QueryResultRecords.EdgeGatewayRecord).Count

$body="vCloudStats edgeGatewaysTotal=$edgeGatewaysTotal"

Write-Host $body

 

## OrgVdc Details

foreach ($item in [Array]$orgVdcs.QueryResultRecords.OrgVdcRecord) {

  $body = "vCloudStats,orgVdc=$($item.name),isEnabled=$($item.isEnabled) cpuUsedMhz=$($item.cpuUsedMhz),memoryUsedMB=$($item.memoryUsedMB),numberOfMedia=$($item.numberOfMedia),numberOfVAppTemplates=$($item.numberOfVAppTemplates),numberOfVApps=$($item.numberOfVApps),storageUsedMB=$($item.storageUsedMB)"

  Write-Host $body

}

## vApp Details

foreach ($item in [Array]$vApps.QueryResultRecords.VAppRecord) {

  $body = "vCloudStats,vApp=$($item.name),status=$($item.status) numberOfVMs=$($item.numberOfVMs),numberOfCpus=$($item.numberOfCpus),cpuAllocationInMhz=$($item.cpuAllocationInMhz),memoryAllocationMB=$($item.memoryAllocationMB),storageKB=$($item.storageKB)"

  Write-Host $body

}

## orgNetwork Details

foreach ($item in [Array]$orgNetworks.QueryResultRecords.OrgNetworkRecord) {

  $Uri = [string]$item.href + "/allocatedAddresses"

  $Headers = @{'accept' = 'application/*+xml;version=27.0'; 'x-vcloud-authorization' = [String]$ResponseHeaders.'x-vcloud-authorization'}

  [XML]$orgNetworkAllocated = Invoke-RestMethod -uri $Uri -Method Get -Headers $Headers

  $AllocatedIpAddressesTotal = $orgNetworkAllocated.AllocatedIpAddresses.IpAddress.Count

  $body = "vCloudStats,orgNetwork=$($item.name),gateway=$($item.gateway) AllocatedIpAddressesTotal=$AllocatedIpAddressesTotal"

  Write-Host $body

}

## Edge Details

foreach ($item in [Array]$edgeGateways.QueryResultRecords.EdgeGatewayRecord) {

  $body = "vCloudStats,edgeGateway=$($item.name),gatewayStatus=$($item.gatewayStatus),haStatus=$($item.haStatus) numberOfExtNetworks=$($item.numberOfExtNetworks),numberOfOrgNetworks=$($item.numberOfOrgNetworks)"

  Write-Host $body

}

#endregion

 

#region: Logout

$Uri = "https://$VcdHost/api/session"

$Headers = @{'accept' = 'application/vnd.vmware.vcloud.session+xml;version=27.0'; 'x-vcloud-authorization' = [String]$ResponseHeaders.'x-vcloud-authorization'}

$Logout = Invoke-RestMethod -uri $Uri -Method Delete -Headers $Headers

#endregion

 

#region: Cleanup Confidential Data

Clear-Variable -Name ResponseHeaders, Headers

#endregion


Viewing all articles
Browse latest Browse all 2738

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>