我将在前言中说我不是真正的顶级编程梯队,无论是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本身中执行正常。
接下来是,我在代码中做了如此恶劣的事情,它可能导致这种类型的事情?如果是的话,你的评价说我应该关注哪个部分?