我的脚本基本上在一天中的特定时间运行。访问服务器并下载数据。
到目前为止,我已经尝试过使用 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。
任何想法都值得赞赏。谢谢你。
如果你想在特定时间运行脚本,你应该有一些东西来寻找这个时间的到来(你可以称之为事件处理程序)。
例如,在 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
我需要使用的脚本中涉及到start-sleep cmdlet;虽然在任务计划程序中创建或修改任务时触发执行是可以的,但我不确定脚本块内的 60 秒睡眠如何与任务计划程序进行交互。 (我的意思是,可能是调度程序现在正在运行任务,但它是同时执行睡眠启动的 ps1 脚本吗?)