Запускать скрипт как скрытое запланированное задание с помощью PowerShell - PullRequest
0 голосов
/ 06 января 2019

Я хочу, чтобы файлы слов на рабочем столе перемещались на локальный диск D в то время, которое я устанавливаю каждый день. Я создал запланированное задание, и код работает следующим образом.

$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument 'Invoke-Command -ScriptBlock { Move-Item -Path $home\Desktop\*.doc -Destination D:\ }'
$trigger = New-ScheduledTaskTrigger -Daily -At 05:30pm
Register-ScheduledTask -TaskName "Task" -Action $action -Trigger $trigger -RunLevel Highest -Force

Но есть проблема. Я хочу, чтобы таймер этой задачи выполнялся скрытно, не появляясь в окне PowerShell.

Чтобы решить эту проблему, я также хотел следующий способ.

$action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument '-ExecutionPolicy Bypass -NoExit -NoProfile -WindowStyle Hidden Invoke-Command -ScriptBlock { Move-Item -Path $home\Desktop\*.doc -Destination D:\ }'
$trigger = New-ScheduledTaskTrigger -Daily -At 05:30pm
Register-ScheduledTask -TaskName "Task" -Action $action -Trigger $trigger -RunLevel Highest -Force

Не могли бы вы помочь мне исправить код, который я написал, чтобы запустить запланированное задание без появления окна PowerShell?

1 Ответ

0 голосов
/ 06 января 2019

Чтобы запустить запланированное задание в фоновом режиме, настройте его на выполнение независимо от того, вошел ли пользователь в систему или нет. Поскольку вы хотите копировать файлы только с одного локального диска на другой, я бы также рекомендовал не хранить пароль. Invoke-Command также не требуется. Просто запустите Move-Item напрямую.

$action    = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument 'Move-Item ...'
$trigger   = New-ScheduledTaskTrigger -Daily -At 05:30pm
$principal = New-ScheduledTaskPrincipal -UserId "$env:USERDOMAIN\$env:USERNAME" -LogonType "S4U" -RunLevel Highest

Register-ScheduledTask -TaskName "Task" -Action $action -Trigger $trigger -Principal $principal -Force
...