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

如何用PowerShell将主机名与递归文件夹路径写入CSV指定列?

解决方案:生成含主机名和文件夹路径的CSV文件

嘿,我来帮你搞定这个CSV格式的问题!你之前的命令之所以会把所有内容堆在同一列,是因为你只是把主机名和文件夹列表分别追加到文件里,没有把它们配对成每行的两个字段。这里有个简洁且符合需求的PowerShell方案:

# 获取当前服务器主机名
$serverName = $env:COMPUTERNAME

# 递归获取指定驱动器下的所有文件夹完整路径
$folders = Get-ChildItem -Path "G:\" -Attributes Directory -Recurse | Select-Object -ExpandProperty FullName

# 构建包含Hostname和FolderPath的自定义对象集合
$csvContent = $folders | ForEach-Object {
    [PSCustomObject]@{
        Hostname    = $serverName
        FolderPath  = $_
    }
}

# 导出为CSV文件(去掉类型信息,使用UTF8编码避免乱码)
$csvContent | Export-Csv -Path ".\folder_list.csv" -NoTypeInformation -Encoding UTF8

关键说明:

  • 获取完整路径:用FullName属性替代原来的-Name参数,这样能得到类似G:\temp\folderB的完整绝对路径,符合你预期的格式。如果需要相对路径(比如相对于G:\的路径),可以把$_换成$_.FullName.Replace("G:\", "")。
  • 自定义对象配对:通过ForEach-Object遍历每个文件夹,把主机名和当前文件夹路径绑定成一个自定义对象,这样每个对象对应CSV的一行,自动分列为两列。
  • 专用CSV导出:Export-Csv是PowerShell专门处理CSV的命令,-NoTypeInformation会移除默认的类型注释行,-Encoding UTF8确保文件在不同系统下打开不会乱码。

如果你要在本地测试(比如用.\temp\路径),只需要把Get-ChildItem的-Path参数改成对应的路径即可,生成的CSV会自动每行都是LOCAL_COMPUTERNAME,C:\your\local\path\temp\folder1这样的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 17:17:41