让我们考虑一下这个文件夹树
SomeFolder\ User1\Desktop User2\Desktop User3\Desktop User4\Desktop User5\Desktop ...
现在,我的目标是扫描每个\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
可能需要一些时间,但最终会起作用。
答案 0 :(得分:1)
如果您只想返回Get-ChildItem
的前两个结果,则可以使用Select-Object
:
$Files = Get-ChildItem SomeFolder\*\Desktop -Filter *.txt -Recurse | Select-Object -First 2
这应该可以快速运行,因为Get-ChildItem
并没有完全枚举文件列表,管道在前两项之后中止了。
答案 1 :(得分:0)
这应该有效:
$folder = 'C:\work\SomeFolder'
gci $folder -Directory | %{
$files = Get-ChildItem "$($_.FullName)\Desktop" -Filter *.txt
Write-Host "$($_.Name) files"
$files.FullName
}
答案 2 :(得分:-2)
像这样?我不测试。
$folders = Get-ChildItem SomeFolder:\ -Directory -Filter "Desktop*"
foreach ($folder in $folders)
{
$Files = Get-ChildItem SomeFolder:\$folder -Filter *.txt -Recurse
}