Visual Cron和Windows任务调度程序执行具有意外结果的PowerShell脚本

时间:2018-05-16 21:39:08

标签: 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.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

现在这个脚本,当通过右键单击或在ISE中打开并通过powershell运行时,会生成csv文件的预期输出。

起始WGET给出一个~16KB的excel文件,得到的csv约为21KB。确切的内容与之相匹配,在从PowerShell或powershell ise完成脚本之后,在查看级别而不仅仅是略读的数据检查似乎显示了所有内容。

将此文件插入到visual cron或任务计划程序中,因为大约5月10日将导致csv文件为空; 1KB。从那时到现在,我没有对脚本进行任何更改。我没有对我所知道的excel进行任何更改,并且只发生了公司要求的常规Windows更新。

第一个问题是,我可以检查什么来弄清楚为什么这会导致空文件,因为它在powershell本身中执行正常。

接下来是,我在代码中做了如此恶劣的事情,它可能导致这种类型的事情?如果是的话,你的评价说我应该关注哪个部分?

0 个答案:

没有答案