【问题标题】:I want to run .ps1 file through a .bat file我想通过 .bat 文件运行 .ps1 文件
【发布时间】:2016-10-17 10:11:11
【问题描述】:

我正在尝试通过任务计划程序运行此 PowerShell 代码,因为我想 24*7 运行此代码。任务计划程序未在 .ps1 文件中运行。所以我想从任务计划程序运行一个 .bat 文件,它会调用这个 PowerShell 文件。

以下是我的 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}

【问题讨论】:

    标签: powershell scheduled-tasks


    【解决方案1】:

    Task Scheduler 可以很好地运行 PowerShell 脚本,但是您需要将 powershell.exe 作为要执行的程序,并将 -File "C:\path\to\watch.ps1" 作为程序的参数。

    在您的情况下,您还应该添加参数 -NoExit,以便 PowerShell 不会终止,并从脚本中删除 while 循环(或至少将睡眠时间设置为几百毫秒,这样系统可以同时做其他事情)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 2018-12-23
      相关资源
      最近更新 更多