2016-10-17 14 views
0

このコードを24 * 7実行したいので、このPowerShellコードをタスクスケジューラで実行しようとしています。タスクスケジューラが.ps1ファイルを実行していません。ですから、このPowerShellファイルを呼び出すTask Schedulerから.batファイルを実行します。続き.batファイルを使用して.ps1ファイルを実行したい

は私のPowerShellのコードです(ファイル名はWatch.ps1です):

### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO 
$watcher = New-Object System.IO.FileSystemWatcher 
$watcher.Path = "D:\MigrationWorkflow\UAT" 
$watcher.EnableRaisingEvents = $true 

### DEFINE ACTIONS AFTER A EVENT IS DETECTED 
$action = { $path = $Event.SourceEventArgs.FullPath 
      $changeType = $Event.SourceEventArgs.ChangeType 
      $logline = "$(Get-Date), $changeType, $path" 
      Invoke-Expression 'MASysMgr.exe -w MigrationUAT.smw -f "D:\MigrationWorkflow\UAT\ParameterUat.smp" -l WorkflowResults.log -showoutput' } 

### DECIDE WHICH EVENTS SHOULD BE WATCHED + SET CHECK FREQUENCY 
$created = Register-ObjectEvent $watcher "Created" -Action $action 
while ($true) {sleep 0} 

答えて

0

タスクスケジューラがうまくPowerShellスクリプトを実行することができますが、パラメータとして実行するためのプログラムとしてpowershell.exeを配置する必要があり、かつ-File "C:\path\to\watch.ps1"プログラムのために。

場合によっては、PowerShellが終了しないようにパラメータ-NoExitを追加して、スクリプトからwhileループを削除するか(少なくともスリープ時間を数百ミリ秒に設定して、その間に他のことをする)。

関連する問題