Скрипт больше не работает правильно после обновления Windows и переключения на copssh
У меня возникла проблема после обновления Windows (с 2012 до server 2019) и Office (до 2016) до более новых версий. Когда мы вызываем VBscript удаленно через ssh, он работает неправильно. Проблема со скриптами, вызываемыми через ssh, все еще присутствует, и, возможно, кто-то может помочь. Когда мы запускаем скрипт на bash, при запуске непосредственно на сервере Windows он работает правильно. Когда мы вызываем его с другого сервера по ssh - он запускается, работает и некоторые функции выполняются, но не все. Например, системные функции в VBS, такие как копирование, вставка и т. д., работают, а функции Excel — нет. Я предполагаю, что если мы вызываем скрипт из ssh, мы что-то упускаем в среде (поскольку скрипты работают, если они вызываются с сервера Windows без ssh), но я не могу найти, чего не хватает. Любая помощь в этом?
Script:
`Option Explicit
Dim path, inFile, inFile2, dataFile, dataFile2, outFile, objExcel, objWorkBook, objWorkBookData, lastRow, fso, userName, stdout, reportName, uName, outFileXLSX
Wscript.Echo "Script start"
On Error Resume Next
.....
Wscript.Echo "Before file copy"
' copy files
inFile2 = path & "\tmp\infile" & uName & ".xlsb"
dataFile2 = path & "\tmp\datafile" & uName & ".xlsx"
fso.CopyFile inFile, inFile2, True
fso.CopyFile dataFile, dataFile2, True
inFile = inFile2
dataFile = dataFile2
' DEBUG
Wscript.Echo inFile2
Wscript.Echo dataFile2
Wscript.Echo "Before file open"
' open workbooks
Set objExcel = createobject("excel.application")
If IsObject(objExcel) Then
Wscript.Echo "Object exists"
End If
objExcel.AutomationSecurity = 1
objExcel.Visible = False
objExcel.DisplayAlerts = False
Set objWorkBook = objExcel.Workbooks.Open(inFile)
Set objWorkBookData = objExcel.Workbooks.Open(dataFile)
' DEBUG
Wscript.Echo objWorkBookData.Worksheets(1).cells(6, 1).value
' write title page info
objWorkBook.Worksheets(1).cells(16, 1).value = objWorkBookData.Worksheets(1).cells(6, 1).value
objWorkBook.Worksheets(1).cells(17, 1).value = "Report-Erstelldatum: " & Now
....
' save report
outFileXLSX = Mid(outFile, 1, (Len(outFile)-1)) & "x"
If fso.FileExists(outFileXLSX) = True Then
Call fso.DeleteFile(outFileXLSX)
End If
objWorkBook.SaveAs outFileXLSX, 51
Wscript.Echo outFileXLSX
objWorkBook.Close True
objWorkBookData.Close True
objExcel.Quit
WScript.Quit
On Error Goto 0
Output from windows server called from bash console (NOTE - reads Excel files and creates 11111Report_test.xlsx at the end):
bash-3.2$ cscript report_2.vbs Report_test.xlsx 11111
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.
Script start
Before file copy
C:\Users\user\Documents\tmp\infile11111.xlsb
C:\Users\user\Documents\tmp\datafile11111.xlsx
Before file open
Object exists
Creation date: 19.09.2022
C:\Users\user\Documents\reports\11111Report_test.xlsx
Output from ssh terminal (NOTE - does not read the data from the Excel file after "Object exists" and 11111Report_test.xlsx is not created):
$ cscript report_2.vbs Report_test.xlsx 11111
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.
Script start
Before file copy
C:\Users\user\Documents\tmp\infile11111.xlsb
C:\Users\user\Documents\tmp\datafile11111.xlsx
Before file open
Object exists
C:\Users\user\Documents\reports\11111Report_test.xlsx `