如何设置 PowerShell Cmdlet 的默认输出格式?

2024-01-02

我正在 C# 中创建一个 PowerShell Cmdlet 以从 JSON 文件读取字段并输出一些对象。这些对象是简单的 POCO 类型:

public class FieldDefinition
{
    public FieldDefinition(string name, TypeCode code)
    {
        Name = name;
        Code = code;
    }

    public string Name { get; }

    public TypeCode Code { get; }
}

写入输出时,条目显示为:

PS ~Debug> Get-Field

Name : Session
Code : Int64

Name : Instance
Code : String

理想情况下,我希望默认演示文稿为表格:

PS ~Debug> Get-Field | Format-Table

Name     Code
----     ----
Session  Int64
Instance String

当我调用类似命令时Get-Process,我总是看到表格格式。如何使我的命令将其输出显示为表格?


每次命令输出数据表时,输出实际上都会(无形地)通过管道传输到 Out-Default 命令。这反过来又通过管道传送数据(不可见) 到默认目的地,默认情况下是“out-host”,即终端。

out-host 使用以下文件中包含的格式化信息将数据格式化为表格形式:

C:\windows\system32\windowspowershell\v1.0\DotNetTypes.format.ps1xml (注意:请勿编辑此文件,因为它是数字签名的。因此,如果您进行最微小的更改,powershell 将停止工作)

它通过在 xml 文件中查找匹配对象的条目来实现这一点(您可以使用 get-member 找到它)

所有 out-* 命令也使用相同的 xml 文件(尽管 write-host 是一个例外,稍后将介绍)。

但是,命令输出的表可能在 xml 文件中没有预定义视图。在这种情况下,out-* 命令 查找辅助 xml 文件以获取格式指导:

C:\windows\system32\windowspowershell\v1.0\Types.ps1xml

参考:https://codingbee.net/tutorials/powershell/powershell-changing-a-command-outputs-default-formatting https://codingbee.net/tutorials/powershell/powershell-changing-a-command-outputs-default-formatting

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 PowerShell Cmdlet 的默认输出格式? 的相关文章

随机推荐