如何运行PowerShell脚本而不向用户显示窗口或任何其他符号?
换句话说,脚本应该在后台安静地运行,而不需要向用户发出任何信号。
不使用第三方组件的答案可获得额外分数:)
如何运行PowerShell脚本而不向用户显示窗口或任何其他符号?
换句话说,脚本应该在后台安静地运行,而不需要向用户发出任何信号。
不使用第三方组件的答案可获得额外分数:)
当前回答
powershell.exe -windowstyle hidden -noexit -ExecutionPolicy Bypass -File <path_to_file>
然后设置运行:最小化
应该像预期的那样工作,而没有添加隐藏窗口闪光的代码 只是稍微延迟了一点。
其他回答
在我尝试过的所有解决方案中,这是迄今为止最好和最容易设置的。从这里下载hiddenw.exe - https://github.com/SeidChr/RunHiddenConsole/releases
假设您希望运行Powershell v5无控制台。只需将hiddenw.exe重命名为powershell .exe。如果您想为cmd执行此操作,则重命名为cmdw.exe。如果要为Powershell v7 (pwsh)执行此操作,则重命名为pwshw.exe。您可以创建多个副本的hidden .exe,只是重命名为实际进程与字母w在末尾。然后,只需将该流程添加到系统环境PATH中,这样就可以从任何地方调用它。或者复制到C:\Windows。然后,像这样调用它:
powershellw ps1 \操作。
这里有一种不需要命令行参数或单独启动器的方法。它并不是完全不可见的,因为在启动时确实会暂时显示一个窗口。但它很快就消失了。如果你想通过双击资源管理器或通过开始菜单快捷方式(当然包括启动子菜单)启动脚本,我认为这是最简单的方法。我喜欢它是脚本本身代码的一部分,而不是外部的东西。
把这个放在你的脚本前面:
$t = '[DllImport("user32.dll")] public static extern bool ShowWindow(int handle, int state);'
add-type -name win -member $t -namespace native
[native.win]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0)
我发现编译成exe是实现这一目标最简单的方法。有许多方法来编译一个脚本,但你可以尝试ISE类固醇
打开“Windows PowerShell ISE”,安装并运行ISESteroids:
Install-Module -Name "ISESteroids" -Scope CurrentUser -Repository PSGallery -Force
Start-Steroids
然后转到工具->将代码转换为EXE,选择“隐藏控制台窗口”,然后创建应用程序。 您可以直接从任务调度程序运行,而不需要包装器或第三方应用程序。
下面是windows 10中不包含任何第三方组件的工作解决方案。它的工作原理是将PowerShell脚本包装到VBScript中。
第一步:我们需要改变一些windows特性,允许VBScript运行PowerShell,并默认使用PowerShell打开。ps1文件。
-运行并输入“regedit”。单击ok,然后允许它运行。
-粘贴此路径"HKEY_CLASSES_ROOT\Microsoft.PowerShellScript. "1\Shell”并按enter键。
-现在打开右边的条目并将值更改为0。
-以管理员身份打开PowerShell,输入“Set-ExecutionPolicy -ExecutionPolicy remotessigned”,按enter并确认更改“y”,然后输入。
步骤2:现在我们可以开始包装脚本了。
-将Powershell脚本保存为.ps1文件。
-创建一个新的文本文档并粘贴这个脚本。
Dim objShell,objFSO,objFile
Set objShell=CreateObject("WScript.Shell")
Set objFSO=CreateObject("Scripting.FileSystemObject")
'enter the path for your PowerShell Script
strPath="c:\your script path\script.ps1"
'verify file exists
If objFSO.FileExists(strPath) Then
'return short path name
set objFile=objFSO.GetFile(strPath)
strCMD="powershell -nologo -command " & Chr(34) & "&{" &_
objFile.ShortPath & "}" & Chr(34)
'Uncomment next line for debugging
'WScript.Echo strCMD
'use 0 to hide window
objShell.Run strCMD,0
Else
'Display error message
WScript.Echo "Failed to find " & strPath
WScript.Quit
End If
-现在更改文件路径到你的。ps1脚本的位置,并保存文本文档。
-现在右键单击文件并重命名。然后将文件名扩展名更改为.vbs,按enter键,然后单击确定。
完成了!如果你现在打开.vbs,当你的脚本在后台运行时,你应该看不到控制台窗口。
powershell.exe -windowstyle hidden -noexit -ExecutionPolicy Bypass -File <path_to_file>
然后设置运行:最小化
应该像预期的那样工作,而没有添加隐藏窗口闪光的代码 只是稍微延迟了一点。