6

Mssql インストール スクリプトに取り組んでおり、mssql のサイレント インストールの結果を取得したいと考えています。私の PowerShell スクリプトでは、次のコマンドを実行します。

$result = (start cmd "/c D:\SQL2008R2\SQL2008R2\setup.exe /CONFIGURATIONFILE=sqlconfig.ini && exit 0 || exit 1")

失敗した場合は 0 を返し、合格した場合は 1 を返します。残念ながら、出力は返されません。何か案は?

4

3 に答える 3

10

の代替Start-Processは、より構文的に簡潔な call operator&です。

& cmd.exe /c 'ping.exe doesnotexist && exit 0 || exit 1'

終了コードは組み込み変数に含まれる$LASTEXITCODEため、次のようになります。

Write-Host $LASTEXITCODE

これにはプログラム実行の終了コードが含まれているため、CMD.exe で実行する必要はありません。

& ping.exe doesnotexist ; Write-Host $LASTEXITCODE

コマンド ライン プログラムに適用されます。

& cmd.exe /c 'D:\SQL2008R2\SQL2008R2\setup.exe /CONFIGURATIONFILE=sqlconfig.ini && exit 0 || exit 1'

あるいは単に:

& D:\SQL2008R2\SQL2008R2\setup.exe /CONFIGURATIONFILE=sqlconfig.ini

どちらの場合も$LASTEXITCODE、成功の場合は 0 であり、それ以外の場合 (外部プログラムが正しく作成されている場合) はゼロ以外です。

于 2012-06-12T23:53:16.957 に答える
2

これはあなたがそれを行う方法です:start実際には aliasStart-Processであるため、cmd.exe の とは大きく異なるドキュメントを確認する必要startがあります。だからあなたはこれを行うことができます:

(Start-Process -FilePath "cmd.exe /c ..." -Wait -Passthru).ExitCode

とても簡単!

于 2012-06-12T20:55:11.413 に答える