【发布时间】:2016-11-04 15:33:02
【问题描述】:
披露 我是一名 PHP/Linux 开发人员,不得不习惯在 Windows 环境中工作,所以我很好地错过了问题中的一些基本内容。我已经对此进行了研究,但似乎无法确定解决方案。感谢您在高级方面的帮助。
我有一个批处理文件调用了一个 powershell 脚本,该脚本在由窗口的任务调度程序启动时无法正常运行,但在手动启动时运行良好。
下面是批处理文件正在启动的 Powershell 脚本...
$WatchFolder = '\\networkshare\foldername'
$Filter = '*.csv'
$fsw = New-Object IO.FileSystemWatcher $WatchFolder, $Filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters] 'LastWrite'}
Register-ObjectEvent $fsw Changed -SourceIdentifier SAS_Poll_FileChanged -Action {
$WatchFolder = '\\networkshare\foldername'
$OutputFolder_one = '\\networkshare\outputFolder_One'
$OutputFolder_two = '\\networkshare\outputFolder_Two'
$name = $Event.SourceEventArgs.Name
$lock_file = $WatchFolder + '\.' + $name + '.lock'
$test = (Test-Path "$lock_file")
if ( $test ){
return
} else {
Set-ExecutionPolicy -Scope CurrentUser Bypass
Out-File -FilePath "$lock_file"
Start-Process powershell -ArgumentList ".\General\PollingProcess-alone.ps1 $WatchFolder $MainFrameFolder $SASFolder $name $lock_file" -NoNewWindow
}
}
我知道问题出现在以下行...
Start-Process powershell -ArgumentList ".\General\PollingProcess-alone.ps1 $WatchFolder $MainFrameFolder $SASFolder $name $lock_file" -NoNewWindow
我知道当事件被触发时(当脚本通过任务调度程序启动时),锁定文件被创建,然后进程挂起。
因此,我认为该问题与我正在调用的第二个 powershell 脚本的路径有关,但我不知道如何解决它。我尝试使用第二个脚本的完整路径,但无法使其工作。
只是为了给你更多的脚本上下文,事件进程启动一个新的 powershell 脚本是很重要的,因为我需要这些脚本同时运行。
【问题讨论】:
标签: windows powershell batch-file scheduled-tasks windows-server-2012