Ответ заключается в том, что существует несколько типов атрибутов на ADObject
- Default
, Extended
и Constructed
. Это некоторые примеры.
Default
свойства возвращаются во все ADObject
запросы, соответствующие определенному типу ADObject
(ADUser
имеет свой собственный набор свойств по умолчанию, ADGroup
имеет свой собственный набор и т. д.).
Extended
свойства по умолчанию не возвращаются, но неявно перечислимые статические атрибуты в атрибутах ADObject
.
Constructed
не являются статическими свойствами, а вычисляются на основе значений других атрибутов, принадлежащих ADObject
. Я не мог найти никакой информации об этом, но я полагаю, что перечисление всех атрибутов Constructed
может быть дорогостоящей операцией, поскольку значения вычисляются и, как таковые, должны быть явно запрошены с помощью параметра -Properties
командлетов Get-ADObject
.
Все это похоже на атрибут systemFlags
на ADObject
, где установлены типы атрибутов. Мое подозрение (я не очень сильно тестировал эту теорию) заключается в том, что атрибуты с флагом Constructed (4)
или Non-Replicated (2)
должны быть явно указаны для возврата из cmdlet
.
msDS-UserPasswordExpiryTimeComputed Documentation
Список всех построенных атрибутов в ADObject с использованием фильтра LDAP
Вы можете создать скрытые Row
объекты с значениями от 8 до 1048576 RowIndex
и добавить их в sheetData
. Однако это приведет к довольно большому файлу Excel.
Лучшим, оптимизированным способом было бы определить в свойствах форматирования листа, что строки скрыты по умолчанию и видны только, если указано.
Например, как следующее:
using (var spreadsheetDocument = SpreadsheetDocument.Create(filePath,
SpreadsheetDocumentType.Workbook))
{
var workbookpart = spreadsheetDocument.AddWorkbookPart();
workbookpart.Workbook = new Workbook();
var worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet();
workbookpart.Workbook
.AppendChild(new Sheets())
.AppendChild(new Sheet()
{
Id = workbookpart.GetIdOfPart(worksheetPart),
SheetId = 1,
Name = "Sheet 1",
});
var sheetFormatProperties = new SheetFormatProperties()
{
DefaultRowHeight = 15,
ZeroHeight = true
};
var sheetData = new SheetData();
worksheetPart.Worksheet.Append(sheetFormatProperties, sheetData);
// Add first 8th visible rows, the rest will be hidden.
for (uint i = 1; i < 8; i++)
{
var row = new Row() { RowIndex = i };
sheetData.Append(row);
// Add cells to row ...
}
}
Загрузите OpenXMLSDKTool, если у вас его еще нет, сравните файл со строками, не скрытыми в файле, со скрытыми строками. Я считаю, что он должен показать вам разницу в xml, а также в c #, используемом для его генерации. .