/// <summary> /// Converts a <see cref="Resource{JToken}"/> object into a <see cref="PSObject"/> object. /// </summary> /// <param name="resource">The <see cref="Resource{JToken}"/> object.</param> internal static PSObject ToPsObject(this Resource <JToken> resource) { var resourceType = ResourceIdUtility.GetResourceType(resource.Id); var extensionResourceType = ResourceIdUtility.GetExtensionResourceType(resource.Id); var objectDefinition = new Dictionary <string, object> { { "Name", resource.Name }, { "ResourceId", resource.Id }, { "ResourceName", ResourceIdUtility.GetResourceName(resource.Id) }, { "ResourceType", resourceType }, { "ExtensionResourceName", ResourceIdUtility.GetExtensionResourceName(resource.Id) }, { "ExtensionResourceType", extensionResourceType }, { "Kind", resource.Kind }, { "ResourceGroupName", ResourceIdUtility.GetResourceGroup(resource.Id) }, { "Location", resource.Location }, { "SubscriptionId", ResourceIdUtility.GetSubscriptionId(resource.Id) }, { "Tags", TagsHelper.GetTagsHashtables(resource.Tags) }, { "Plan", resource.Plan.ToJToken().ToPsObject() }, { "Properties", resource.Properties.ToPsObject() }, { "PropertiesText", resource.Properties == null ? null : resource.Properties.ToString() }, { "CreatedTime", resource.CreatedTime }, { "ChangedTime", resource.ChangedTime }, { "ETag", resource.ETag }, }; return(PowerShellUtilities.ConstructPSObject( (resourceType + extensionResourceType).Replace('/', '.'), objectDefinition.Where(kvp => kvp.Value != null).SelectManyArray(kvp => new[] { kvp.Key, kvp.Value }))); }