如何解决安装ADFS会引发“空参数”
| 这是我安装ADFS脚本的一部分。很简单,但是启动进程似乎以一种有趣的方式解析开关。有什么我想念的吗?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错误:5124:6 [2070099085]:System.FormatException:索引(从零开始)必须大于或等于零且小于参数列表的大小。
在System.Text.StringBuilder.AppendFormat(IFormatProvider提供程序,字符串格式,Object []参数)
在Microsoft.IdentityServer.Setup.Diagnostics.TraceLog.WriteLine(TraceEventType eventType,String msg,Object [] args)
如果我手动执行完全相同的命令(从write-host的输出),一切正常。
有任何想法吗?
谢谢。
解决方法
我无法删除该问题,但是通过调查较旧的日志发现,即使我以常规方式运行命令,该错误也会发生。因此,以上脚本实际上按预期工作。
,(我不太了解这里发生了什么,但是有两种可能。)
一种选择是您的
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
的错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。