Exemple #1
0
        /// <summary>
        /// Creates and caches an instance of the "PSStandardMembers" <see cref="PSMemberSet"/> to attach to a <see cref="Record"/>.
        /// </summary>
        /// <param name="view">The <see cref="View"/> from which column information is retrieved.</param>
        /// <returns>A new or cached copy of the "PSStandardMembers" <see cref="PSMemberSet"/>.</returns>
        /// <exception cref="ArgumentNullException">The <paramref name="view"/> parameter value is null.</exception>
        internal static PSMemberSet GetMemberSet(View view)
        {
            if (null == view)
            {
                throw new ArgumentNullException("view");
            }

            PSMemberSet memberSet;

            if (memberSets.ContainsKey(view.QueryString) && memberSets[view.QueryString].IsAlive)
            {
                // Get an existing PSMemberSet.
                memberSet = (PSMemberSet)memberSets[view.QueryString].Target;
            }
            else
            {
                // Add or set a new PSMemberSet.
                memberSet = new PSMemberSet("PSStandardMembers");

                var columns    = ViewManager.GetColumns(view).Select(column => column.Key);
                var properties = new PSPropertySet("DefaultDisplayPropertySet", columns);
                memberSet.Members.Add(properties);

                columns = ViewManager.GetColumns(view).PrimaryKeys;
                if (0 < columns.Count())
                {
                    properties = new PSPropertySet("DefaultKeyPropertySet", columns);
                    memberSet.Members.Add(properties);
                }

                memberSets[view.QueryString] = new WeakReference(memberSet);
            }

            return(memberSet);
        }
        internal static void SetDefaultDisplayProperties(this PSObject psObject, Func <PSPropertyInfo, bool> filter)
        {
            if (psObject == null)
            {
                throw new ArgumentNullException(nameof(psObject));
            }
            if (filter == null)
            {
                throw new ArgumentNullException(nameof(filter));
            }

            // Apply the filter and get the member names
            IEnumerable <string> defaultPropertyNames = psObject.Properties.Where(filter).Select(prop => prop.Name);

            // Create the PSMemberSet
            PSMemberSet memberSet = new PSMemberSet(PSStandardMembers, new PSMemberInfo[]
            {
                new PSPropertySet(DefaultDisplayPropertySet, defaultPropertyNames),
            });

            // If the PSStandardMembers property already exists, remove it
            psObject.Members.Remove(PSStandardMembers);

            // Add the "PSStandardMembers" member
            psObject.Members.Add(memberSet);
        }
        private static MshExpression GetDefaultNameExpression(
            PSMemberSet standardMembersSet)
        {
            if (standardMembersSet == null || !(standardMembersSet.Members["DefaultDisplayProperty"] is PSNoteProperty member))
            {
                return((MshExpression)null);
            }
            string s = member.Value.ToString();

            return(string.IsNullOrEmpty(s) ? (MshExpression)null : new MshExpression(s));
        }
    public static PSObject Get()
    {
        var w       = new Whatever();
        var pso     = new PSObject(w);
        var display = new PSPropertySet("DefaultDisplayPropertySet", new [] { "One", "Two" });
        var mi      = new PSMemberSet("PSStandardMembers", new[] { display });

        pso.Members.Add(mi);

        return(pso);
    }
Exemple #5
0
        void WriteResult(ulong sz, string p)
        {
            PSObject o = new PSObject();

            // probably should just calculate that here and insert it as another column
            string human = @"switch($this.Length) { { $_ -gt 1tb } 
                        { ""{ 0:n2}T"" -f ($_ / 1tb) ; break }
                    { $_ -gt 1gb }
                        { ""{0:n2}G"" -f ($_ / 1gb) ; break }
                    { $_ -gt 1mb }
                        { ""{0:n2}M"" -f ($_ / 1mb) ; break }
                    { $_ -gt 1kb }
                        { ""{0:n2}K"" -f ($_ / 1Kb) ; break }
                    default
                        { ""{0}"" -f $_}
                } 
            ";

            string[] props  = { "Length", "FullName" };
            string[] propsh = { "ReadableLength", "FullName" };

            ScriptBlock      sb  = ScriptBlock.Create(human);
            PSScriptProperty psp = new PSScriptProperty("ReadableLength", sb);
            PSPropertySet    ps;

            if (humanreadable)
            {
                ps = new PSPropertySet("DefaultDisplayPropertySet", propsh);
            }
            else
            {
                ps = new PSPropertySet("DefaultDisplayPropertySet", props);
            }

            PSMemberSet pm = new PSMemberSet("PSStandardMembers", new PSMemberInfo[] { ps });

            // pm.Members.Add();

            o.Members.Add(pm);

            o.Properties.Add(new PSNoteProperty("Length", sz));
            o.Properties.Add(new PSNoteProperty("FullName", p));
            o.Members.Add(psp);

            WriteObject(o);
        }
