我正在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; }
}
Run Code Online (Sandbox Code Playgroud)
写入输出时,条目显示为:
PS ~Debug> Get-Field
Name : Session
Code : Int64
Name : Instance
Code : String
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望默认显示形式为表格:
PS ~Debug> Get-Field | Format-Table
Name Code
---- ----
Session Int64
Instance String
Run Code Online (Sandbox Code Playgroud)
当我调用诸如之类的命令Get-Process时,总是显示表格格式。如何使命令的输出显示为表格?
每次命令输出数据表时,输出实际上((不可见地)通过管道传递给Out-Default命令)。反过来,这会将数据(无形地)通过管道传输到默认目的地,该目的地默认为“外部主机”,即终端。
主机使用以下文件中包含的格式化信息将数据格式化为表格形式:
C:\ windows \ systems32 \ windowspowershell \ v1.0 \ DotNetTypes.format.ps1xml(注意:请勿编辑此文件,因为它已经过数字签名。因此,如果进行最小的更改,powershell将停止工作)
它通过在xml文件中查找匹配对象的条目来完成此操作(可以使用get-member进行查找)
所有out- *命令也使用相同的xml文件(尽管write-host是一个例外,稍后将介绍)。
但是,命令可能会输出一个在xml文件中没有预定义视图的表。在这种情况下,out- *命令将查找辅助xml文件以获取格式指导:
C:\ windows \ systems32 \ windowspowershell \ v1.0 \ Types.ps1xml
Reference: https://codingbee.net/tutorials/powershell/powershell-changing-a-command-outputs-default-formatting
小智 5
您需要添加一个用于设置输出布局的 format.ps1xml 文件。
https://msdn.microsoft.com/en-us/library/gg574424(v=vs.85).aspx
我过去曾为脚本模块做过这件事。
可以在本地计算机 C:\Windows\System32\WindowsPowershell\v1.0 上找到示例
在上面的位置有几个 *.ps1xml 文件。
| 归档时间: |
|
| 查看次数: |
1181 次 |
| 最近记录: |