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

PowerShell脚本输出合并问题:如何拆分两组数组输出?

问题解决:PowerShell数组输出顺序错乱的修复

问题根源

你的脚本出现输出合并、顺序错乱的核心原因有两个:

  1. PowerShell输出流机制:直接输出对象(如$array1)会被送入Success流,PowerShell会缓冲这类输出,直到脚本执行完毕才统一格式化输出;而Write-Host是直接写入Host流(实时打印到控制台),两者的输出顺序会因此错位。
  2. 语法错误:$$array2是无效的变量名,多余的$会导致变量赋值失败,最终输出的还是之前的缓存内容。

修正后的脚本

###Get todays date
$Datestr = $Date.Date.ToString( "dd/MM/yyyy *")

##Display output
Write-Host "All Users logged on today..."
###pipe query into array1
$array1 = $Logonsfound | Select Username, LogonType, LastLogon | Where-Object LastLogon -Like $Datestr | Sort { $_.Lastlogon } -Descending
##Display array1(强制立即输出)
$array1 | Out-Host

####添加分隔空行
Write-Host "`n`n"

##Display output
Write-host "The Single User:" 
###pipe query into array2(修正变量名)
$array2 = ($Logonsfound | Select Username, LogonType, LastLogon | Where-Object LastLogon -Like $Datestr | Sort { $_.Lastlogon } -Descending)[0]
##Display array2(强制立即输出)
$array2 | Out-Host

关键修正点说明

  • 修正变量名:将$$array2改为$array2,确保变量正确赋值。
  • 使用Out-Host强制实时输出:Out-Host会直接将对象格式化后打印到控制台,绕过Success流的缓冲机制,保证输出顺序和代码执行顺序一致。
  • 调整空行数量:把Write-Host "n"改为Write-Host "nn"`,让分隔效果更贴近你的期望输出。

验证效果

修正后执行脚本,输出会严格按照代码顺序展示:

  1. 先打印"All Users logged on today..."
  2. 立即输出$array1的完整表格
  3. 显示空行分隔
  4. 打印"The Single User:"
  5. 立即输出$array2的单行表格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:35:27