You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本开发:如何筛选根目录下的Directory类型对象并存储目录名

解决PowerShell筛选根目录目录并存储目录名的问题

没问题,我来帮你搞定这个PowerShell的目录筛选问题!之前你遇到的-ItemType Directory没生效的情况,大概率是使用方式或者路径的小问题,下面给你一步步的解决方案:

1. 正确筛选根目录下的Directory对象

首先,确保你使用的是正确的命令格式,针对根目录(比如C:\),直接用Get-ChildItem配合-ItemType Directory就能精准筛选目录,要是需要包含隐藏目录,记得加上-Force参数:

# 获取C盘根目录下的所有目录(含隐藏目录)
$rootDirectories = Get-ChildItem -Path "C:\" -ItemType Directory -Force

如果你的根目录是其他路径,替换"C:\"就行。要是还是觉得-ItemType不够灵活,也可以通过PowerShell内置的PSIsContainer属性来判断(目录的该属性为$true):

$rootDirectories = Get-ChildItem -Path "C:\" | Where-Object { $_.PSIsContainer }

2. 将目录名存储到数组或泛型列表

接下来你要提取目录名并存储,这里分两种方式:

方式一:存储到PowerShell数组(最简单)

直接提取目录的Name属性就能得到目录名数组:

# 一步到位获取目录名数组
$dirNamesArray = Get-ChildItem -Path "C:\" -ItemType Directory -Force | Select-Object -ExpandProperty Name

方式二:存储到你创建的泛型List

你之前创建了泛型列表,那可以通过ForEach-Object逐个添加,或者直接把数组转成列表:

# 初始化泛型List(建议指定string类型更严谨)
$sidepaths = New-Object System.Collections.Generic.List[string]

# 方式1:逐个添加目录名
Get-ChildItem -Path "C:\" -ItemType Directory -Force | ForEach-Object {
    $sidepaths.Add($_.Name)
}

# 方式2:先获取数组再转成List(更简洁)
$dirNamesArray = Get-ChildItem -Path "C:\" -ItemType Directory -Force | Select-Object -ExpandProperty Name
$sidepaths = [System.Collections.Generic.List[string]]$dirNamesArray

排查之前的问题

你之前用-ItemType Directory没生效,可能的原因:

  • 路径用了相对路径,建议改用绝对路径避免歧义
  • 没有加-Force,导致隐藏目录被过滤,看起来像是没筛选到
  • 权限问题:部分系统目录你没有访问权限,会被跳过,可以加上-ErrorAction SilentlyContinue来忽略错误

内容的提问来源于stack exchange,提问作者du7ri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 22:37:42