如何运行PowerShell脚本而不向用户显示窗口或任何其他符号?
换句话说,脚本应该在后台安静地运行,而不需要向用户发出任何信号。
不使用第三方组件的答案可获得额外分数:)
如何运行PowerShell脚本而不向用户显示窗口或任何其他符号?
换句话说,脚本应该在后台安静地运行,而不需要向用户发出任何信号。
不使用第三方组件的答案可获得额外分数:)
当前回答
当您计划任务时,只需在“常规”选项卡下选择“无论用户是否登录都运行”。
另一种方法是让任务以另一个用户的身份运行。
其他回答
ps1隐藏在任务调度程序和快捷方式中
mshta vbscript:Execute("CreateObject(""WScript.Shell"").Run ""powershell -ExecutionPolicy Bypass & 'C:\PATH\NAME.ps1'"", 0:close")
为了方便命令行使用,有一个简单的包装器应用程序:
https://github.com/stax76/run-hidden
命令行示例:
run-hidden powershell -command calc.exe
下面是一行代码:
mshta vbscript:Execute("CreateObject(""Wscript.Shell"").Run ""powershell -NoLogo -Command """"& 'C:\Example Path That Has Spaces\My Script.ps1'"""""", 0 : window.close")
虽然这可能会让窗口非常短暂地闪现,但这种情况应该很少发生。
您可以使用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#运行时遇到了这个问题,在Windows 7上,“交互式服务检测”服务在以SYSTEM帐户运行隐藏的powershell窗口时弹出。
使用"CreateNoWindow"参数可以防止ISD服务弹出警告。
process.StartInfo = new ProcessStartInfo("powershell.exe",
String.Format(@" -NoProfile -ExecutionPolicy unrestricted -encodedCommand ""{0}""",encodedCommand))
{
WorkingDirectory = executablePath,
UseShellExecute = false,
CreateNoWindow = true
};