mag*_*gol 26 windows powershell scheduling
我希望PowerShell脚本在后台每分钟运行一次.不会出现任何窗口.我该怎么做?
Joe*_*oey 23
使用Windows任务计划程序并运行您的脚本,如下所示:
powershell -File myScript.ps1 -WindowStyle Hidden
Run Code Online (Sandbox Code Playgroud)
此外,创建在特定用户帐户下运行的脚本,而不仅仅是在该用户登录时.否则你会看到一个控制台窗口.
Rom*_*min 17
也许这种情况会发生.我们不会每分钟启动PowerShell可执行文件(这很昂贵,BTW).相反,我们通过调用额外的脚本来启动它一次,该脚本每分钟调用一次工作脚本(或者在工作脚本退出或失败后实际等待一分钟).
创建起始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
}
Run Code Online (Sandbox Code Playgroud)
从Cmd运行(例如从启动.bat文件):
start /min powershell -WindowStyle Hidden -Command C:\ROM\_110106_022745\Invoke-MyScript.ps1
Run Code Online (Sandbox Code Playgroud)
PowerShell窗口暂时出现,但由于start /min它被永远隐藏起来,它被最小化.实际上只有一个任务栏图标会出现,而不是窗口本身.这不是太糟糕.
xem*_*ock 10
安排您的任务作为系统运行.下面的命令将安排脚本在后台运行,而不显示powershell控制台窗口:
schtasks /create /tn myTask /tr "powershell -NoLogo -WindowStyle hidden -file myScript.ps1" /sc minute /mo 1 /ru System
/ru switch允许您更改将在其中执行计划任务的用户上下文.
要创建后台 powershell 任务以运行每分钟重复一次且根本没有可见窗口的脚本,请以管理员身份运行 powershell,然后使用Register-ScheduledJobcmdlet 运行您的脚本。以下是如何实现这一目标的示例:
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))
Run Code Online (Sandbox Code Playgroud)
如果您想手动强制运行此作业(可能是出于故障排除目的),您可以Get-ScheduledJob像这样使用cmdlet:
(Get-ScheduledJob -Name 'SomeJobName').StartJob()
Run Code Online (Sandbox Code Playgroud)
我在 IT 组织的限制下工作,他们禁止执行脚本。因此我仅限于在线。这是我使用的:
while ($true) {<insert command(s) here>;start-sleep 2}
Run Code Online (Sandbox Code Playgroud)
我是 PowerShell 的菜鸟,所以如果您有反馈意见,请保持温和;-)。
| 归档时间: |
|
| 查看次数: |
66209 次 |
| 最近记录: |