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

PowerShell v2下筛选含.php文件的唯一域名文件夹的问题求助

解决PowerShell v2中筛选含PHP文件的域名文件夹问题

你的代码问题出在只指定了D:\domains下的第二个域名文件夹(通过[1]索引硬编码选择),所以自然只能输出单个结果。要实现遍历所有域名文件夹并筛选出包含.php文件的唯一域名,我们得调整逻辑,同时适配PowerShell v2的特性——毕竟v2没有-Directory/-File这类便捷参数,得靠PSIsContainer属性来区分文件夹和文件。

完整解决方案代码

# 1. 获取D:\domains下的所有域名文件夹(过滤出子文件夹)
# 2. 逐个检查每个域名下是否存在.php文件(递归查找,找到第一个就停止以节省资源)
# 3. 收集符合条件的域名名称
$targetDomains = Get-ChildItem -Path D:\domains | Where-Object {$_.PSIsContainer} | ForEach-Object {
    $hasPhp = Get-ChildItem -Path $_.FullName -Recurse -Filter *.php | Where-Object {!$_.PSIsContainer} | Select-Object -First 1
    if ($hasPhp) { $_.Name }
}

# 去重(确保域名唯一)并以逗号分隔输出
($targetDomains | Sort-Object -Unique) -join ','

代码细节说明

  • 筛选文件夹:用Where-Object {$_.PSIsContainer}替代v2不支持的-Directory参数,确保只处理D:\domains下的子文件夹(也就是各个域名目录)。
  • 高效检查PHP文件:用Select-Object -First 1,只要找到第一个.php文件就停止遍历,避免不必要的性能消耗。
  • 输出格式:通过-join ','把结果拼接成逗号分隔的字符串,完全符合你给出的示例格式。

如果想直接一行执行,也可以写成:

(Get-ChildItem D:\domains | Where {$_.PSIsContainer} | ForEach {if (Get-ChildItem $_.FullName -Recurse -Filter *.php | Where {!$_.PSIsContainer} | Select -First 1) {$_.Name}}) | Sort -Unique | % {$_} -join ','

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:42:56