/// <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); }
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); }
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); }
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); }
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>()); }
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); }