gpt4 book ai didi

powershell - PowerShell v5.1选择对象控制台输出与v3.0不同

转载 作者:行者123 更新时间:2023-12-03 00:09:42 24 4
gpt4 key购买 nike

我刚刚将PowerShell从v3.0升级到v5.1,并注意到Select-Object和Format-Table的控制台输出的行为截然不同。如果某个属性的值太长,则所有后来的属性都会从控制台输出中完全分离出来(我可以看到所有值仍在传递,只是在控制台输出中被抑制了)。我想要一种简单的方法来复制2.0 / 3.0(4.0?)的旧行为,其中值会被截断以适合控制台中的所有属性,因为乍一看比较数据要容易得多,但是我不知道设法做到这一点。

这是一个示例:我创建一个哈希表数组,然后尝试在120个字符宽度的控制台中查看输出:

$array = @()
$array += New-Object PSObject -Property @{Name="Test1";Value1="samplestring";Value2="Omitted Text"}
$array += New-Object PSObject -Property @{Name="Test2";Value1="Much longer string. More than 120 characters, so that we can suppress Value2's console output. This sentence ought to do it.";Value2="Omitted Text"}
$array | select Name,Value1,Value2

在PS 2.0和3.0中,输出正是我想要的:
Name                                    Value1                                  Value2
---- ------ ------
Test1 samplestring Omitted Text
Test2 Much longer string. More than 120 ch... Omitted Text

...但是在5.1中,它似乎会自动应用Format-Table -AutoSize并给我以下信息:
Name  Value1
---- ------
Test1 samplestring
Test2 Much longer string. More than 120 characters, so that we can suppress Value2's console output. This sentence o...

我尝试摆弄Format-Table的计算属性,但是我无法使width属性起作用,老实说,指定每个属性的宽度对于我正在键入和运行的命令来说太繁琐了。我还缺少其他命令,还是我后悔升级?

最佳答案

我找不到解决办法将行为改回旧版本,
但是:我能够写出一些适合您需求的东西。

$array = @()
$array += New-Object PSObject -Property
@{Name="Test1";Value1="samplestring";Value2="Omitted Text"}
$array += New-Object PSObject -Property @{Name="Test2";Value1="Much longer string. More than 120 characters, so that we can suppress Value2's console output. This sentence ought to do it.";Value2="Omitted Text"}

$array | Format-table -Property @{ e='name'; width=40 }, `
@{ e='value1'; width=40 }, `
@{ e='value2'; width=40 }

另外,我认为我将在一个不相关的问题上表达我的两种看法。
随着数组大小的扩展,+ =运算符会降低性能,因为它必须
(据我所知)重新复制整个数组,然后向其添加下一个元素。如果您正在使用大型数据集并进行大量的添加和删除条目,则建议使用列表。

关于powershell - PowerShell v5.1选择对象控制台输出与v3.0不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52048223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com