gpt4 book ai didi

powershell - 如何在 Powershell 中返回格式化为表格的自定义对象?

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

我对 powershell 还很陌生,所以如果我把这一切都弄错了,我一点也不会感到惊讶。我正在尝试创建一个函数,该函数在执行时打印格式化为表格的结果。也许甚至可以将这些结果通过管道传输到另一个函数以进行进一步分析。

这是我到目前为止所拥有的。这是一个简单的函数,它遍历路径列表并收集目录名称和该目录中的项目数,将数据放入哈希表中,并返回哈希表数组:

function Check-Paths(){
$paths =
"C:\code\DirA",
"C:\code\DirB"
$dirs = @()
foreach ($path in $paths){
if (Test-Path $path){
$len = (ls -path $path).length
}
else{
$len = 0
}
$dirName = ($path -split "\\")[-1]
$dirInfo = @{DirName = $dirName; NumItems = $len}
$dirs += $dirInfo
}
return $dirs

}

这似乎很简单。但是,当我运行命令时,这就是我得到的:
PS > Check-Paths

Name Value
---- -----
DirName DirA
NumItems 0
DirName DirB
NumItems 0

我想要的是这个:
DirName                       NumItems
------- --------
DirA 0
DirB 0

我可以破解我的函数以使用 write 语句,但我认为必须有更好的方法来做到这一点。有没有办法将数据格式化为表格,如果可以将数据通过管道传输到另一种方法,那就更好了?

最佳答案

怎么用

return new-object psobject -Property $dirs

这将返回一个对象,其属性与哈希表中的项目匹配。然后,您可以使用内置的 powershell 格式化 cmdlet 使其看起来像您想要的那样。由于您只有 2 个属性,因此默认情况下它将被格式化为表格。

编辑:这是整个事情的样子(在各种建议之后):
function Check-Paths(){
$paths =
"C:\code\DirA",
"C:\code\DirB"
$dirs = @()
foreach ($path in $paths){
if (Test-Path $path){
$len = (ls -path $path).length
}
else{
$len = 0
}
$dirName = ($path -split "\\")[-1]
new-object psobject -property @{DirName = $dirName; NumItems = $len}
}
}

关于powershell - 如何在 Powershell 中返回格式化为表格的自定义对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9540192/

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