Beispiel #1
0
        /// <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 })));
        }