所以我有一个类似于下面的文件夹结构:
\\server\drive\code\serverName
如果我在Get-ChildItem
上运行\\server\drive
,它将返回:
\\server\drive\code\
\\server\drive\code\serverName
(还有更多结果,这只是一个例子)
我只关心:
\\server\drive\code\serverName
所以我留下了在该驱动器上使用存储的服务器列表 - 因为我将使用它来计算每个服务器使用多少存储空间。
如何使用GCI
获取\\server\drive\code\serverName
个文件夹并忽略父文件夹\\server\drive\code\
答案 0 :(得分:1)
我和伯爵有类似的结论。我的解决方案略有不同。
$basePath = "c:\temp"
$baseLevels = $basePath.Split("\").Count - 1
$levelsDeep = 2
Get-ChildItem -Recurse -Directory -Path $basePath | Where-Object{(($_.FullName).Split("\").Count - $baseLevels - 1) -eq $levelsDeep}
变量$basePath
,$baseLevels
和$levelsDeep
使这更加动态。取$basePath
并计算它的级别,以便我们的计算基于$levelsDeep
的{{1}}。因此,这将返回$basePath
2
级别的所有目录
两个计算中的C:\temp
是一种忽略驱动器的方法,在我的例子中是C:\,因为它不是"文件夹"
答案 1 :(得分:0)
我对任何感兴趣的人都提出了以下解决方案。我能想到的唯一简单方法是计算" \"通过正则表达式包含在每一行中。
ForEach($var in $path.FullName){
If(([regex]::matches($($var),"\\").count) -eq 4){
#Ignored as this is first parent level folder
}else{
$var >> C:\Paths.txt
}
}