Powershell 自定义 cmdlet 格式化输出

发布于 2024-12-07 14:46:21 字数 1352 浏览 1 评论 0原文

我正在 powershell 2.0 中编写我的第一个自定义 CMDLet。我遇到了一个问题,即我的 cmdlet 中未使用自定义格式模板 xml。 这是我的格式化文件:

<Configuration>
<ViewDefinitions>
  <View>
    <Name>abc</Name>
    <ViewSelectedBy>
      <TypeName>ExtractServicesCmd.ServiceInfo</TypeName>
    </ViewSelectedBy> 
    <TableControl>
      <TableHeaders>
        <TableColumnHeader>
          <Label>ServiceName</Label>
          <Width>12</Width>
          <Alignment>right</Alignment>
        </TableColumnHeader>      
      </TableHeaders>
      <TableRowEntries>
        <TableRowEntry>
          <TableColumnItems>
            <TableColumnItem>
              <PropertyName>ServiceName</PropertyName>
            </TableColumnItem>           
          </TableColumnItems>
        </TableRowEntry>
      </TableRowEntries>
    </TableControl>
  </View>  
  </ViewDefinitions>
</Configuration>

一切顺利,格式已成功注册(我使用 Get-FormatData 命令检查过),类型正确。但在执行我的命令行开关时,它仍然使用默认格式。我什至尝试通过管道 "| Format-Table -View abc" 强制使用我的格式化程序,但它说 - 找不到名称为 abc 的视图!到底是怎么回事?我尝试了 Get-FormatData 并分析了条目 - 我的 ViewDefinition 存在并具有正确的视图名称!

感谢您的阅读。

I am writing my first custom CMDLet in powershell 2.0. I have encoutered a problem with custom formatting temaplate xml being not used in my cmdlet.
Here is my formatting file:

<Configuration>
<ViewDefinitions>
  <View>
    <Name>abc</Name>
    <ViewSelectedBy>
      <TypeName>ExtractServicesCmd.ServiceInfo</TypeName>
    </ViewSelectedBy> 
    <TableControl>
      <TableHeaders>
        <TableColumnHeader>
          <Label>ServiceName</Label>
          <Width>12</Width>
          <Alignment>right</Alignment>
        </TableColumnHeader>      
      </TableHeaders>
      <TableRowEntries>
        <TableRowEntry>
          <TableColumnItems>
            <TableColumnItem>
              <PropertyName>ServiceName</PropertyName>
            </TableColumnItem>           
          </TableColumnItems>
        </TableRowEntry>
      </TableRowEntries>
    </TableControl>
  </View>  
  </ViewDefinitions>
</Configuration>

Everything goes fine, Format is successfully registering (I checked it using Get-FormatData command) with proper type. But when executing my commandlet it still uses default formatting. I even tried to force using my formatter by piping "| Format-Table -View abc" but it says - cannot find view with name abc! What is going on? I tried Get-FormatData and analyzed entries - my ViewDefinition is present there with proper view name!

Thanks for reading.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爺獨霸怡葒院 2024-12-14 14:46:21

$x.GetType().FullName(其中 $x 是您键入的实例)返回什么? (即,这听起来好像 PSH 无法匹配类型名称。)

请注意,类型名称将与正在格式化的对象的确切类型()匹配对象的基本类型。

What does $x.GetType().FullName where $x is an instance of you type return? (Ie. this sounds like PSH is failing to match the type name.)

Note the type name will match the exact type of the object being formatted, or a base type of the object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文