Это довольно простой скрипт, но он не всегда работает. Это сработало однажды сегодня, когда я впервые запустил его. Я считаю, что он не открывает файлы по пути, указанному мной при последующих запусках. Я не вижу ошибок в выводе журнала, поэтому я не уверен, куда идти дальше. Я видел темы на этом форуме о добавлении папки рабочего стола по этому пути, что я и сделал: C:\Windows\SysWOW64\config\systemprofile. Я использую 64-битную версию Excel 2013.

Вот мой сценарий:

$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$excel.displayAlerts = $false
$path = "C:\Workbooks"
$workbook = Get-ChildItem -path $path -include *.xlsx, *.xls -recurse;

foreach ($file in $workbook) {
$workbook = $excel.Workbooks.Open($file.FullName)
$excel.ActiveWorkbook.RefreshAll()
$excel.ActiveWorkbook.save()
$excel.ActiveWorkbook.close()
}
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
Remove-Variable excel
$error | out-file "C:\Scripts\log\RefreshLog.txt"

0