我有一个完全工作的PS脚本,它期望一组整数,这些整数都是要从库复制到闪存驱动器上的对象编号。此命令类似于:
提取e:1234 1235 1236
它工作正常-它只是循环$args[1..n]并将对象相关文件复制到闪存驱动器(e:例中)。
通常有一个很大的连续的对象编号集(通常是6位数的),输入它们是一件苦差事。所以,当我发现n.. n技巧时,我想我会像这样使用它(复制对象100-120):
$objList = 100..120 -join““然后
提取e:$objList
但是没有,我的脚本似乎将$objList视为单个字符串,而不是空格分隔的列表,我得到:
DBCheckItemExists : Cannot process argument transformation on parameter 'ItemID'. Cannot convert
value "100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120" to type
"System.Int64". Error: "Input string was not in a correct format."
显然PS认为这不能转换成一组整型参数
如果我把$objList的内容写在屏幕上,我会得到预期的结果:
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
如果我将其剪切并粘贴到提取命令行上,则可以工作。所以很明显这是某种数据类型的问题,所以我试着用@ symbol作为变量和范围的前缀,使它们成为字符串-但是没有,我只是得到了错误消息。
一定有什么明显的东西我错过了这里-但我不知所措!有人能帮忙吗?先谢谢你了。
1条答案
按热度按时间7vux5j2d1#
使用
-join " "
可以将列表转换为字符串。另一种方法是在函数中解析列表,例如:测试它:
输出:
将函数转换为使用
process
块来处理输入可能是一个好主意,例如参见this post。