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 オブジェクトを返すコマンドレットを実行した後、出力は決して書式設定されません。

組み込みのコマンドレットとタイプを使用すると、フォーマットは PS ホスト アプリケーションで完全に機能します。コマンドレットの登録も、構成オブジェクトを介して正常に機能します。powershell.exe または私のホスティング アプリケーションを使用してplux.format.ps1xmlでupdate-formatdataを起動すると、エラーはスローされません。

それでも、上記のコードはフォーマットには影響しません。

4

1 に答える 1

0

PowerShell ランタイム環境のホスティングは試していません。しかし、PowerShell ホストではなくアプリケーションでパイプラインをキャプチャしているため、出力の書式設定が行われていないことが問題であると確信しています。

出力の書式設定は、PowerShell ホストの Out-Default コマンドレットで行うか、Format-Table または Format-List を呼び出して書式を指定することによって行われます。

編集:

私の提案は、これを実行空間で実行することです。

YourCommand | Format-Table Name | Out-String

また、この出力を解析しようとしていないことを願っています。

于 2009-05-13T01:56:41.513 に答える