We are having issues with SCCM clients, so we are uninstalling them and re-installing them. When I run ccmsetup.exe /uninstall it returns errors sometimes. Running msiexec /x client.msi seems to work better (not sure why). I created a script so to run, but when i have it run the “msiexec /x client.msi” it errors out with the “Start-Process” command.
Start-Process msiexec /x client.msi -workingDirectory "c:\windows\system32\ccmsetup…
so i tried to an Invoke-Expression after reading that powershell has issues sometimes with running cmd commands.
ex:
$a = @’
cmd.exe C/ c:\windows\system32\ccmsetup\msiexec /x client.msi
'@
I can get it to run using start process if i just use “msiexec /x” , but it doesn’t full run and errors out without “client.msi” being called.
I appreciate any help
It will probably work if you add quotation marks around the argument string that should be passed to msiexec:
Start-Process msiexec '/x client.msi' -WorkingDirectory 'c:\windows\system32\ccmsetup...'
If you did that without using positional parameters, it would look like this:
Start-Process -FilePath msiexec -ArgumentList '/x client.msi' -WorkingDirectory 'c:\windows\system32\ccmsetup...'
I can’t test this exact command without having something handy to do with Windows Installer at the moment, but this example works fine for me:
Start-Process -FilePath $env:ComSpec -ArgumentList '/k echo Hello, World!' -WorkingDirectory $env:SystemRoot
Worked perfectly. I thought i wrote it out similar to that, but I used double quotes. If i did I wonder if the double quotes was causing an issue. Have to read more on the differences with double quotes and single.
Thank you