Question: I'm working on a Mssql install script and I want to get the results of a silent mssql installation. In my PowerShell script I run this command:

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

```

Which should return 0 on fail and 1 on pass. Unfortunately, I don't get any output back. Any ideas?

Answer: 
An alternative to `Start-Process` is the more syntactically terse call operator `&`.

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

```

The exit code will be contained in the built-in variable `$LASTEXITCODE` so:

```
Write-Host $LASTEXITCODE

```

This will contain the exit code of the program run so you don't necessary have to run it with CMD.exe you could just do:

```
& ping.exe doesnotexist ; Write-Host $LASTEXITCODE

```

Applied to your command line program:

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

```

Or just:

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

```

In both cases `$LASTEXITCODE` should be 0 for success, non-zero otherwise (if the external program was written correctly).
This is how you do it: `start` is actually an alias `Start-Process`, so you have to look at *it's* documentation, which is a lot different than cmd.exe's `start`. So you can do this:

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

```

So easy!