查找此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"返回的错误为:
表达式或语句中的意外标记' in‘。
(<name> in <collection>)部分的正确格式是什么?
在我看来,在(之前的开场白$file似乎是错误的,因为我没有看到匹配的关闭),但这正是书中的例子。
发布于 2015-07-08 22:51:04
foreach和ForEach-Object是不同循环结构。后者用于处理管道输入,前者用于迭代列表,不能从管道中读取或写入管道(尽管有变通办法)。
foreach循环如下所示:
foreach ($item in $list) {
# do stuff with $item
}而ForEach-Object循环通常如下所示:
... | ForEach-Object {
# do stuff with current object variable $_
} | ...不过,您可以在一定程度上使用foreach循环来模拟ForEach-Object循环:
ForEach-Object -InputObject $list {
# do stuff with $_
}然而,循环变量仍然是“当前对象”自动变量 ($_)。
发布于 2015-07-08 19:29:45
这对我来说很管用:
$TEXTfile = $other = 0
ForEach ($file in Get-ChildItem C:\temp){
switch ($file.extension) {
".txt" {$TEXTfile++}
default {$other++} } }
#Display results
"$TEXTfile text files"
"$other other files"https://stackoverflow.com/questions/31301667
复制相似问题