Задать вопрос
@x4IPx
Системный администратор

Не работает скрипт. Как запустить скрипт не дожидаясь его выполнения?

Всем привет )

Требуется написать скрипт который в случае изменения конфигурационного файла писал LOG. При этом он должен выполнятся отдельным процессом не дожидаясь окончания цикла.

$ScriptBlock = {

while($true){

$microsipini="$Env:USERPROFILE\AppData\Roaming\MicroSIP\microsip.ini"                              #В каком файле нужно проверять стоку
$namelog=$env:UserName                                                                             #Название файла
$folderlog='\\fs01\LOG\'                                                                 #Куда сохранять лог 
$datatime=Get-Date                                                                                 #Переменная дата/время
$ideallineini = 'autoAnswer='                                                                      #Эталонное значение
$textp='Строка изменена:'                                                                          #Текст в логе
$lineini = Get-Content -Path $microsipini | Select-String -Pattern 'autoAnswer='                   #Присвоение переменной значение определённой строки (Например autoAnswer=)
if( $lineini -notlike	 $ideallineini ) {                                                         #Сравнения эталонного значения с строкой в файле 
   Write-Output $textp$datatime','$env:UserName | Out-File $folderlog$namelog'.log' -Append        #Запись лога в случае несовпадения(-notlike)/совпадения(-like) строк

 
}
  Start-Sleep 3                                                                                          #Таймер цикла.Как часто команда будет обрабатываться.       
                                                                          
  }


}

Start-Job -ScriptBlock $ScriptBlock


Если его запускать с ISE , то скрипт отрабатывает как следует .
Но он не отрабатывается если запускать через powershell.exe :
powershell C:\microsip.ps1
или групповой политикой.

Не могу понять причину . Прошу помочь .
  • Вопрос задан
  • 217 просмотров
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Stepik
    PowerShell для начинающих: Основы для IT-специалистов
    1 неделя
    Далее
  • Skillbox
    Системный администратор с нуля
    6 месяцев
    Далее
  • Яндекс Практикум
    Специалист по информационной безопасности
    11 месяцев
    Далее
Решения вопроса 1
@MaxKozlov Куратор тега PowerShell
Не очень понятно, что вы имеете ввиду под "не работает"

но в любом случае, вы делаете Start-Job и на этом ваш скрипт заканчивается
а Wait-Job нигде нет

В отдельном скрипте вам вообще job не нужен

update:
А если по сути задачи, вам надо посмотреть в сторону FileSystemWatcher
https://powershell.one/tricks/filesystem/filesyste...
https://devblogs.microsoft.com/powershell-communit...
https://stackoverflow.com/questions/29066742/watch...
а не нагружать комп ненужной работой по циклическому чтению файлов
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Монетка Екатеринбург
от 130 000 до 160 000 ₽
Vital Partners Москва
от 200 000 до 300 000 ₽
Principal Recruitment Москва
от 300 000 ₽