簡體   English   中英

通過任務計划程序運行時,Powershell腳本停止工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM