Задать вопрос
@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
или групповой политикой.

Не могу понять причину . Прошу помочь .
  • Вопрос задан
  • 210 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 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...
а не нагружать комп ненужной работой по циклическому чтению файлов
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Монетка Екатеринбург
от 140 000 до 170 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