Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将选择对象属性传递给cmdlet_Arrays_String_Function_Powershell_Arguments - Fatal编程技术网

Arrays 将选择对象属性传递给cmdlet

Arrays 将选择对象属性传递给cmdlet,arrays,string,function,powershell,arguments,Arrays,String,Function,Powershell,Arguments,我需要将属性传递给cmdlet。也就是说,我可以用一个电话 $SelList = "ProcessName,Handles" 然后 --它失败了。我的假设是这应该是一个字符串数组,而不是字符串。这是在函数调用中完成的,因此下一个调用可能会使用 $SelList = "ProcessName,Handles,ID" 传递单个值(例如,$SelList=“ProcessName”似乎有效。我的假设是我(真的,真的)忽略了这里的一些东西。是否使用了“选择对象”中的一个小ForEach循环?这似乎

我需要将属性传递给cmdlet。也就是说,我可以用一个电话

$SelList = "ProcessName,Handles" 
然后

--它失败了。我的假设是这应该是一个字符串数组,而不是字符串。这是在函数调用中完成的,因此下一个调用可能会使用

$SelList = "ProcessName,Handles,ID"

传递单个值(例如,
$SelList=“ProcessName”
似乎有效。我的假设是我(真的,真的)忽略了这里的一些东西。是否使用了“选择对象”中的一个小ForEach循环?这似乎有些过分,但(如前所述)我确信我忽略了一些东西。

那么,为什么不将数组传递过来呢

$filter = @('ProcessName','Handles','ID')
get-process | select $filter
此外,
Get Help Select Object
还显示以下内容:

Select-Object [[-Property] <Object[]>]
选择对象[[-属性]]

这意味着它接受数组

那么为什么不传入一个数组呢

$filter = @('ProcessName','Handles','ID')
get-process | select $filter
此外,
Get Help Select Object
还显示以下内容:

Select-Object [[-Property] <Object[]>]
选择对象[[-属性]]

这意味着它接受数组。答案是数组就是这样做的方法。所以$SelList=@('ProcessName','Handles')。。。在我的例子中,这并不能解决问题,因为传递数组仍然失败。然而,这是另一个问题

答案是数组就是这样做的方法。所以$SelList=@('ProcessName','Handles')。。。在我的例子中,这并不能解决问题,因为传递数组仍然失败。然而,这是另一个问题

只需像这样将列表值枚举到数组中,@()不是必需的:

$filter = 'ProcessName','Handles','ID'
get-process | select $filter

只需像这样将列表值枚举到数组中,@()不是必需的:

$filter = 'ProcessName','Handles','ID'
get-process | select $filter

我原以为可能是这样,但$CSV1_list=@('OriginalName','CreatedOn')导入Csv-Path“out.Csv”-Delimiter','Select-property$CSV1_list | Sort Object OriginalName会在“OriginalName CreatedOn”后面生成空格——如果我使用Select OriginalName,CreatedOn它会工作。见鬼,我相信这一点。使用Import Csv-Path“out.Csv”-Delimiter',“| Select-property*| Sort Object originalname”可以工作。我需要指定属性,因为所需的属性会随文件的不同而不同。好吧,我建议你接受这个答案并创建一个新的问题,因为你现在遇到的问题是完全不同的。是的,我不能与解析语法的答案争辩。。。我将不得不研究我的数组规范可能有什么问题。我感谢您的帮助。我本来认为可能是这样的,但是$CSV1_list=@('OriginalName','CreatedOn')导入Csv-Path“out.Csv”-Delimiter','Select-property$CSV1_list | Sort对象OriginalName会在“OriginalName CreatedOn”之后生成空格--如果我使用Select Originalname,CreatedOn它会工作。见鬼,我相信它。使用Import Csv-Path“out.Csv”-Delimiter',“| Select-property*| Sort Object originalname”可以工作。我需要指定属性,因为所需的属性会随文件的不同而不同。好吧,我建议你接受这个答案并创建一个新的问题,因为你现在遇到的问题是完全不同的。是的,我不能与解析语法的答案争辩。。。我将不得不调查我的阵列规范可能存在的问题。我感谢您的帮助。鉴于@4c74356b41已经提出了这个解决方案,我建议您删除此答案并接受他的建议(并发布一个关于任何剩余问题的新问题,正如所建议的)。我将添加一个后续问题。检查车轮后面的螺母。我的描述是$Sellist=@('ProcessName','Handles','ID')。那是一种(过度)简化。实际上,$Sellist1=@('ProcessName','Handles','ID')后面应该跟一个$Sellist2=@('ProcessName','ID')。。。如果你输入了一个错别字,而原本应该是$SelList2的内容与“$SelList1”完全不同,那么它就不起作用了。在我离开剧本一段时间后,我看到了它。我感谢你的纠正,因为我(显然)到处寻找不存在的东西。你现在的问题有一个明确的问题陈述,并得到了有用的答案。如果你接受其中一个(我推荐@4c74356b41),对未来的读者将是最大的好处。如果混音中还有另一个问题,而且仅仅是打字错误,那么在你的问题中把它作为旁白提出来,如果你认为它也代表了其他人的陷阱——而不是一次性的错误(我不完全理解你的评论)。然后你可以删除这个答案(如果你不这样做,它可能会吸引更多的反对票)。鉴于@4c74356b41已经提出了这个解决方案,我建议你删除这个答案并接受他的建议(并发布一个关于任何剩余问题的新问题,正如建议的那样)。我将添加一个后续问题。检查车轮后面的螺母。我的描述是$Sellist=@('ProcessName','Handles','ID')。那是一种(过度)简化。实际上,$Sellist1=@('ProcessName','Handles','ID')后面应该跟一个$Sellist2=@('ProcessName','ID')。。。如果你输入了一个错别字,而原本应该是$SelList2的内容与“$SelList1”完全不同,那么它就不起作用了。在我离开剧本一段时间后,我看到了它。我感谢你的纠正,因为我(显然)到处寻找不存在的东西。你现在的问题有一个明确的问题陈述,并得到了有用的答案。如果你接受其中一个(我推荐@4c74356b41),对未来的读者将是最大的好处。如果混音中还有另一个问题,而且仅仅是打字错误,那么在你的问题中把它作为旁白提出来,如果你认为它也代表了其他人的陷阱——而不是一次性的错误(我不完全理解你的评论)。然后,您可以删除此答案(如果不删除,可能会吸引更多的反对票)。您的答案与@4c74356b41重复,只是解释较少(除了省略
@(…)
,但这完全是偶然的,尤其是在没有解释差异的情况下)。我明白了,我们有时会错过别人先前存在的答案,并意外地重复它们