如何用PowerShell将目录下文件夹名存入数组并排除指定文件夹
PowerShell 筛选子文件夹并排除特定项的正确写法
你的当前代码存在问题:Foreach-Object {$_.fullName -notmatch 'Pending'} 返回的是布尔值(True/False),而非你需要的文件夹名称数组,无法得到预期结果。以下是两种正确的实现方式:
方式一:通过路径模糊排除
如果需要排除路径中包含指定关键词的文件夹,可将过滤逻辑整合到 Where-Object 中,同时用 -Directory 参数直接筛选文件夹,简化代码:
$myMonthFoldersArray = Get-ChildItem $myPathToYearFolder -Directory | Where-Object { $_.FullName -notmatch 'PendingClaims' } | Select-Object -ExpandProperty FullName
方式二:精确匹配文件夹名称排除
如果只需要排除名称正好是PendingClaims的子文件夹(避免误删路径中其他含Pending的文件夹),可以针对文件夹名称做判断:
$myMonthFoldersArray = Get-ChildItem $myPathToYearFolder -Directory | Where-Object { $_.Name -ne 'PendingClaims' } | Select-Object -ExpandProperty FullName
额外说明
- 若你只需要文件夹的名称(而非完整路径),将代码中的
FullName替换为Name即可。 - PowerShell 3.0及以上版本支持
-Directory参数,若使用更低版本,可保留Where-Object {$_.PSIsContainer}替代。
内容的提问来源于stack exchange,提问作者mfgriggs
相关产品推荐
相关产品推荐

