如何更改Powershell的默认输出格式以使用Format-Table -autosize?

pen*_*ake 3 powershell formatting formattable

我如何强制使用Powershell

Format-Table -auto
Run Code Online (Sandbox Code Playgroud)

将返回的对象数组写入控制台时的默认格式?谢谢

Mat*_*att 6

如果您每次都可以调用该cmdlet,并且至少具有PowerShell v3.0,则可以设置a $PSDefaultParameterValues,您可以在about_Parameters_Default_Values上了解更多信息。

满足您需要的语法为:

$PSDefaultParameterValues=@{"<CmdletName>:<ParameterName>"="<DefaultValue>"}
Run Code Online (Sandbox Code Playgroud)

因此,我们将其设置为来添加该开关$true

$PSDefaultParameterValues = @{"Format-Table:Autosize"=$true}
Run Code Online (Sandbox Code Playgroud)

要删除它,您必须像使用哈希表元素一样进行

$PSDefaultParameterValues.Remove("Format-Table:Autosize")
Run Code Online (Sandbox Code Playgroud)

从前面的文章中可以找到有关如何处理这些信息的信息。

$ PSDefaultParameterValues是首选项变量,因此它仅在设置它的会话中存在。没有默认值。

要设置$ PSDefaultParameterValues,请在命令行中输入变量名称和一个或多个键-值对。

如果键入另一个$ PSDefaultParameterValues命令,其值将替换原始值。原件未保留。

要为以后的会话保存$ PSDefaultParameterValues,请将$ PSDefaultParameterValues命令添加到Windows PowerShell配置文件。有关更多信息,请参见about_Profiles。


除此之外,我不确定,因为很难动态地进行更改。您可能想要确保发送到流的数据以与显示在屏幕上相同的方式出现在屏幕上,format-table -auto但是您必须确保它不会影响数据,以便您无法捕获它或将其发送到管道下。

您正在考虑创建自定义输出格式文件,例如Frode F.所谈论的,那么您需要考虑查看about_Format.ps1xml,但是您需要为每个想要以这种方式显示的对象配置它。

例如,FileSystem.format.ps1xml将控制的输出Get-ChildItemFormat-Table更动态,我认为您不能说只Format-Table在该文件中使用。

  • 在个人资料中非常有用。请注意,这仅适用于管道传递至“格式表”。例如 `Get-ChildItem`本身将使用输出类型的formatdata,而`Get-ChildItem | 格式表会自动调整大小。如果您需要应用它而不用管道传递到“ Format-Table”,则需要为特定类型的对象导入自定义FormatData xml。 (4认同)