运行任务计划程序时,PowerShell脚本停止工作
我将下面的脚本作为用户login到服务器的计划任务运行。 它使用Excel.Application
COM对象将xls文件转换为csv。 转换工作,但最终打破,我不知道为什么。
我有任务运行下面的命令,理论上应该允许它不断运行:
powershell.exe -noexit -file "filename.ps1"
任何想什么尝试?
$server = "\\server" $xls = "\path\XLS\" $csv = "\path\CSV\" $folder = $server + $xls $destination = $server + $csv $filter = "*.xls" # <-- set this according to your requirements $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{ IncludeSubdirectories = $true # <-- set this according to your requirements NotifyFilter = [IO.NotifyFilters]"FileName, LastWrite" } Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { $path = $Event.SourceEventArgs.FullPath $name = $Event.SourceEventArgs.Name $changeType = $Event.SourceEventArgs.ChangeType $timeStamp = $Event.TimeGenerated $excelFile = $folder + $name $E = New-Object -ComObject Excel.Application $E.Visible = $false $E.DisplayAlerts = $false $wb = $E.Workbooks.Open($excelFile) foreach ($ws in $wb.Worksheets) { $n = "output_" + $name -replace ".XLS" $ws.SaveAs($destination + $n + ".csv", 6) } $E.Quit() }
我正在做一些类似的词。 我不能单独使用Quit
。 我想使用Quit
隐藏Excel。 尝试使用以下命令释放com对象:
$E.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($E) Remove-Variable E
我不知道你是否打开Excel应用程序,但如果你是你可以使用
$wb.close($false)
让我知道它是否工作…
参考: https : //technet.microsoft.com/en-us/library/ff730962.aspx? f = 255 & MSPPError =-2147217396