PowerShell脚本调用批处理弹出新窗口,如何修改脚本解决?
解决PowerShell脚本调用时弹出新窗口的问题
嘿,我知道你为啥踩这个坑了——你当前的批处理代码里用了Start-Process powershell,这相当于让第一个PowerShell进程再启动另一个全新的PowerShell进程来执行脚本,所以哪怕你加了-windowstyle hidden,那也是给第一个进程加的,新启动的那个进程还是会弹出窗口,NoNewWindow参数也没起作用,因为你没在正确的地方用它。
直接改批处理代码就行,把嵌套的Start-Process去掉,让第一个PowerShell进程直接执行你的脚本:
@echo off set scriptFileName=%~n0 set scriptFolderPath=%~dp0 set powershellScriptFileName=test.ps1 powershell.exe -WindowStyle Hidden -ExecutionPolicy Bypass -NoProfile -NoExit -Command "& '%scriptFolderPath%%powershellScriptFileName%'"
额外提示:如果你的PowerShell脚本里还要调用批处理
要是test.ps1内部有调用批处理文件的逻辑,也要确保不弹出新窗口,你可以这么写:
# 方式1:直接通过cmd.exe执行,不会新开窗口 & cmd.exe /c "C:\路径\你的批处理文件.bat" # 方式2:用Start-Process的话,必须加-NoNewWindow参数 Start-Process -FilePath "cmd.exe" -ArgumentList "/c C:\路径\你的批处理文件.bat" -NoNewWindow -Wait
这样不管是启动脚本的批处理,还是脚本内部调用批处理,都不会弹出额外的窗口啦~
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

