windows - 自定义 psobject 截断使用 add-member 添加的结果
问题描述
我有两个集群,cluster1 有 5 个节点,cluster2 有 4 个节点。使用以下脚本,cluster1 输出被截断。如何解决这个问题?
PS C:\WINDOWS\system32> $temp = @()
PS C:\WINDOWS\system32> foreach($i in @('cluster1','cluster2')){
>> $pso = New-Object -TypeName psobject
>> $cluster = Get-Cluster $i | select name
>> $cluster_nodes = Get-ClusterNode -Cluster $cluster.Name | select name
>> $pso | Add-Member -MemberType NoteProperty -Name 'Cluster' -Value $cluster.Name
>> $pso | Add-Member -MemberType NoteProperty -Name 'Cluster_nodes' -Value $cluster_nodes.name
>> $temp += $pso
>> }
输出:
PS C:\WINDOWS\system32> $temp
Cluster Cluster_nodes
------- -------------
cluster1 {node1, node2, node3, node4...}
cluster2 {node1, node2, node3, node4}
解决方案
AdminOfThings在对该问题的评论中提供了关键指针:
首选项变量$FormatEnumerationLimit
控制在格式化输出中显示的集合值属性的元素数量。
例如,$FormatEnumerationLimit = 2; [pscustomobject] @{ prop = 1, 2, 3 }
从 ' 的值中打印(最多)2 个元素,.prop
并用 ; 提示存在更多的元素...
;例如,{1, 2...}
)。
默认值为
4
,但您可以将其设置为任意正值。-1
对显示的值数量没有限制,但请注意,对于表格输出(隐式或显式Format-Table
),列宽仍可能截断值列表。- 管道以
Format-List
确保显示所有值。
- 管道以
警告:由于PowerShell [Core] 7.0的错误$FormatEnumerationLimit
,设置仅在全局范围内有效 - 请参阅此 GitHub 问题。
- 作为脚本中的解决方法,临时修改全局副本 , (在退出脚本之前将其恢复为原始值)。
$global:FormatEnumerationLimit
推荐阅读
- java - Quarkus REST API with Hibernate/Panache - 端点查询 Postgres 存储过程
- gitversion - GitVersion 会根据 Mainline 模式下的分支以不同方式递增
- jira - 有没有一个很好的例子来递归 Jira 宏的结果在汇合和有条件地格式化行?
- r - 为“加载”和“保存”进程创建循环
- flutter - 需要使用 Expanded 小部件以避免溢出,但没有得到所需的大小
- c - 如何从 libxml2 中删除 '&'-words 编码?
- sql - 如何使用 sql 在数据块上创建带有嵌套映射的表
- c++ - QGraphicsItemGroup 和子级调整大小
- windows - 根据结果更改颜色的 Ping 监控批处理脚本?
- sql - 使用“匿名”表值参数执行存储查询