当我在只有一个文件的目录中运行Get-ChildItem
时,我得到一个DirectoryInfo
对象:
PS H:\> (ls).GetType().Name
DirectoryInfo
一旦我添加第二个文件,输出就变成一个数组:
PS H:\> (ls).GetType().Name
Object[]
我应该如何在函数中处理这种二分法?理想情况下,即使只有一个元素,我也想强制它返回Array
,最好不必根据GetType()
或Length
的结果放入条件逻辑。
答案 0 :(得分:7)
使用数组运算符@()
:$Array=@(ls)
。即使管道返回零或一个对象,该运算符也保证您将拥有一个数组。
答案 1 :(得分:0)
扩展PetSerAl的答案,你也可以更明确地转换你需要的类型:
[array](ls)
会为您提供一个包含单个成员的System.Array
对象,因此您可以在想要避免创建新变量但需要特定类型的地方使用此对象[int[]]$integersOnly = 1,2,3
将为您提供一个System.Array
对象,该对象只能包含[int]
类型的对象[System.Collections.ArrayList](ls)
这样做,享受使用Remove()
方法其他一些提示,而我在谈论它:
Get-Member
,这是我能想到的最有用的命令;它会向您展示您可以使用该对象执行的所有操作[<class_name_here>]
即可加载程序集,它会显示您想要知道的所有内容