Подтвердить что ты не робот

Запустите powerhell script в фоновом режиме раз в минуту

Я хочу, чтобы powershell script запускался один раз в минуту в фоновом режиме. Не может появиться окно. Как это сделать?

4b9b3361

Ответ 1

Используйте Планировщик задач Windows и запустите script следующим образом:

powershell -File myScript.ps1 -WindowStyle Hidden

Кроме того, создайте script, который выполняется под определенной учетной записью пользователя, а не только при входе в систему этого пользователя. В противном случае вы увидите окно консоли.

Ответ 2

Возможно, этот сценарий будет действовать. Мы не запускаем исполняемый файл PowerShell каждую минуту (это дорого, BTW). Вместо этого мы запускаем его один раз, вызывая дополнительный script, который вызывает рабочего script один раз в минуту (или на самом деле ждет минуту после того, как рабочий script завершает или не работает).

Создайте начальный код Invoke-MyScript.ps1:

for(;;) {
 try {
  # invoke the worker script
  C:\ROM\_110106_022745\MyScript.ps1
 }
 catch {
  # do something with $_, log it, more likely
 }

 # wait for a minute
 Start-Sleep 60
}

Запустите это из Cmd (например, из загрузочного файла .bat):

start /min powershell -WindowStyle Hidden -Command C:\ROM\_110106_022745\Invoke-MyScript.ps1

Окно PowerShell появляется на мгновение, но оно сведено к минимуму из-за start /min и через мгновение оно скрывается навсегда. Так что на самом деле на первый взгляд появляется только значок панели задач, а не само окно. Это не так уж плохо.

Ответ 3

Запланируйте задачу для запуска в качестве системы. В приведенной ниже команде будет запланировано выполнение script в фоновом режиме без отображения окна консоли PowerShell:

schtasks /create /tn myTask /tr "powershell -NoLogo -WindowStyle hidden -file myScript.ps1" /sc minute /mo 1 /ru System

/ru позволяет вам изменить контекст пользователя, в котором будет выполняться запланированное задание.

Ответ 4

На вкладке [Общие] в свойствах планировщика заданий выберите "Запустить независимо от того, вошел ли пользователь в систему" ​​или нет ", запрет появления окна на моей машине с Windows 7.

Ответ 5

Эти ответы являются горькими! Если вы хотите запустить powershell script в качестве фонового задания, попробуйте начало работы. \script из CLI в папке, в которой находятся ваши сценарии.

Ответ 6

Если вы хотите запустить script автоматически по времени. (для окон os)

1)  Open Schedule tasks from control panel.
2)  Select Task Scheduler Library from left side window.
3)  select Create Task from right side window.
4)  Enter Name in General tab (any name).
5)  Open Triggers tab -> New
6)  Select interval as needed.Use Advanced settings for repeat task. 
7)  Open Actions tab ->New
8)  Copy/Paste following line in Program/script *

* Here D:\B.ps1 in code is path to my B.ps1 file

C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe D:\B.ps1

9)  ok and apply changes
10) Done!  

Ответ 7

#   Filecheck.ps1

#   Version 1.0

#   Use this to simply test for the existance of an input file... Servers.txt.

#   I want to then call another script if the input file exists where the

#   servers.txt is neded to the other script.

#


    $workpath=".\Server1\Restart_Test"

#   Created a functon that I could call as part of a loop.


    function Filecheck

    {
    if (test-path $workpath\servers.txt)

        {

        rename-item $workpath\servers.txt servers1.txt

        "Servers.txt exist... invoking an instance of your script agains the list of servers"


        Invoke-Expression .\your_Script.ps1

        }

    Else
        {

            "sleeping"

            Start-Sleep -Seconds 60
        }

     }

    Do
        {
        Filecheck

        $fred=0
        # Needed to set a variabe that I could check in the while loop.

        # Probably a better way but this was my way.

        }

        While( $fred -lt 1 )