使用Powershell列出两级目录

时间:2016-06-10 13:33:02

标签: powershell directory-listing

到目前为止,我一直试图获得一个非常具体的目录列表但没有成功。

假设我有一个像这样的文件夹结构:

  • C:\的Inetpub \更新\ updatefolder1
  • C:\的Inetpub \更新\ updatefolder1 \网络\
  • C:\ inetpub \ updates \ updatefolder1 \ Web \(网站代码,结构继续)
  • C:\ inetpub \ updates \ updatefolder1 \ Scripts \(db scripts)
  • C:\的Inetpub \更新\ updatefolder2
  • C:\ inetpub \ updates \ updatefolder2 \ Web \(网站代码,结构继续)

现在,当我使用foreach时,它将如下所示:

$folders = Get-ChildItem $UpdateDir -Directory -Recurse -Depth 1 | Select-Object FullName

ForEach($folder in $folders) {
   $folder = folder.TrimStart("@{FullName=").TrimEnd("}") #To get a clean name
}

结果如下:

C:\inetpub\updates\updatefolder1
C:\inetpub\updates\updatefolder2
C:\inetpub\updates\updatefolder1\Web\
C:\inetpub\updates\updatefolder1\Web\ (site code, the structure goes on)
C:\inetpub\updates\updatefolder1\Scripts\ (db scripts)
C:\inetpub\updates\updatefolder2\Web\ (site code, the structure goes on)

哪个不行。 它应该是这样的:

C:\inetpub\updates\updatefolder1
C:\inetpub\updates\updatefolder1\Web\
C:\inetpub\updates\updatefolder1\Web\ (site code, the structure goes on)
C:\inetpub\updates\updatefolder1\Scripts\ (db scripts)
C:\inetpub\updates\updatefolder2
C:\inetpub\updates\updatefolder2\Web\ (site code, the structure goes on)

有什么新鲜的想法吗?我已经尝试过几个东西,除了foreach循环之外,还没有运气。

提前致谢。

1 个答案:

答案 0 :(得分:0)

不需要ForEach循环,可以在select对象中用-expandproperty替换它。如果我正确理解了这个问题,那么你提出的问题就是结果没有排序。答案是使用`Sort-Object'

对结果进行排序

实施例

$folders = Get-ChildItem $UpdateDir -Directory -Recurse -Depth 1 | 
     Select-Object -ExpandProperty fullname | 
     Sort-Object
$folders