private void WriteRecords(Database db, string path) { TransformView transform = null; if (db.Tables.Contains(TransformView.TableName)) { transform = new TransformView(db); } string query = null; try { query = this.GetQuery(db, path); } catch (PSArgumentException ex) { base.WriteError(ex.ErrorRecord); return; } if (!string.IsNullOrEmpty(query)) { 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) { // Create a locally cached copy of the record. var copy = new Record(record, columns, transform, path); var obj = PSObject.AsPSObject(copy); // Show only column properties by default. var memberSet = ViewManager.GetMemberSet(view); obj.Members.Add(memberSet, true); this.WriteObject(obj); } record = view.Fetch(); } } } else { foreach (var table in db.Tables) { if (db.IsTablePersistent(table.Name)) { var info = new TableInfo(table.Name, path, transform, this.Patch, this.Transform); var obj = PSObject.AsPSObject(info); this.WriteObject(obj); } } } }