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

PowerShell脚本执行顺序异常,需调整AD账号解锁前后查询流程

解决PowerShell脚本执行顺序异常(AD用户查询输出延迟)问题

你的问题根源是PowerShell的输出缓冲机制:Get-ADUser | select这类管道输出会被系统缓冲,直到脚本出现空闲或特定操作时才一次性输出;而Write-Host是直接写入控制台,因此导致两次AD用户查询结果都延迟到按键操作后才显示。

直接给每个Get-ADUser的输出链添加| Out-Host,强制将查询结果立即输出到控制台,即可让脚本严格按你期望的顺序执行:

Import-Module ActiveDirectory
Write-Host "This is set to unlock account in *REDACTED*"
$ADAcc = Read-Host -Prompt "Enter UserID of Account"
# 强制立即输出当前账号状态
Get-ADUser -Filter {name -like $ADAcc -or samaccountname -like $ADAcc} | select SamAccountName, Enabled | Out-Host
Write-Host "Press any key to continue unlocking account"
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Unlock-ADAccount -Server *REDACTED* -Identity $ADAcc
Start-Sleep -s 2
# 强制立即输出解锁后的账号状态
Get-ADUser -Filter {name -like $ADAcc -or samaccountname -like $ADAcc} | select SamAccountName, Enabled | Out-Host
Write-Host "Press any key to exit..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

另外还有两种可选的解决方式:

  • 用Format-Table替代select,格式化命令会触发立即输出:Get-ADUser ... | Format-Table SamAccountName, Enabled
  • 手动刷新输出缓冲:在Get-ADUser语句后添加[Console]::Out.Flush(),不过Out-Host的方式更直观易读。

修改后脚本会完全遵循你想要的流程:输入用户ID后立刻展示账号当前状态,按键确认后执行解锁,等待2秒后展示解锁后的状态,最后按键退出窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:37:42