【问题标题】:Powershell custom cmdlet formatting outputPowershell 自定义 cmdlet 格式化输出
【发布时间】:2011-09-29 12:56:24
【问题描述】:

我正在 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 以正确的视图名称存在!

感谢阅读。

【问题讨论】:

  • 你是天才!名称有误:/我没注意到。 FullName 是 ExtractServicesCmd.ServicesInfo,而不是 ExtractServicesCmd.ServiceInfo。史诗般的失败。

标签: powershell powershell-cmdlet


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 2020-02-21
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多