public override PSMemberInfo Copy() { PSPropertySet destiny = new PSPropertySet(base.name, this.referencedPropertyNames); base.CloneBaseProperties(destiny); return(destiny); }
public override PSMemberInfo Copy() { PSPropertySet psPropertySet = new PSPropertySet(this.name, (IEnumerable <string>) this.referencedPropertyNames); this.CloneBaseProperties((PSMemberInfo)psPropertySet); return((PSMemberInfo)psPropertySet); }
/// <summary> /// Gets property records from the item. /// </summary> /// <param name="item">The item from which properties are retrieved.</param> protected override void ProcessItem(PSObject item) { var path = item.GetPropertyValue<string>("PSPath"); var providerPath = this.SessionState.Path.GetUnresolvedProviderPathFromPSPath(path); var db = this.OpenDatabase(providerPath); if (null != db) { // Keep track of which properties were selected. IList<string> properties = null; if (this.PassThru) { properties = new List<string>(); } using (db) { TransformView transform = null; if (db.Tables.Contains(TransformView.TableName)) { transform = new TransformView(db); } var table = "Property"; if ((db is PatchPackage) && db.Tables.Contains("MsiPatchMetadata")) { table = "MsiPatchMetadata"; } var query = string.Format("SELECT `Property`, `Value` FROM `{0}`", table); using (var view = db.OpenView(query)) { view.Execute(); // Get column information from the view before being disposed. var columns = ViewManager.GetColumns(view); var record = view.Fetch(); while (null != record) { using (record) { var name = record.GetString(1); if (0 == this.propertyPatterns.Count() || name.Match(this.propertyPatterns)) { if (this.PassThru) { if (0 == item.Properties.Match(name).Count()) { properties.Add(name); var property = new PSNoteProperty(name, record.GetString(2)); item.Properties.Add(property, true); } } else { // Create a locally cached copy of the record. var copy = new Record(record, columns, transform, providerPath); var obj = PSObject.AsPSObject(copy); // Show only column properties by default. var memberSet = ViewManager.GetMemberSet(view); obj.Members.Add(memberSet, true); base.WriteObject(obj); } } } record = view.Fetch(); } } } if (this.PassThru) { var propertySet = new PSPropertySet("MSIProperties", properties); item.Members.Add(propertySet, true); base.WriteObject(item); } } }
/// <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; }
public override PSMemberInfo Copy() { PSPropertySet destiny = new PSPropertySet(base.name, this.referencedPropertyNames); base.CloneBaseProperties(destiny); return destiny; }