Excel Powerlink在PowerShell中的性能问题

我们正在进行共享networking驱动器重组。 这将打破业务使用的数百个Excel文件中的链接。 为了减轻打击,我创build了一个自动重新链接这些文件的Powershell脚本。 但是,它的运行速度只有每分钟大约1MB。 这将需要几个月的时间来重新链接所有的Excel文件。 现在,我要求企业限制他们请求重新链接的数据量,但是,我可以让我的脚本运行的越快,企业就越快乐。 目前它function完善,速度很慢。 有没有人有任何build议,我可以如何加快这个Powershell脚本? 对于任何反馈,我们都表示感谢。

$object = New-Object -comObject Shell.Application $folder = $object.BrowseForFolder(0, 'Select the folder where your Excel files are located', 0) $oldname = "oldname" $newname = "newname" if (!$folder -or !$oldname -or !$newname) {exit} $excel = New-Object -comObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false foreach ($file in Get-ChildItem -literalPath $folder.self.Path*.xls?) { $workbook = $excel.Workbooks.Open($file.fullname) foreach ($link in $workbook.LinkSources(1)) { write-host Old link: $link $newlink = $link -ireplace [regex]::Escape($oldname), $newname if (Test-Path $newlink) { write-host New link: $newlink $workbook.ChangeLink($link,$newlink,1) } else { write-host New link does not exist: $newlink } } $workbook.Save() $workbook.Close() } $excel.quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook) [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers() 

看看ImportExcel模块。 它可以直接从Excel导入和导出数据,所以比使用COM对象更快更可靠。