0

これは、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エラー:5124:6 [2070099085]:System.FormatException:インデックス(ゼロベース)は、ゼロ以上で引数リストのサイズ未満である必要があります。
   System.Text.StringBuilder.AppendFormat(IFormatProviderプロバイダー、文字列形式、Object [] args)で
   Microsoft.IdentityServer.Setup.Diagnostics.TraceLog.WriteLine(TraceEventType eventType、String msg、Object [] args)で

(write-hostの出力から)まったく同じコマンドを手動で実行すると、すべてが正常に機能します。

何か案は?ありがとうございました。

4

2 に答える 2

1

質問を削除することはできませんが、古いログを調べたところ、コマンドを通常の方法で実行してもエラーが発生することがわかりました。したがって、上記のスクリプトは実際には意図したとおりに機能しています。

于 2011-05-27T06:59:56.027 に答える
0

(ここで何が起こっているのかはよくわかりませんが、2つの可能性があります。)

1つのオプションは、get-date意図したとおりに機能しないことです。その結果$logfile、パーセント記号(%)が含まれ、ADFS2.0インストーラーで「フォーマット文字列の挿入」が発生します。エラーメッセージはその方向を示しています。

ただし、PowerShellスクリプトを自分のシステムで実行すると、それを再現できません。

/quietまた、1つの引数で3つのコマンドライン引数( 、、/logfileおよびログファイル名)を渡しているように見えることにも注意してください。そのようにそれらを渡してみてください:

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

adfssetup.exeただし、これが問題の原因である場合は、のようなエラーで文句を言うと予想していましたcommand line argument '/quiet /logfile ...' not recognized

于 2011-05-27T05:05:11.007 に答える