Exemple #6
0
 private static MshExpression GetDefaultNameExpression(PSMemberSet standardMembersSet)
 {
     if (standardMembersSet != null)
     {
         PSNoteProperty property = standardMembersSet.Members["DefaultDisplayProperty"] as PSNoteProperty;
         if (property != null)
         {
             string str = property.Value.ToString();
             if (string.IsNullOrEmpty(str))
             {
                 return(null);
             }
             return(new MshExpression(str));
         }
     }
     return(null);
 }
        private static string[] GetDefaultKeyPropertySet(PSObject mshObj)
        {
            PSMemberSet pSStandardMembers = mshObj.PSStandardMembers;

            if (pSStandardMembers == null)
            {
                return(null);
            }
            PSPropertySet set2 = pSStandardMembers.Members["DefaultKeyPropertySet"] as PSPropertySet;

            if (set2 == null)
            {
                return(null);
            }
            string[] array = new string[set2.ReferencedPropertyNames.Count];
            set2.ReferencedPropertyNames.CopyTo(array, 0);
            return(array);
        }
Exemple #8
0
        internal static string[] GetDefaultKeyPropertySet(PSObject mshObj)
        {
            PSMemberSet standardNames = mshObj.PSStandardMembers;

            if (standardNames == null)
            {
                return(null);
            }
            PSPropertySet defaultKeys = standardNames.Members["DefaultKeyPropertySet"] as PSPropertySet;

            if (defaultKeys == null)
            {
                return(null);
            }
            string[] props = new string[defaultKeys.ReferencedPropertyNames.Count];
            defaultKeys.ReferencedPropertyNames.CopyTo(props, 0);
            return(props);
        }
        private static List <MshExpression> GetDefaultPropertySet(
            PSMemberSet standardMembersSet)
        {
            if (standardMembersSet == null || !(standardMembersSet.Members["DefaultDisplayPropertySet"] is PSPropertySet member))
            {
                return(new List <MshExpression>());
            }
            List <MshExpression> mshExpressionList = new List <MshExpression>();

            foreach (string referencedPropertyName in member.ReferencedPropertyNames)
            {
                if (!string.IsNullOrEmpty(referencedPropertyName))
                {
                    mshExpressionList.Add(new MshExpression(referencedPropertyName));
                }
            }
            return(mshExpressionList);
        }
Exemple #10
0
 private static List <MshExpression> GetDefaultPropertySet(PSMemberSet standardMembersSet)
 {
     if (standardMembersSet != null)
     {
         PSPropertySet set = standardMembersSet.Members["DefaultDisplayPropertySet"] as PSPropertySet;
         if (set != null)
         {
             List <MshExpression> list = new List <MshExpression>();
             foreach (string str in set.ReferencedPropertyNames)
             {
                 if (!string.IsNullOrEmpty(str))
                 {
                     list.Add(new MshExpression(str));
                 }
             }
             return(list);
         }
     }
     return(new List <MshExpression>());
 }
        private static List <PSPropertyExpression> GetDefaultPropertySet(PSMemberSet standardMembersSet)
        {
            if (standardMembersSet != null)
            {
                PSPropertySet defaultDisplayPropertySet = standardMembersSet.Members[TypeTable.DefaultDisplayPropertySet] as PSPropertySet;
                if (defaultDisplayPropertySet != null)
                {
                    List <PSPropertyExpression> retVal = new List <PSPropertyExpression>();
                    foreach (string prop in defaultDisplayPropertySet.ReferencedPropertyNames)
                    {
                        if (!string.IsNullOrEmpty(prop))
                        {
                            retVal.Add(new PSPropertyExpression(prop));
                        }
                    }
                    return(retVal);
                }
            }

            return(new List <PSPropertyExpression>());
        }
Exemple #12
0
        private static PSPropertyExpression GetDefaultNameExpression(PSMemberSet standardMembersSet)
        {
            if (standardMembersSet != null)
            {
                PSNoteProperty defaultDisplayProperty = standardMembersSet.Members[TypeTable.DefaultDisplayProperty] as PSNoteProperty;
                if (defaultDisplayProperty != null)
                {
                    string expressionString = defaultDisplayProperty.Value.ToString();
                    if (string.IsNullOrEmpty(expressionString))
                    {
                        // invalid data, the PSObject is empty
                        return(null);
                    }
                    else
                    {
                        return(new PSPropertyExpression(expressionString));
                    }
                }
            }

            return(null);
        }