Whenever I add either of these two lines to the Installation program in SCCM, the application fails. Removing them, the application installs fine. SCCM is not liking the syntax of my command line. I really need to pass a 3010 code back to sccm for a restart.
I asked the same question on Reddit. Here is the answer I got. (Thank you reddit user work-work-work-work)
Check how [Switch] works as a parameter
It has one Property “IsPresent” which is a bool.
By specifying the parameter itself it switches to True, as the parameter was present. (Mostly. The Switch should default to False without having to specify it explicitly)
TypeName: System.Management.Automation.SwitchParameter
I use the following which works for me and is not as long or complicated as above:
“Deploy-Application.exe” -deploymode silent -AllowRebootPassThru
The code in-line that does passthru to SCCM is as follows:
$RC = Execute-Process -Path “blahblah” -Parameters “blahblah” -WindowStyle ‘Hidden’ -IgnoreExitCodes “3” -PassThru
if ($RC.ExitCode -eq “3”) {
Exit-Script -ExitCode 3010
}
You use ignoreexistcode here so that 3 doesn’t trigger AppDeploy to report a failure but you also use the passthru to send it forward. At some point, you still have to tell the script to exit and return that code so in my case, I chose to convert it in-line to a 3010 rather than add it to the app object in SCCM.
So, I’ve got the script to exit with 3010, but it’s still not passing it to SCCM
Here is my installation program line: PowerShell.exe -Executionpolicy bypass .\Deploy-Application.ps1 -DeploymentType “Install” -DeployMode “Silent” -AllowRebootPassThru
The exit line in the log is:
[Post-Installation] :: A restart has been flagged as required.
[Post-Installation] :: NetMotionWireless,Inc._NetMotionMobilityClient_11.04.22344_x64_EN_01 Installation completed with exit code [3010].
But I get a failed error in Software Center of 0x1(1). The application installed fine. When I restart, the detection method kicks in and the app shows installed.
My guess is it is not passing the 3010 exit code to SCCM, thus prompting for a restart, thus completing the installation.
Alternatively you can change the default value of the parameter AllowRebootPassthru (fram false to true) inside deploy-application.ps1 (I’ve done so in my “template”).