diff --git a/src/ResourceGraph/ResourceGraph.Test/ScenarioTests/ResourceGraphQueryTests.ps1 b/src/ResourceGraph/ResourceGraph.Test/ScenarioTests/ResourceGraphQueryTests.ps1
index baa48a3dfb79..71cdff1996e4 100644
--- a/src/ResourceGraph/ResourceGraph.Test/ScenarioTests/ResourceGraphQueryTests.ps1
+++ b/src/ResourceGraph/ResourceGraph.Test/ScenarioTests/ResourceGraphQueryTests.ps1
@@ -19,8 +19,8 @@ Run simple query
function Search-AzureRmGraph-Query
{
$queryResult = Search-AzGraph 'Resources | where tags != "" | project id, tags, properties | limit 2'
-
- Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResult
+
+ Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResult
Assert-Null $queryResult.SkipToken
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResult.Data
Assert-AreEqual 2 $queryResult.Data.Count
@@ -55,7 +55,7 @@ function Search-AzureRmGraph-PagedQuery
# Page size was artificially set to 2 rows
$queryResult = Search-AzGraph "project id" -First 3 -Skip 2
- Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResult
+ Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResult
Assert-IsInstance System.String $queryResult.SkipToken
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResult.Data
Assert-AreEqual 3 $queryResult.Data.Count
@@ -95,17 +95,17 @@ function Search-AzureRmGraph-Subscriptions
$queryResultOneSub = Search-AzGraph $query -Subscription $testSubId
$queryResultMultipleSubs = Search-AzGraph $query -Subscription @($testSubId, $nonExsitentTestSubId)
- Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultSubsFromContext
+ Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResultSubsFromContext
Assert-Null $queryResultSubsFromContext.SkipToken
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultSubsFromContext.Data
Assert-AreEqual $testSubId $queryResultSubsFromContext.Data.subscriptionId
- Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultOneSub
+ Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResultOneSub
Assert-Null $queryResultOneSub.SkipToken
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultOneSub.Data
Assert-AreEqual $testSubId $queryResultOneSub.Data.subscriptionId
- Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultMultipleSubs
+ Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResultMultipleSubs
Assert-Null $queryResultMultipleSubs.SkipToken
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultMultipleSubs.Data
Assert-AreEqual $testSubId $queryResultMultipleSubs.Data.subscriptionId
@@ -126,12 +126,12 @@ function Search-AzureRmGraph-ManagementGroups
$queryResultOneMg = Search-AzGraph $query -ManagementGroup $testMgId1
$queryResultMultipleMgs = Search-AzGraph $query -ManagementGroup @($testMgId1, $testMgId2, $nonExistentTestMgId) -AllowPartialScope
- Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultOneMg
+ Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResultOneMg
Assert-Null $queryResultOneMg.SkipToken
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultOneMg.Data
Assert-AreEqual $testSubId $queryResultOneMg.Data.subscriptionId
- Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultMultipleMgs
+ Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResultMultipleMgs
Assert-Null $queryResultMultipleMgs.SkipToken
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultMultipleMgs.Data
Assert-AreEqual $testSubId $queryResultMultipleMgs.Data.subscriptionId
@@ -145,7 +145,7 @@ function Search-AzureRmGraph-SkipTokenQuery
{
$queryResult = Search-AzGraph "project id, properties" -SkipToken "ew0KICAiJGlkIjogIjEiLA0KICAiTWF4Um93cyI6IDMsDQogICJSb3dzVG9Ta2lwIjogMywNCiAgIkt1c3RvQ2x1c3RlclVybCI6ICJodHRwczovL2FyZy1ldXMtc2l4LXNmLmFyZy5jb3JlLndpbmRvd3MubmV0Ig0KfQ=="
- Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResult
+ Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResult
Assert-IsInstance System.String $queryResult.SkipToken
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResult.Data
Assert-AreEqual 3 $queryResult.Data.Count
diff --git a/src/ResourceGraph/ResourceGraph/Az.ResourceGraph.psd1 b/src/ResourceGraph/ResourceGraph/Az.ResourceGraph.psd1
index 29b3d7e14b69..f033d314e215 100644
--- a/src/ResourceGraph/ResourceGraph/Az.ResourceGraph.psd1
+++ b/src/ResourceGraph/ResourceGraph/Az.ResourceGraph.psd1
@@ -70,7 +70,7 @@ FormatsToProcess = 'ResourceGraph.format.ps1xml',
'ResourceGraph.Autorest\Az.ResourceGraph.format.ps1xml'
# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
-NestedModules = @('Az.ResourceGraph.psm1',
+NestedModules = @('Microsoft.Azure.PowerShell.Cmdlets.ResourceGraph.dll',
'ResourceGraph.Autorest\Az.ResourceGraph.psm1')
# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
diff --git a/src/ResourceGraph/ResourceGraph/Cmdlets/SearchAzureRmGraph.cs b/src/ResourceGraph/ResourceGraph/Cmdlets/SearchAzureRmGraph.cs
index 19ef4762a0d1..a8d7a79313ca 100644
--- a/src/ResourceGraph/ResourceGraph/Cmdlets/SearchAzureRmGraph.cs
+++ b/src/ResourceGraph/ResourceGraph/Cmdlets/SearchAzureRmGraph.cs
@@ -27,7 +27,7 @@ namespace Microsoft.Azure.Commands.ResourceGraph.Cmdlets
/// Search-AzGraph cmdlet
///
///
- [Cmdlet(VerbsCommon.Search, ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "Graph", DefaultParameterSetName = "SubscriptionScopedQuery"), OutputType(typeof(PSResourceGraphResponse))]
+ [Cmdlet(VerbsCommon.Search, ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "Graph", DefaultParameterSetName = "SubscriptionScopedQuery"), OutputType(typeof(PSResourceGraphResponse))]
public class SearchAzureRmGraph : ResourceGraphBaseCmdlet
{
///
@@ -160,7 +160,7 @@ public override void ExecuteCmdlet()
}
}
- var psResourceGraphResponse = new PSResourceGraphResponse();
+ var psResourceGraphResponse = new PSResourceGraphResponse();
QueryResponse response = null;
var resultTruncated = false;
diff --git a/src/ResourceGraph/ResourceGraph/Models/PSResourceGraphResponse.cs b/src/ResourceGraph/ResourceGraph/Models/PSResourceGraphResponse.cs
index 96e81b15eb35..66f75638bde9 100644
--- a/src/ResourceGraph/ResourceGraph/Models/PSResourceGraphResponse.cs
+++ b/src/ResourceGraph/ResourceGraph/Models/PSResourceGraphResponse.cs
@@ -14,17 +14,49 @@
namespace Microsoft.Azure.Commands.ResourceGraph.Models
{
+ using System.Collections;
using System.Collections.Generic;
- using System.Management.Automation;
using Microsoft.WindowsAzure.Commands.Common.Attributes;
- public class PSResourceGraphResponse
+ public class PSResourceGraphResponse : IList
{
[Ps1Xml(Target = ViewControl.List)]
public string SkipToken { get; set; }
[Ps1Xml(Target = ViewControl.List)]
public IList Data { get; set; }
+ public PSObject this[int index] { get => Data[index]; set => Data[index] = value; }
+ public IEnumerator GetEnumerator()
+ {
+ return Data.GetEnumerator();
+ }
+
+ IEnumerator IEnumerable.GetEnumerator()
+ {
+ return GetEnumerator();
+ }
+
+ public bool IsReadOnly => Data.IsReadOnly;
+
+ public int Count => Data.Count;
+
+ public void Add(PSObject value) => Data.Add(value);
+
+ public void Clear() => Data.Clear();
+
+ public bool Contains(PSObject value) => Data.Contains(value);
+
+ public void CopyTo(PSObject[] array, int index) => Data.CopyTo(array, index);
+
+ public int IndexOf(PSObject value) => Data.IndexOf(value);
+
+ public void Insert(int index, PSObject value) => Data.Insert(index, value);
+
+ public void Remove(PSObject value) => Data.Remove(value);
+
+ public void RemoveAt(int index) => Data.RemoveAt(index);
+
+ bool ICollection.Remove(PSObject item) => Data.Remove(item);
}
}