Я разрабатываю приложение .NET/C# 2.0, которое использует SDK PowerShell для выполнения сценария. Я не использую SnapIns. Я настраиваю все непосредственно через PS's RunspaceConfiguration.Добавить пользовательский формат в SDK Powershell без использования SnapIn
Итак, моя проблема заключается в том, что я не могу добавить пользовательский формат для моего типа Plux.ExtensionTypeInfo, реализованный в приложении.
(Plux.ExtensionTypeInfo имеет свойство Name)
Вот что я пытаюсь:
...
RunspaceConfiguration config = RunspaceConfiguration.Create();
config.Formats.Prepend(
new FormatConfigurationEntry("plux.format.ps1xml")
);
config.Formats.Update();
...
plux.format.ps1xml:
<Configuration>
<ViewDefinitions>
<View>
<Name>Plux.ExtensionTypeInfo</Name>
<ViewSelectedBy>
<TypeName>Plux.ExtensionTypeInfo</TypeName>
</ViewSelectedBy>
<TableControl>
<TableHeaders>
<TableColumnHeader>
<Width>30</Width>
</TableColumnHeader>
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem>
<PropertyName>Name</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>
</ViewDefinitions>
</Configuration>
После выполнения Cmdlet , который возвращает несколько объектов ExtensionTypeInfo, вывод никогда не будет отформатирован.
С помощью встроенных командлетов и типов форматирование отлично работает в моем приложении PS Host. Регистрация Cmdlet также отлично работает через объект config. При запуске update-formatdata на plux.format.ps1xml, с powershell.exe или моим хостинговым приложением, никаких ошибок не возникает.
Тем не менее, код выше не влияет на форматирование.
(Извините за поздний ответ, я был вне офиса) Да, я действительно добавляю строку для каждого конвейера перед выполнением. Поэтому форматирование по умолчанию работает очень хорошо. – 2009-05-19 07:42:30