Как устранить ошибку выражения с нулевым значением - PullRequest
0 голосов
/ 07 мая 2020

У меня есть сценарий PowerShell (скопированный из Net), который будет выполняться с помощью SQL Задания агента сервера. Этот скрипт прочитает файл Excel и создаст из него файл CSV.
У меня не установлен Excel на машине, на которой выполняется этот скрипт, поэтому я использую этот метод.

Код:

$strFileName = "C:\xxxx\yyyy.xlsx"
$strSheetName = 'MasterCalendar$'
$strProvider = "Provider=Microsoft.ACE.OLEDB.12.0"
$strDataSource = "Data Source = $strFileName"
$strExtend = "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';"
$strQuery = "Select [Machine_ID],[1469] from [$strSheetName]"

$objConn = New-Object System.Data.OleDb.OleDbConnection("$strProvider;$strDataSource;$strExtend")
$sqlCommand = New-Object System.Data.OleDb.OleDbCommand($strQuery)
$sqlCommand.Connection = $objConn
$objConn.open()

$da = New-Object system.Data.OleDb.OleDbDataAdapter($sqlCommand)
$dt = New-Object system.Data.datatable
[void]$da.fill($dt)

$dataReader.close()
$objConn.close()

$dt 

$dt | Export-Csv C:\xxxx\data.csv -NoTypeInformation

При выполнении через SQL серверный агент выдает следующую ошибку:

Сообщение выполняется от имени пользователя: Test \ User1. Шаг задания получил ошибку в строке 17 сценария PowerShell. Соответствующая строка - «$ dataReader.close ()». Исправьте сценарий и перенесите задание. PowerShell возвращает следующую информацию об ошибке: «Вы не можете вызвать метод для выражения с нулевым значением. '. Код выхода из процесса -1. Шаг не удался.

Я новичок в написании сценариев и PowerShell, не могу понять проблему, так как этот точный код работает нормально на моем компьютере, но начинает выдавать ошибку при выполнении через задание агента сервера SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...