到目前为止,我一直试图获得一个非常具体的目录列表但没有成功。
假设我有一个像这样的文件夹结构:
现在,当我使用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循环之外,还没有运气。
提前致谢。
答案 0 :(得分:0)
不需要ForEach循环,可以在select对象中用-expandproperty
替换它。如果我正确理解了这个问题,那么你提出的问题就是结果没有排序。答案是使用`Sort-Object'
$folders = Get-ChildItem $UpdateDir -Directory -Recurse -Depth 1 |
Select-Object -ExpandProperty fullname |
Sort-Object
$folders