При установке ADFS выдается «нулевой параметр» - PullRequest
0 голосов
/ 25 мая 2011

Это часть моего скрипта для установки ADFS.Довольно просто, но кажется, что Start-Process забавно анализирует переключатели.Что-то мне не хватает?

write-host "Installing ADFS - process should take 30-45 seconds"
$installtime=get-date -uformat "%Y_%h_%d_%H_%M"
$logfile="$pwd\adfssetup_$installtime.log"
$ADFSInstall = "AdfsSetup.exe"
$ADFSInstallParams = '/quiet /logfile '+$logfile
Start-Process $ADFSInstall $ADFSInstallParams -wait
if ({gc -path $logfile | select-string -pattern "AD FS 2.0 is already installed on this computer"} -eq $null){write-host -ForegroundColor Cyan "ADFS Installed"} Else{write-host -ForegroundColor "There was an error Installing ADFS, please check the log file: $logfile;break}

Если я выполняю приведенный выше скрипт, я получаю в файле журнала следующее:

Microsoft.IdentityServer.Setup Error: 5124 :   6 [ 2070099085 ]: System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
   at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
   at Microsoft.IdentityServer.Setup.Diagnostics.TraceLog.WriteLine(TraceEventType eventType, String msg, Object[] args)

Если я выполняю ту же самую команду вручнуюс выхода write-host) все отлично работает.

Есть идеи?Спасибо.

Ответы [ 2 ]

1 голос
/ 27 мая 2011

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

0 голосов
/ 27 мая 2011

(Я не совсем понимаю, что здесь происходит, но здесь есть две возможности.)

Один из вариантов заключается в том, что ваш get-date не работает так, как вы предполагали.В результате $logfile содержит знак процента (%), который вызывает «внедрение строки формата» в установщике AD FS 2.0.Сообщение об ошибке указывает в этом направлении.

Однако я не могу воспроизвести это, если я запускаю ваш скрипт PowerShell в моей собственной системе.

Также обратите внимание, что похоже, что вы пропускаете три командной строкиаргументы (/quiet, /logfile и имя файла журнала) в одном аргументе.Попробуйте передать их так:

$ADFSInstallParams = @('/quiet', '/logfile', $logfile)
Start-Process $ADFSInstall @ADFSInstallParams -wait

Однако, если бы это было причиной проблемы, я бы ожидал, что adfssetup.exe пожалуется на ошибку типа command line argument '/quiet /logfile ...' not recognized.

...