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

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

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

Похожие вопросы