[英]Powershell script stops working when ran through task scheduler
我正在運行下面的腳本作為計划任務,用戶登錄服務器。 它使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.