gpt4 book ai didi

powershell - 如何判断Powershell中有多个对象?

转载 作者:行者123 更新时间:2023-12-02 23:28:33 25 4
gpt4 key购买 nike

我有以下功能。

function Get-MultipleData 
{
Get-Date
'Hello'
1+4
}

$date, $text, $result = Get-MultipleData

"The date is $date"
"The text was $text"
"The result is $result"

我知道它会返回3个可以使用的不同对象。如果我只是做
$ res = Get-MultipleData

我该如何检查$ res对象并弄清楚还有2个与该结果关联的对象?

2014年8月8日更新:

这是一个不同的函数,它显示了我什至更好的问题:
function query-DB {
param ($query, $db)
$OpenStatic = 3
$LockOptimistic = 3
$RecordSet=new-object -comobject ADODB.Recordset
$RecordSet.Open($Query, $db, $OpenStatic, $LockOptimistic)
$RecordSet
$Recordset | select -expandproperty Source
}

这指向Access数据库。

如果我叫这个 $outinfo = query-db "select * from tb" $accessDBconnection
我得到这个结果:
Properties       : System.__ComObject
AbsolutePosition : 1
ActiveConnection : System.__ComObject
BOF : False
Bookmark : 512
CacheSize : 1
CursorType : 1
EOF : False
Fields : System.__ComObject
LockType : 3
MaxRecords : 0
RecordCount : 1088
Source : select * from tb
[...]

我没有办法找回连接字符串。如果我做
$outinfo, $str = query-db "select * from tb" $accessDBconnection

现在,我足够容易地取出两个物体。

我怎样才能从这样的调用中得知那些多个对象是什么?

最佳答案

如miltonb所建议,使用foreach-object通常最简单,这避免了直接枚举的需要。

但是,如果确实需要该数字,则不能依赖count属性。这是因为不能依赖函数来返回数组。如果函数试图返回包含单个成员的数组,则将其“展平”并返回单个成员。如果成员是简单字符串,则count将不存在。所以-如果是object.count -eq $null,则您只有一个值。

有两种公认的处理方式:

方法1-强制结果为数组,例如

$result = @( get-multipledata )
write-host $result.count

方法2-使用 measure-object
$result = get-multipledata
write-host ( $result | measure-object ).count

有关“扁平化”的章节,请参见基思·希尔的文章:

http://rkeithhill.wordpress.com/2007/09/24/effective-powershell-item-8-output-cardinality-scalars-collections-and-empty-sets-oh-my/)

关于powershell - 如何判断Powershell中有多个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25172956/

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