在 ForEach 循环中运行程序
我正在尝试让这个简单的 PowerShell 脚本正常工作,但我认为有些事情根本上是错误的。 ;-)
ls | ForEach { "C:\Working\tools\custom-tool.exe" $_ }
我基本上想获取目录中的文件,并将它们作为参数一一传递给自定义工具。
I'm trying to get this simple PowerShell script working, but I think something is fundamentally wrong. ;-)
ls | ForEach { "C:\Working\tools\custom-tool.exe" $_ }
I basically want to get files in a directory, and pass them one by one as arguments to the custom tool.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您仍然需要在命令路径周围加上引号(例如,如果您有空格),只需这样做:
注意 & 的使用。 在字符串之前强制 PowerShell 将其解释为命令而不是字符串。
If you still need quotes around the command path (say, if you've got spaces), just do it like this:
Notice the use of & before the string to force PowerShell to interpret it as a command and not a string.
当每个对象沿着管道下降时,该工具将针对它运行。 在命令字符串周围加上引号会导致它成为...一个字符串! 局部变量“$_”可能不知道如何处理,因此会出现错误。
As each object comes down the pipeline the tool will be run against it. Putting quotes around the command string causes it to be... a string! The local variable "$_" it then likely doesn't know what to do with so pukes with an error.
我打赌你的工具需要完整路径。 $_ 是通过管道的每个文件对象。 您可能需要使用如下表达式:
I'm betting your tool needs the full path. The $_ is each file object that comes through the pipeline. You likely need to use an expression like this:
Jeffrey Hicks 和 slipsec 都是正确的。 把双引号去掉。
$_ 或 $_.fullname 在我的测试脚本中有效(如下)。 YMMV 与您的自定义工具。
或者
Both Jeffrery Hicks and slipsec are correct. Yank the double quotes off.
$_ or $_.fullname worked in my test script (below). YMMV with your custom-tool.
or