Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual Cron和Windows任务计划程序执行powershell脚本时出现意外结果_Powershell_Taskscheduler - Fatal编程技术网

Visual Cron和Windows任务计划程序执行powershell脚本时出现意外结果

Visual Cron和Windows任务计划程序执行powershell脚本时出现意外结果,powershell,taskscheduler,Powershell,Taskscheduler,在开始之前,我会说我并不是真正的顶级编程人员,无论是powershell还是其他人,所以请理解我的代码是如何满足我的需求的。或者直到本月早些时候 $uri = 'https://playbook2.domain.com/data/folder/export/24125' $of = '\\domain.com\dept\DCGSI\Extracts\DCCD Projects.xlsx' $sf = '\\domain.com\dept\DCGSI\Extracts\DCCD Modified.

在开始之前,我会说我并不是真正的顶级编程人员,无论是powershell还是其他人,所以请理解我的代码是如何满足我的需求的。或者直到本月早些时候

$uri = 'https://playbook2.domain.com/data/folder/export/24125'
$of = '\\domain.com\dept\DCGSI\Extracts\DCCD Projects.xlsx'
$sf = '\\domain.com\dept\DCGSI\Extracts\DCCD Modified.csv'

function Get-Data {
wget $uri -outfile $of -UseDefaultCredentials
}

function CSV-Creation {
if (Test-Path $sf) {
    Remove-Item $sf
    }

$excel = New-Object -ComObject "Excel.Application"
$Workbook = $excel.Workbooks.Open($of)
$page = 'Project Summary'
$ws = $Workbook.worksheets | where-object {$_.Name -eq $page}
Start-Sleep 5
$cells=$ws.Cells
$range = $ws.UsedRange
$rows = $range.Rows.Count
$dataDate = (Get-Date).tostring("yyyy-MM-dd")
$cols = $range.Columns.Count 
$newCol = $cols + 1
$ws.Cells(1, $newCol).Value = "Snapshot"

for($i = 2; $i -ne $rows+1; $i++){
    $ws.Cells($i, $newCol).Value="$dataDate"
    $ws.Cells($i, $newCol).NumberFormat="yyyy-mm-dd"
}

$excel.visible = $true

$excel.DisplayAlerts = $false

$excel.ActiveWorkbook.SaveAs('\\domain.com\dept\DCGSI\Extracts\DCCD Modified.csv',6)

Close-Excel

}

function Close-Excel {

Start-Sleep 1

[System.Runtime.InteropServices.Marshal]::ReleaseComObject($ws)|out-null
$ws=$null

Start-Sleep 1

[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Workbook)|out-null
$Workbook=$null

Start-Sleep 1

$excel.Quit()

Start-Sleep 1

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)|out-null
$excel=$null

[GC]::Collect()
[GC]::WaitForPendingFinalizers()
}

function Clean-Dates {

(Get-Content $sf) | Foreach-Object {$_ -replace '(\d{1,2})/(\d{1,2})/(\d{4})', '$3-$1-$2'} | Set-Content $sf

}

function Clean-Downloads {
Remove-Item $of
}

Get-Data
CSV-Creation
Clean-Dates
Clean-Downloads
现在,当通过powershell右键单击或在ISE中打开并运行此脚本时,将生成预期的csv文件输出

开始的WGET提供了一个约16KB的excel文件,生成的csv为约21KB。精确的内容匹配尽管如此,在脚本从powershell或powershell ise完成后,在查看而不仅仅是略读的层面上检查数据似乎显示了所有内容

从2016年5月10日起,将其插入visual cron或task scheduler会导致csv文件为空;1KB。从那时到现在,我没有对脚本做任何更改。据我所知,我没有对excel进行任何更改,只有公司要求的定期windows更新

第一个问题是,我可以检查什么来找出为什么这会导致空文件,因为它在powershell中执行良好


下一个问题是,我是否在代码中做了一些异常的事情,以至于可能导致了这种情况?如果是这样的话,您的评估认为我应该关注哪个部分?

不要在ISE中运行东西
powershell.exe
是99.9%的时间执行脚本的地方。我只有在进行更改时才在ISE中运行脚本,以查看它们是否在那里执行,然后验证右键单击“使用powershell运行”是否也有效。为了澄清,我没有做任何更改,当它停止工作时,当它正在工作。FWIW,我不建议从任务调度器运行Office应用程序,因为。比尔,我理解;有没有更好的方法不使用excel将excel文件转换为csv?编辑:听起来有点傻,我的意思是在某种程度上避免了com对象之类的东西?你搜索过吗?