Имя: Пароль:
IT
Админ
Пытаюсь создать скрипт, но не выходит
0 VID1234
 
18.10.23
12:10
Здравствуйте. Подскажите пожалуйста, мне необходимо поймать событие при изменении, удалении и создании в определенном каталоге, вроде как написал код правильно, но он не срабатывает.

PS C:\Users\PC-Sir>  $watcher=New-Object System.IO.FileSystemWatcher
PS C:\Users\PC-Sir> $watcher.Path="Z:новая папка"
PS C:\Users\PC-Sir> $action = {
>> >>     $path = $event.SourceEventArgs.FullPath
>> >>     $name = $event.SourceEventArgs.Name
>> >>     $changetype = $event.SourceEvenAtrgs.ChangTeype
>> >>     Add-Content -Path Z:\A.txt -Value "$Name ; $path ; $changettype ; $(get-date)"
>> >> }
PS C:\Users\PC-Sir> $watcher.EnableRaisingEvents=$true
PS C:\Users\PC-Sir> Register-ObjectEvent $watcher Created Action -Action $action

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      Action                          NotStarted    False                                ...


PS C:\Users\PC-Sir>  $action

>>     $path = $event.SourceEventArgs.FullPath
>>     $name = $event.SourceEventArgs.Name
>>     $changetype = $event.SourceEvenAtrgs.ChangTeype
>>     Add-Content -Path Z:\A.txt -Value "$Name ; $path ; $changettype ; $(get-date)"
>>
PS C:\Users\PC-Sir>
При этом если запускаю такой код, то строка добавляется в текстовый файл
1
PS C:\Users\PC-Sir>  Add-Content -Path Z:\A.txt -Value "$name ; $path ; $changettype ; $(get-date)"
Как будто бы не срабатывает действие.
1 VID1234
 
18.10.23
12:30
А все разобрался, нужно было из под админа выполнять
2 VID1234
 
18.10.23
12:32
как только теперь запустить этот скрипт как службу
3 Волшебник
 
18.10.23
12:50
4 arsik
 
18.10.23
13:15
(2) Может через аудит + подписку на события делать?
https://oblako.kz/help/windows/audit-dostpa-k-failam-windows-server
5 VID1234
 
24.10.23
21:08
(3) Здравствуйте. Пробовал, служба появилась, но не работает. При этом если построчно все вывожу или запускаю его через cmd все работает. Пробовал и через планировщик и через службу
6 ЯнСмит
 
24.10.23
22:28
(2) попробуйте через http://nssm.cc - работает безотказно
7 Волшебник
 
24.10.23
22:36
(6)🔥 Классное название
8 VID1234
 
25.10.23
16:37
я через через эту программу, но не получилось
установил nssm и далее
$NSSMPath = (Get-Command "C:\ProgramData\chocolatey\lib\nssm\tools\nssm.exe").Source

$NewServiceName = “CheckKatalogSrv”
$PoShPath= (Get-Command powershell).Source
$PoShScriptPath = “C:\stavnenie.ps1”
$args = '-ExecutionPolicy Bypass -NoProfile -File "{0}"' -f $PoShScriptPath
& $NSSMPath install $NewServiceName $PoShPath $args
Start-Service $NewServiceName
Служба появилась и она работает, но не работает код со скрипта, а там он только один раз должен запуститься и работать, до перезагрузки виндовс

Это код самого скрипта:
$watcher=New-Object System.IO.FileSystemWatcher
$watcher.Path='C:\Katalog'
$action = {
     $path = $event.SourceEventArgs.FullPath
     $name = $event.SourceEventArgs.Name
     $changetype = $event.SourceEventArgs.ChangeType
    Add-Content -Path C:\A.txt -Value "$Name ; $path ; $changetype ; $(get-date);>"
}
$watcher.EnableRaisingEvents=$true
$watcher.IncludeSubdirectories=$true
Register-ObjectEvent $watcher "Created" -Action $action
Register-ObjectEvent $watcher "Deleted" -Action $action
Register-ObjectEvent $watcher "Renamed" -Action $action
9 VID1234
 
25.10.23
18:20
Все разобрался, всем спасибо.
в программе исполнителе прописал полный путь к PowerShell, а в аргументы  -noexit C:\stavnenie.ps1 -gettedServerName "имясервера" Вдруг пригодится.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан