如何生成可作为PowerShell脚本参数的整数列表?
解决方法
直接传递整数数组即可,无需转成字符串:
$objList = 100..120 extract e: $objList
如果手里只有空格分隔的字符串(比如从外部复制而来),可以先拆分再传递:
$objListStr = "100 101 ... 120" extract e: ($objListStr -split " ")
若一定要通过字符串拼接的方式执行,也可以用Invoke-Expression(注意:该方式存在安全风险,仅在确认字符串内容安全时使用):
$objList = 100..120 -join " " Invoke-Expression "extract e: $objList"
问题根源
你之前用-join " "把数组转成单个字符串后,PowerShell会将这个字符串作为一个整体参数传给脚本,但脚本的ItemID参数需要多个System.Int64类型的整数,因此触发类型转换错误。
而直接在命令行粘贴字符串时,PowerShell的交互式解析器会自动把空格分隔的内容拆分成多个独立参数,这是命令行输入的特性,但变量传递时不会自动执行拆分操作。
你尝试的@符号无效,是因为如果$objList是字符串,@($objList)只是将其包装为单元素数组,本质还是单个参数,并没有实现拆分。必须确保传递的是多元素的整数数组,或者将字符串拆分为数组后再传递。
内容的提问来源于stack exchange,提问作者Alan T
相关产品推荐
相关产品推荐

