如何运行PowerShell脚本而不向用户显示窗口或任何其他符号?

换句话说,脚本应该在后台安静地运行,而不需要向用户发出任何信号。

不使用第三方组件的答案可获得额外分数:)


当前回答

创建一个调用PowerShell脚本的快捷方式,并将Run选项设置为最小化。这将防止窗口闪烁,尽管您仍然会在任务栏上运行脚本的瞬间闪烁。

其他回答

下面是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社区扩展来完成以下操作:

start-process PowerShell.exe -arg $pwd\foo.ps1 -WindowStyle Hidden

你也可以用VBScript: http://blog.sapien.com/index.php/2006/12/26/more-fun-with-scheduled-powershell/这样做

计划隐藏的PowerShell任务(Internet Archive) 更多的乐趣与计划的PowerShell(互联网档案)

(通过这个论坛。)

c="powershell.exe -ExecutionPolicy Bypass (New-Object -ComObject Wscript.Shell).popup('Hello World.',0,'ОК',64)"
s=Left(CreateObject("Scriptlet.TypeLib").Guid,38)
GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}").putProperty s,Me
WScript.CreateObject("WScript.Shell").Run c,0,false

你可以像这样运行它(但这会显示一个窗口):

PowerShell.exe -WindowStyle hidden { your script.. }

或者您可以使用我创建的一个帮助文件来避免名为PsRun.exe的窗口,它正是这样做的。您可以在PowerShell中使用WinForm GUI运行计划任务中下载源文件和exe文件。我用它来完成计划好的任务。

已编辑:正如Marco所指出的,此-WindowStyle参数仅适用于V2及以上版本。

我创建了一个小工具,通过原始文件将调用传递给任何你想要启动无窗口的控制台工具:

https://github.com/Vittel/RunHiddenConsole

编译完成后,只需将可执行文件重命名为“<targetExecutableName>w.exe”(附加一个“w”),并将其放在原始可执行文件旁边。 然后你可以用通常的参数调用e.G. powershell .exe,它不会弹出一个窗口。

如果有人知道如何检查创建的进程是否等待输入,我会很高兴包括你的解决方案:)