我的脚本基本上在一天内的特定时间运行。访问服务器并下载数据。
到目前为止,我已经尝试过使用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。
任何想法都值得赞赏。谢谢。
答案 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