0

我正在开发一个使用 PowerShell SDK 执行脚本的 .NET/C# 2.0 应用程序。我没有使用管理单元。我通过 PS 的RunspaceConfiguration直接设置所有内容。

所以我的问题是我无法为应用程序中实现的类型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>

执行返回几个 ExtensionTypeInfo 对象的 Cmdlet 后,输出将永远不会被格式化。

借助内置的 Cmdlet 和类型,格式可以在我的 PS Host 应用程序中完美运行。Cmdlet 注册也可以通过配置对象正常工作。使用 powershell.exe 或我的托管应用程序在plux.format.ps1xml上启动update-formatdata时,不会引发任何错误。

尽管如此,上面的代码对格式化没有影响。

4

1 回答 1

0

我还没有尝试托管 PowerShell 运行时环境。但我很确定您的问题是输出格式没有发生,因为您在应用程序中捕获管道,而不是在 PowerShell 主机中。

输出格式化发生在 PowerShell 主机的 Out-Default cmdlet 中,或者通过调用 Format-Table 或 Format-List 来指定格式。

编辑:

我的建议是在运行空间中运行它。

YourCommand | Format-Table Name | Out-String

另外,我希望您不要尝试解析此输出。

于 2009-05-13T01:56:41.513 回答