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

如何用PowerShell合并两列至无空格分隔的单列并输出到TXT文件

解决PowerShell批量生成命令文本时命令与序列号间多余空格的问题

我需要批量生成可执行的命令文本,要求命令与序列号两部分之间无空格。现有脚本虽能生成TXT文件,但输出内容里命令和序列号之间会多出空格,不符合格式要求。

现有脚本

$command = "My command I need to run:" 

#prompt user for Destination OrgUnit

$OrgUnit = Read-Host "Paste the destination orgUnit here:"

#grab csv of serial numbers

Import-CSV -Path C:\CSV\serials.csv -Header serialnumber | ForEach-Object {
    [PSCustomObject] @{
        "myCommand" = $command
        "Serial" = $_.serialnumber
        "OrgUnit" = $OrgUnit
    } 
} | Out-File C:\CSV\Command.txt 

问题说明

原脚本输出的TXT文件中,命令(如My command I need to run:)与序列号之间会自动出现空格,例如:

My command I need to run: ABC1234 OU=Test,DC=domain,DC=com

而期望的格式是命令与序列号直接连接,无空格:

My command I need to run:ABC1234 OU=Test,DC=domain,DC=com

解决方法

方法1:事后替换(已采用的方案)

读取生成的文本文件,将命令末尾的: 替换为:,消除多余空格:

(Get-Content C:\CSV\Command.txt).replace(": ", ':') | Set-Content C:\CSV\Command.txt

方法2:根源避免(更优方案)

原问题的本质是输出PSCustomObject时,PowerShell会自动为不同属性添加空格分隔。可以直接在生成时拼接字符串,跳过对象输出步骤,从根源避免空格问题:

$command = "My command I need to run:" 

$OrgUnit = Read-Host "Paste the destination orgUnit here:"

Import-CSV -Path C:\CSV\serials.csv -Header serialnumber | ForEach-Object {
    # 直接拼接命令、序列号和组织单元,无多余空格
    "$command$($_.serialnumber) $OrgUnit"
} | Out-File C:\CSV\Command.txt 

这样生成的文本会直接符合格式要求,无需后续替换操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:48:16