O script Powershell executa o System.IO.FileSystemWatcher como serviço do Windows

1

Eu preciso de um script FileWatcher para detectar novos arquivos e executar outro script PowerShell se os arquivos forem encontrados. O diretório de destino deste script de segundo PS gera o arquivo para uma montagem UNC que possui o diretório montado como P:. Essa montagem UNC é na verdade um compartilhamento SMB de uma máquina Linux. Essa máquina Linux hospeda um serviço SMB com acesso concedido a um usuário linux na caixa. Esse usuário linux tem os direitos apropriados para criar e modificar os arquivos dentro do diretório SMB.

Eu posso fazer com que o script filewatcher execute as ações perfeitamente se eu executar o script em uma janela ativa enquanto estiver logado.

Não consigo fazer com que o script filewatcher seja executado como um serviço do windows e execute corretamente um comando depois que o System.IO.FileSystemWatcher detectar um novo arquivo.

Eu usei o formato winsw.exe para criar o serviço do Windows. Quando eu corro isso como o usuário do sistema ... nada. Quando eu executo o serviço como eu, o mesmo usuário que o executa com sucesso em uma janela ativa, nada.

Aqui está o arquivo winsw.xml

<service>
<id>StartWatchingFiles</id>
<name>Start Watching Files</name>
<description>This is used to watch files.</description>
<executable>PowerShell.exe</executable>
<logmode>reset</logmode>
<arguments>-ExecutionPolicy Bypass -File "C:\scripts\StartWatching.ps1"</arguments>
</service>

Após a execução, os arquivos são gerados e o script do observador não dispara o script PS em resposta a esse arquivo recém-detectado.

    
por Justin Edmands 24.05.2017 / 23:13

0 respostas