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

PowerShell脚本TXT转CSV遇列配置问题:需计算机名与成员列

解决PowerShell TXT转CSV时的列配置问题

你的核心问题是原脚本没有正确识别计算机名和成员的对应关系,而是把每行内容按空格/逗号拆分成了多列。根据你的需求,以下提供两种针对性的解决方案,对应不同的TXT输入格式:

情况1:TXT每行包含计算机名和成员(用多空格分隔)

如果你的TXT文件格式是每行对应一个计算机-成员对,且两者用至少2个空格分隔(类似PC-01 DOMAIN\Admin1),使用以下脚本:

$inputFilePath = "\\path\localaccounts\path.txt"
$outputFilePath = "\\path\localaccounts\path.csv"

# 读取文件并跳过前两行冗余内容
$lines = Get-Content $inputFilePath | Select-Object -Skip 2

$results = foreach ($line in $lines) {
    # 跳过空行
    if ([string]::IsNullOrWhiteSpace($line)) { continue }
    
    # 按至少2个空格分割为两部分,确保成员中含空格也不会被拆分
    $parts = $line -split "\s{2,}", 2
    if ($parts.Count -ge 2) {
        [PSCustomObject]@{
            计算机名 = $parts[0].Trim()
            成员     = $parts[1].Trim()
        }
    }
}

# 导出为指定列的CSV
$results | Export-Csv -NoTypeInformation -Path $outputFilePath -Encoding UTF8

情况2:TXT按组排列(计算机名单独一行,后续行是对应成员)

如果你的TXT格式是先出现计算机名,后续行是该计算机的管理员成员(类似:

PC-01
DOMAIN\Admin1
Local\User2
PC-02
DOMAIN\Admin2
```),使用以下脚本:

```powershell
$inputFilePath = "\\path\localaccounts\path.txt"
$outputFilePath = "\\path\localaccounts\path.csv"

$lines = Get-Content $inputFilePath | Select-Object -Skip 2
$currentComputer = $null
$results = @()

foreach ($line in $lines) {
    $line = $line.Trim()
    if ([string]::IsNullOrWhiteSpace($line)) { continue }
    
    # 简单判断:成员行包含反斜杠,计算机名不包含(可根据实际格式调整判断规则)
    if ($line -notmatch "\\") {
        $currentComputer = $line
    }
    else {
        if ($currentComputer) {
            $results += [PSCustomObject]@{
                计算机名 = $currentComputer
                成员     = $line
            }
        }
    }
}

$results | Export-Csv -NoTypeInformation -Path $outputFilePath -Encoding UTF8

关键改进点

  • 直接创建含计算机名和成员属性的自定义对象,确保CSV输出固定列
  • 针对不同的TXT格式调整分割/识别逻辑,避免无效拆分
  • 加入空行过滤,提升脚本健壮性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:43:12