Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 每分钟在后台运行一次powershell脚本_Windows_Powershell_Scheduling - Fatal编程技术网

Windows 每分钟在后台运行一次powershell脚本

Windows 每分钟在后台运行一次powershell脚本,windows,powershell,scheduling,Windows,Powershell,Scheduling,我希望powershell脚本在后台每分钟运行一次。不可出现任何窗口。如何执行此操作?使用Windows任务计划程序并按如下方式运行脚本: powershell -File myScript.ps1 -WindowStyle Hidden (Get-ScheduledJob -Name 'SomeJobName').StartJob() 此外,还要创建在特定用户帐户下运行的脚本,而不仅仅是在该用户登录时。否则,您将看到一个控制台窗口。也许这个场景就可以了。我们并不是每分钟都启动PowerSh

我希望powershell脚本在后台每分钟运行一次。不可出现任何窗口。如何执行此操作?

使用Windows任务计划程序并按如下方式运行脚本:

powershell -File myScript.ps1 -WindowStyle Hidden
(Get-ScheduledJob -Name 'SomeJobName').StartJob()

此外,还要创建在特定用户帐户下运行的脚本,而不仅仅是在该用户登录时。否则,您将看到一个控制台窗口。

也许这个场景就可以了。我们并不是每分钟都启动PowerShell可执行文件(顺便说一句,这很昂贵)。相反,我们通过调用一个额外的脚本来启动它,该脚本每分钟调用一次辅助脚本(或者在辅助脚本退出或失败后实际等待一分钟)

创建启动Invoke-MyScript.ps1:

for(;;) {
 try {
  # invoke the worker script
  C:\ROM\_110106_022745\MyScript.ps1
 }
 catch {
  # do something with $_, log it, more likely
 }

 # wait for a minute
 Start-Sleep 60
}
从Cmd运行此命令(例如,从startup.bat文件):


PowerShell窗口会出现一段时间,但由于
start/min
的原因,它会被最小化,并在一瞬间永远隐藏。因此,实际上只有任务栏图标会出现片刻,而不是窗口本身。还不错。

这些答案是历史性的! 如果要将powershell脚本作为后台作业运行,请尝试 启动作业。\r\n脚本
从存放脚本的文件夹中的CLI中。

计划将任务作为系统运行。下面的命令将计划在后台运行脚本,而不显示powershell控制台窗口:

schtasks /create /tn myTask /tr "powershell -NoLogo -WindowStyle hidden -file myScript.ps1" /sc minute /mo 1 /ru System schtasks/create/tn myTask/tr“powershell-NoLogo-WindowStyle hidden-file myScript.ps1”/sc minute/mo 1/ru System
/ru
开关用于更改执行计划任务的用户上下文。

在任务计划程序属性的[常规]选项卡上,选择“无论用户是否登录都运行”单选按钮可防止窗口出现在我的Windows 7计算机上。

如果要按时间间隔自动运行脚本。(适用于windows操作系统)

C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe D:\B.ps1

9)  ok and apply changes
10) Done!  

要创建后台powershell任务以运行每分钟重复一次且根本没有可见窗口的脚本,请以管理员身份运行powershell,然后使用
Register ScheduledJob
cmdlet运行脚本。以下是如何实现这一目标的示例:

Register-ScheduledJob -Name 'SomeJobName' -FilePath 'path\to\your\ps1' -Trigger (New-JobTrigger -Once -At "9/28/2018 0am" -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([TimeSpan]::MaxValue))
如果要手动强制运行此作业(可能是为了进行故障排除),可以使用如下
Get ScheduledJob
cmdlet:

powershell -File myScript.ps1 -WindowStyle Hidden
(Get-ScheduledJob -Name 'SomeJobName').StartJob()

我在我们的IT组织的约束下工作,他们已经禁用了脚本的执行。因此,我仅限于在班轮上。以下是我使用的:

while ($true) {<insert command(s) here>;start-sleep 2}
while($true){;启动睡眠2}

我是PowerShell的不速之客,所以如果您有反馈,请温柔一点;-)

我现在知道了,但是我如何在后台运行powershell?@magol-你还需要多少“后台”呢?Windows任务计划程序是运行“后台”任务的方式,在本例中,任务是启动PowerShell并运行指定的脚本。公平地说,如果当前用户是管理员并且没有更改任务的默认设置,则初始答案不会导致后台进程。但是,显式地让任务运行,而不管登录的用户是谁,可以修复这一问题。嗯,到目前为止,我的测试脚本运行了181次。我应该再次关闭该任务:-)我使用以下字符串创建Windows任务计划程序:schtasks/create/RU BURE/SC MINUTE/TN files_to_nomad/TR“powershell.exe-NoProfile-WindowStyle Hidden&'C:\Documents and Settings\BURE\My Documents\ibös\script files\u to_nomad.ps1'1”,但我每分钟都会得到一个窗口。@magol检查“无论用户是否登录,都要运行“复选框和可执行文件将在后台运行。您知道如何创建计划任务吗?谢谢Xemlock!在我的例子中,你的建议是唯一一个绝对没有生成PowerShell窗口的解决方案。对于任何想通过UI方式实现这一点的人来说。。转到任务属性,更改用户或组按钮,搜索对象
system
,然后单击检查名称,该对象应填充对象
NT AUTHORITY\system
。这是唯一一个阻止PS窗口显示在我的屏幕上的解决方案。Frantumn comment是此处唯一一个确实使powershell在运行时停止显示一秒钟的信息。取消创建的隐藏窗口:请参阅
while ($true) {<insert command(s) here>;start-sleep 2}