Как по-настоящему автоматизировать скрипт powershell без планировщика - PullRequest
0 голосов
/ 22 июня 2019

Мой сценарий в основном выполняется в определенное время в течение дня. Доступ к серверу и загрузка данных.

До сих пор я пытался поиграть с командой 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"

Логика: спать до 15:04 и запустить первый блок. спать до 3:06 вечера и запустить второй блок.

Чего я пытаюсь достичь: спать после 15:06 до следующего дня, 15:04

Ожидание: этот скрипт должен запускаться каждый день автоматически без использования планировщика задач. Я использую PowerShell 3.

Любые идеи приветствуются. Спасибо.

1 Ответ

0 голосов
/ 22 июня 2019

Если вы хотите запустить скрипт в определенное время, у вас должно быть что-то, ожидающее этого времени (вы можете назвать это обработчиком события).

Например, в 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
...