正在寻找此 ForEach-Object
的正确格式。我正在阅读一本介绍 PowerShell 的书。书中的一个示例如下,但该示例不起作用。
$TEXTfile = $other = 0
ForEach-Object ($file in (Get-Childitem C:\PSLearn) {
switch ($file.extension) {
".txt" {$TEXTfile++}
default {$other++}
}
}
#Display results
"$TEXTfile text files"
"$other other files"
返回的错误是:
Unexpected token 'in' in expression or statement.
(<name> in <collection>)
的正确格式是什么?部分?
左括号(
之前$file
对我来说似乎是错误的,因为我没有看到匹配的右括号 )
,但这正是书中的例子。
最佳答案
foreach
和 ForEach-Object
是 different loop constructs 。后者用于处理管道输入,前者用于迭代列表,并且无法读取或写入管道(尽管有解决方法)。
foreach
循环如下所示:
foreach ($item in $list) {
# do stuff with $item
}
而 ForEach-Object
循环通常如下所示:
... | ForEach-Object {
# do stuff with current object variable $_
} | ...
不过,您可以在某种程度上使用 ForEach-Object
循环来模拟 foreach
循环:
ForEach-Object -InputObject $list {
# do stuff with $_
}
但是,循环变量仍然是“当前对象”automatic variable ($_
)。
关于powershell-2.0 - ForEach-Object 中出现意外标记 "in",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301667/