作为PowerShell脚本的一部分,我想生成两个不同文件夹的子文件夹列表。我通过调用Get-ChildItem
两次,使用Select-Object
转换路径并尝试合并结果来解决此问题。然而,这是我陷入困境的结合步骤。我试过这个:
$cur = Get-Location
$mainDirs = Get-ChildItem -Directory -Name | Select-Object {"$cur\$_"}
$appDirs = Get-ChildItem -Directory -Name Applications\Programs |
Select-Object {"$cur\Applications\Programs\$_"}
$dirs = $mainDirs,$appDirs #Doesn't work!
但$dirs
最终由$mainDirs
中的条目组成,后面跟$appDirs
中的多个项目一样多。
如何在PowerShell中组合这些?
修改:mainDirs[0]
的输出:
"$cur\$_" --------- D:\somefolder\somesubfolder
appDirs[0]
的输出:
"$cur\Applications\Programs\$_" ------------------------------- D:\somefolder\Applications\Programs\othersubfolder
答案 0 :(得分:3)
Get-ChildItem
接受字符串数组作为输入。只需将要列出的子文件夹的两个文件夹作为数组传递。展开FullName
属性以获取子文件夹的路径:
$folders = '.', '.\Applications\Programs'
$dirs = Get-ChildItem $folders -Directory | Select-Object -Expand FullName
如果你想要相对而不是绝对路径从路径字符串的开头删除当前目录:
$pattern = '^{0}\\' -f [regex]::Escape($PWD.Path)
$folders = '.', '.\Applications\Programs'
$dirs = Get-ChildItem $folders -Directory |
ForEach-Object { $_.FullName -replace $pattern }