2011-11-11 24 views
1

ファイルシステムで、System.IO.FileSystemWatcherイベントを使用してPowerShellスクリプトを監視しています。 スクリプトはうまく動作しますが、PowerShellウィンドウが開いている必要があります。Windows起動時のPowerShellファイルモニター

したがって、私はWindows起動時に(ログオンなしで)Windowsサービスとして実行する必要があります。これを行う方法はありますか?

答えて

2

Windows起動時(ログオンなし)でスクリプトを実行するには、srvany.exeを使用してWindowsサービスを作成することができます。 手順:

  1. (SRVANY.EXEが含まれています)は、Windows 2003リソースキット
  2. は、SCを使用してサービスを作成し、

    sc create PSService binPath= "C:\Program Files\Windows Resource Kits\Tools\srvany.exe" DisplayName= "PSService" 
    
  3. をSRVANY.EXEリソースキット

  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およびアップでは使用できません。
  • (セキュリティ上の理由から)
  • (セキュリティ上の理由から)管理者だけが書き込みアクセス権を持つディレクトリにスクリプトを保存したい場合がありますが、
+0

ご返信ありがとうございます。しかし、これは私の問題を解決しません。現在監視は開いているPSウィンドウで実行されています。$ watcher = New-Object System.IO.FileSystemWatcher $ watcher.Path = $ searchPath $ watcher.EnableRaisingEvents = $ true $ changed = Register-ObjectEvent $ watcher "Changed" - 動作{....} 'あなたの決定はPSコードを実行するだけで、FSを監視しません。 –

+0

@Miskoスクリプトを実行した後にPowerShellプロセスが終了するのを避けるため、PowerShellを起動するときに-noExitスイッチを追加する必要があります。私は私の答えで.regファイルを変更しました。 –

+0

あなたに大きな感謝、それはまさに私が必要なものです! –

関連する問題