4

На сервере 2012 R2 я монтирую носитель SQLServer как диск (работает), но каждый раз, когда я запускаю установку с помощью «Пуск-Процесс», возникает ошибка «Не удается найти позиционный параметр, который принимает аргумент« $ null »» всегда генерируется, хотя мои пути и аргументы хороши (установка завершается успешно).

$sqlreturn = Start-Process -FilePath "$DVDDriveLetter`\Setup.exe" -ArgumentList "$ArgumentList" -Wait

Установка работает, у меня есть длинный список аргументов, как коллекция, которая также распознается правильно (все параметры работают для SQL). У меня есть это записать аргументы, используя цикл foreach с Write-Verbose и все распознается параметром Start-Process "-ArgumentList" должным образом:

Write-Verbose "--- Full Argument List:"
foreach ($arg in $ArgumentList) {Write-Verbose $arg}

VERBOSE: --- Full Argument List:
VERBOSE: /ACTION=Install
VERBOSE: /IACCEPTSQLSERVERLICENSETERMS
VERBOSE: /X86=False
VERBOSE: /TCPENABLED=1
VERBOSE: /SQLSYSADMINACCOUNTS=DOMAIN\server_admins DOMAIN\SQLServer_admins
VERBOSE: /QS
VERBOSE: /FEATURES=SQLENGINE,REPLICATION,FULLTEXT,BIDS,CONN,IS,BC,SDK,BOL,SSMS,ADV_SSMS,SNAC_SDK
VERBOSE: /INSTANCENAME=MSSQLSERVER
VERBOSE: /INSTANCEID=MSSQLSERVER
VERBOSE: /SQLBACKUPDIR=C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup
VERBOSE: /SQLUSERDBDIR=C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data
VERBOSE: /SQLUSERDBLOGDIR=C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data
VERBOSE: /SQLTEMPDBDIR=C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data
VERBOSE: /SQLTEMPDBLOGDIR=C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data
VERBOSE: /SQLSVCACCOUNT=DOMAIN\MSAAccount1$
VERBOSE: /AGTSVCACCOUNT=DOMAIN\MSAAccount2$
VERBOSE: /ISSVCACCOUNT=DOMAIN\MSAAccount3$
VERBOSE: /SAPWD=System.Security.SecureString
VERBOSE: /SECURITYMODE=SQL

Так почему я всегда получаю сообщение об ошибке «Не удается найти позиционный параметр, который принимает аргумент« $ null »», даже если установка работает правильно?

1 ответ1

1

Оказывается, проблема заключалась в том, что отсутствовал параметр "-PassThru", так как по умолчанию командлет Start-Process не генерировал никаких выходных данных, поэтому ошибка была при попытке присвоить значение null переменной "$ sqlreturn"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .