【发布时间】:2018-07-04 21:52:56
【问题描述】:
让我们考虑一下这个文件夹树,
某个文件夹\ 用户 1\桌面 用户 2\桌面 用户 3\桌面 用户 4\桌面 用户 5\桌面 ...现在,我的目标是扫描每个 \Desktop 文件夹以查找特定类型的文件。我能够找到如何使用Get-ChildItem 搜索特定类型,但我似乎无法获得循环遍历每个用户然后查看他们各自桌面的符号。
这是我的尝试,
for($i=0;$i -le 2;$i++){
$Files = Get-ChildItem SomeFolder\*\Desktop -Filter *.txt -Recurse
return $Files
}
注意
我添加了一个 for 循环,以尽量减少将被扫描的用户数量。但它显然不起作用,因为它只是继续运行。
编辑
@Vivek Kumar Singh 的道具强调了我的代码中的一个问题。我的 for 循环实际上是多余的,这使执行时间变得不必要地长。只调用
$Files = Get-ChildItem SomeFolder\*\Desktop -Filter *.txt -Recurse
可能需要一些时间,但最终会奏效。
【问题讨论】:
-
这段代码
Get-ChildItem SomeFolder\*\Desktop -Filter *.txt -Recurse对我来说工作正常。使用for循环来限制用户数量是多余的,因为路径中的 asterik(*) 将对所有用户进行递归搜索。即使您想限制用户数量,也有更好的方法来限制它,而不是使用带有变量的 for 循环(在这种情况下为$i),因为在您的代码中没有使用它。 -
@VivekKumarSingh 是的,我认为我的第一次尝试还可以。你真的发现了我的错误。做我的 for 循环实际上是多余的,是什么导致了问题。我不止一次地重新处理
Get-ChildItem,这导致它非常慢。但是,这是正确的答案。
标签: powershell iteration