Here is a quick script I wrote to pull the relationship’s for an object by name from the suite-api… which is exported to a CSV file.

To run the script, provide the vRops address, the pre-stored credentials and the name of the resource you wish to search…

.\GetRelationships.ps1 -vRopsAddress '' -creds 'HOME' -Resource 'WINSRV2'

To create the credentials file run the following command.

        $cred = Get-Credential
        $cred | Export-Clixml -Path "d:\vRops\config\HOME.xml"


And here is the script


$ScriptPath = (Get-Item -Path ".\" -Verbose).FullName

if($creds -gt ""){

    $cred = Import-Clixml -Path "$ScriptPath\config\$creds.xml"

    $vRopsUser = $cred.GetNetworkCredential().Username
    $vRopsPassword = $cred.GetNetworkCredential().Password
    echo "credentials not specified!"

#vRops SSL certificate trust
add-type @"
     using System.Net;
     using System.Security.Cryptography.X509Certificates;
     public class TrustAllCertsPolicy : ICertificatePolicy {
         public bool CheckValidationResult(
             ServicePoint srvPoint, X509Certificate certificate,
             WebRequest request, int certificateProblem) {
             return true;
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

    #Lookup Function to get resourceId from Name
    Function GetObject([String]$vRopsObjName, [String]$vRopsServer, $User, $Password){

    $wc = new-object
    $wc.Credentials = new-object System.Net.NetworkCredential($User, $Password)
    [xml]$Checker = $wc.DownloadString("https://$vRopsServer/suite-api/api/resources?name=$vRopsObjName")

        # Check if we get more than 1 result and apply some logic
        If ([Int]$Checker.resources.pageInfo.totalCount -gt '1') {

            $DataReceivingCount = $Checker.resources.resource.resourceStatusStates.resourceStatusState.resourceStatus -eq 'DATA_RECEIVING'

                If ($DataReceivingCount.count -gt 1){
                $CheckerOutput = ''
                return $CheckerOutput 
        $CheckerOutput = New-Object PsObject -Property @{Name=$vRopsObjName; resourceId=$Checker.resources.resource.identifier; resourceKindKey=$Checker.resources.resource.resourceKey.resourceKindKey}
        return $CheckerOutput 

Function GetObjectRelationships([String]$vRopsObjID, [String]$vRopsServer, $User, $Password){

$RelationReport = @()

#Call vRops API

$wc = new-object
$wc.Credentials = new-object System.Net.NetworkCredential($User, $Password)
[xml]$Relationships = $wc.DownloadString("https://$vRopsAddress/suite-api/api/resources/$vRopsObjID/relationships")

ForEach ($Relationship in $Relationships.'resource-relation'.resource.resourceKey){

    $RelationReport += New-Object PSObject -Property @{

            Name = $Relationship.Name
            Type = $Relationship.resourceKindKey



Return $RelationReport


$ObjectLookup = GetObject $Resource $vRopsAddress $vRopsUser $vRopsPassword

$RelationshipList = GetObjectRelationships $ObjectLookup.resourceId $vRopsAddress $vRopsUser $vRopsPassword

$RelationshipList | Sort-object Type | export-csv "$Resource-Relationships.csv" -NoTypeInformation

Remove-Variable * -ErrorAction SilentlyContinue


Example Output

Name Type
ESX-INF-SSD1 Datastore
WINSRVs Function HostSystem
Product Licensing Licensing VM Entity Status
PoweredOn:all VM Entity Status