如何在没有调度程序的情况下真正自动化Powershell脚本

时间:2019-06-22 08:15:15

标签: powershell powershell-3.0

我的脚本基本上在一天内的特定时间运行。访问服务器并下载数据。

到目前为止,我已经尝试过使用start-sleep命令和timespan命令,但是我对此并不陌生。

start-sleep ((get-date "03:04 pm") - (get-date)).TotalSeconds; 
$filename = (get-date -format "hh_mm_dd_MM_yyyy") + "AU" + ".csv"
$xacontroller = "abc.contoso.com"
$xasessions = Get-BrokerSession -AdminAddress $xacontroller - 
MaxRecordCount 100000 | Export-Csv -Path "C:\Temp\Data\$filename"


start-sleep ((get-date "03:06 pm") - (get-date)).TotalSeconds;
$filename = (get-date -format "hh_mm_dd_MM_yyyy") + "SG" + ".csv"
$xacontroller = "def.contoso.com"
$xasessions = Get-BrokerSession -AdminAddress $xacontroller - 
MaxRecordCount 100000 | Export-Csv -Path "C:\Temp\Data\$filename"

逻辑:睡到下午3:04并运行第一个程序块。睡到下午3:06,然后运行第二个程序段。

我要实现的目标:下午3:06后睡觉,直到第二天下午3:04

期望:该脚本需要每天自动运行,而无需使用任务计划程序。我正在使用Powershell 3。

任何想法都值得赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

如果您想在特定时间运行脚本,则应该有一些时间来寻找(可以将其称为事件处理程序)。

例如在WMI中,事件处理程序是一种等待特定事件发生的东西(例如:启动,当插入外部卷时...)

在任务计划程序中,事件可以是系统启动,用户登录,每天在特定时间(这是您想要的)...

我认为保持Powershell脚本全天运行以在特定时间执行单个任务不是一个好习惯,而是可以使用任务计划程序。

将脚本保存在某个位置,并使用以下脚本在特定时间注册新的计划任务以运行它。

$ScriptPath = "$home\Desktop\script.ps1"
$Trigger= New-ScheduledTaskTrigger -Daily -At 03:04pm
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-executionpolicy bypass -noprofile -file $ScriptPath" 
Register-ScheduledTask -TaskName "MyTask" -Trigger $Trigger -User $env:username -Action $Action