PowerShell File monitor при запуске Windows - PullRequest
1 голос
/ 11 ноября 2011

У меня есть сценарий PowerShell для мониторинга файловой системы, использующий события System.IO.FileSystemWatcher. Сценарий прекрасно работает, но для этого требуется открытое окно PowerShell.

Таким образом, мне нужно запустить его как службу Windows при запуске Windows (без входа в систему). Есть ли способ сделать это?

1 Ответ

2 голосов
/ 11 ноября 2011

Чтобы выполнить ваш скрипт при запуске Windows (без входа в систему), вы можете создать для него службу Windows (используя srvany.exe). Шаги:

  1. Получить комплект ресурсов Windows 2003 (который содержит srvany.exe)
  2. Установить набор ресурсов
  3. Создание службы с использованием sc и srvany.exe

    sc create PSService binPath= "C:\Program Files\Windows Resource Kits\Tools\srvany.exe" DisplayName= "PSService"
    
  4. Параметризация вашего сервиса

    Windows Registry Editor Version 5.00
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\PSService]
    "Type"=dword:00000010
    "Start"=dword:00000003
    "ErrorControl"=dword:00000001
    "DisplayName"="PSService"
    "ObjectName"="LocalSystem"
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\PSService\Parameters]
    "Application"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -noExit -ExecutionPolicy RemoteSigned -File C:\\PSService\\psservice.ps1"
    

Некоторые замечания:

  • Srvany.exe не доступен для Windows Vista и выше. Это может работать, но, вероятно, не поддерживается
  • Возможно, вы захотите запустить его с другими учетными данными (из соображений безопасности)
  • Возможно, вы захотите сохранить ваш сценарий в каталоге, где только администраторы имеют доступ для записи (по соображениям безопасности)
...