披露 我是一名PHP/Linux開發人員,不得不習慣在Windows環境中工作,所以我很好地思考了一些基本問題。我已經研究了這一點,似乎無法找到一個解決方案。感謝您的高級幫助。作爲服務問題運行的批處理文件中的Powershell
我有一個批處理文件,調用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
我知道這個B/C當事件被觸發時(通過任務調度程序啓動腳本時),會創建鎖定文件,然後進程掛起。
因此,我認爲這個問題與我打電話給第二個powershell腳本的路徑有關,但我不知道如何解決它。我試過使用第二個腳本的完整路徑,但一直未能使其工作。
只是爲了給你一些更多的腳本上下文,事件進程加速新的powershell腳本b/c是非常重要的,我需要這些腳本併發運行。
更改參數傳遞給數組是我做錯了所有這一切的兩件事之一。 我遇到的另一個問題是我如何設置計劃任務。在計劃任務的操作中,我刪除了正在調用的腳本的路徑,並將路徑移至「開始」選項。這兩個變化的結合似乎解決了我的問題。 再次感謝您的幫助。我希望自己能夠承認這些代碼的大部分內容,但這真的是對Powershell的敬意,以及該語言的文檔記錄。 –