Всем привет )
Требуется написать скрипт который в случае изменения конфигурационного файла писал 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
или групповой политикой.
Не могу понять причину . Прошу помочь .