我可以使用以下命令递归地获取所有子项:
Get-ChildItem -recurse但是有没有办法限制深度呢?例如,如果我只想向下递归一个或两个级别?
发布于 2012-11-06 19:52:18
使用此选项可将深度限制为2:
Get-ChildItem \*\*\*,\*\*,\*它的工作方式是返回每个深度为2、1和0的子元素。
解释:
此命令
Get-ChildItem \*\*\*返回深度为两个子文件夹的所有项。添加\*会添加一个要搜索的附加子文件夹。
与OP问题一致的是,要限制使用get-子项目的递归搜索,您需要指定可以搜索的所有深度。
发布于 2016-01-26 06:46:25
As of powershell 5.0,现在可以在Get-ChildItem中使用-Depth参数了!
您可以将其与-Recurse结合使用,以限制递归。
Get-ChildItem -Recurse -Depth 2发布于 2012-11-06 22:39:11
尝试此函数:
Function Get-ChildItemToDepth {
Param(
[String]$Path = $PWD,
[String]$Filter = "*",
[Byte]$ToDepth = 255,
[Byte]$CurrentDepth = 0,
[Switch]$DebugMode
)
$CurrentDepth++
If ($DebugMode) {
$DebugPreference = "Continue"
}
Get-ChildItem $Path | %{
$_ | ?{ $_.Name -Like $Filter }
If ($_.PsIsContainer) {
If ($CurrentDepth -le $ToDepth) {
# Callback to this function
Get-ChildItemToDepth -Path $_.FullName -Filter $Filter `
-ToDepth $ToDepth -CurrentDepth $CurrentDepth
}
Else {
Write-Debug $("Skipping GCI for Folder: $($_.FullName) " + `
"(Why: Current depth $CurrentDepth vs limit depth $ToDepth)")
}
}
}
}source
https://stackoverflow.com/questions/13249085
复制相似问题