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

如何编写PowerShell脚本仅最大化并层叠所有记事本窗口?

仅针对记事本窗口:先最大化再层叠排列的PowerShell脚本修正

原脚本存在语法错误和逻辑问题,无法精准筛选记事本窗口,以下是修正后的解决方案:

原脚本问题点

  • Where-Object过滤逻辑写错,把条件拆分到MainWindowTitle之后,无法正确筛选目标进程
  • 用Description -like '*note*'筛选记事本不够精准,容易误匹配其他带"note"关键词的程序
  • 层叠操作放在循环内部重复执行,效率低且没必要

修正后的脚本

# 抓取所有带可视化窗口的记事本进程
$notepadWindows = Get-Process notepad | Where-Object { $_.MainWindowHandle -ne 0 }

# 提前创建Shell对象,避免循环内重复实例化浪费资源
$wshell = New-Object -ComObject wscript.shell

foreach ($win in $notepadWindows) {
    # 激活目标记事本窗口
    $wshell.AppActivate($win.MainWindowTitle)
    # 等待窗口响应,可根据实际系统流畅度调整时长
    Start-Sleep -Milliseconds 500
    # 发送Alt+X快捷键最大化窗口(若此快捷键无效,可替换为"{ALT} {X}")
    $wshell.SendKeys("% x")
    Start-Sleep -Milliseconds 500
}

# 所有记事本窗口最大化完成后,统一执行层叠排列
$shellApp = New-Object -ComObject Shell.Application
$shellApp.CascadeWindows()

核心优化说明

  • 精准定位记事本:直接通过进程名notepad抓取目标进程,再用MainWindowHandle -ne 0确保是有可视化窗口的实例,排除后台无窗口的异常进程
  • 减少资源消耗:把Shell对象的创建移到循环外,避免每次循环重复创建COM对象
  • 优化操作流程:层叠操作放在所有窗口最大化完成后执行,保证排列效果符合预期
  • 灵活调整等待时间:用毫秒级等待替代1秒休眠,平衡操作稳定性和执行效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:26:08