在我的脚本中,我运行$data = gci d:\ -recurse -force
一次,然后我将输出用于不同目的,如文件或文件夹报告,因此无法使用Where-Object
过滤main gci命令。现在对于特定的表,我需要通过函数参数从用户指定的目录中的$ data输出中检索文件。这里我用于文件夹:
$regexPath = [regex]::Escape($SpecificDirectory)
$folders = $data | ? {$_.Attributes -eq "Directory" -and $_.FullName -match "^$regexPath"}
但是我不知道如何使用我的$ Data变量的输出来从特定文件夹中获取文件。
答案 0 :(得分:1)
不确定您正在寻找什么,但以下内容将为您提供d:\ temp \ vm文件夹中的所有文件:
$ data = gci d:\ -recurse -force
$ data |其中{$ _.DirectoryName-like" D:\ temp \ vm" }
答案 1 :(得分:1)
您获取的文件与获取文件夹的方式相同,只是您反转了对象类型的检查(从-eq "Directory"
到-ne "Directory"
)。
我建议进行一些优化:
PSIsContainer
属性是区分文件和文件夹的更简单方法。-like
)提供比正则表达式匹配(运算符-match
)更好的性能。尝试这样的事情:
$data | ? {-not $_.PSIsContainer -and $_.FullName -like "$SpecificDirectory\*"}
如果您只想要$SpecificDirectory
中的文件,而不是其子目录中的文件,您还可以执行以下操作:
$data | ? {-not $_.PSIsContainer -and $_.DirectoryName -eq $SpecificDirectory}