title: Uninstalling Java 6 and Reinstalling Java 7 using Powershell
body: <p>I am using the following Powershell script. The first half (uninstall) works flawlessly. The second half (install) only works if I allow user input. Can anyone provide some assistance? Here is the script: (sorry for poor formatting)</p>
  
  <pre><code>#uninstall
  $java = Get-WmiObject -Class win32_product | where { $_.Name -like "*Java*"}
  $msiexec = "C:\Windows\system32\msiexec.exe";
  $msiexecargs = '/x "$($app.IdentifyingNumber)" /qn /norestart'
  
  if ($java -ne $null)
  {
      foreach ($app in $java)
      {
          write-host $app.LocalPackage
          write-host $app.IdentifyingNumber
          C:\Windows\system32\cmd.exe /c "C:\Windows\system32\msiexec.exe /x $($app.IdentifyingNumber) /qn"
          Start-Process -FilePath $msiexec -Arg $msiexecargs -Wait -Passthru
          [Diagnostics.Process]::Start($msiexec, $msiexecargs);
      }
  }
  if ($java -ne $null)
  {
      foreach ($app in $java)
  
  {
          write-host $app.LocalPackage
          write-host $app.IdentifyingNumber
  
  C:\Windows\system32\cmd.exe /c 
  
  "C:\Windows\system32\msiexec.exe /x $($app.IdentifyingNumber) /qn"
  
          Start-Process -FilePath $msiexec -Arg $msiexecargs -Wait -Passthru
          [Diagnostics.Process]::Start($msiexec, $msiexecargs);
      }
  }
  
  function Get-ScriptDirectory{
      $Invocation = (Get-Variable MyInvocation -Scope 1).Value
  
  try {
          Split-Path $Invocation.MyCommand.Path -ea 0
      }
  
  catch {
      Write-Warning 'You need to call this function from within a saved script.'
      }
  }
  
  function Get-Architecture{
      return $(gwmi win32_operatingsystem).OSArchitecture
  }
  
  
  $Path = Get-ScriptDirectory
  
  #Close all instances of IE, Firefox, &amp; Chrome
  Get-Process | where {$_.ProcessName -match "iexplore"} | Stop-Process -Force
  Get-Process | where {$_.ProcessName -match "chrome"} | Stop-Process -Force
  Get-Process | where {$_.ProcessName -match "firefox"} | Stop-Process -Force
  
  #Install
  Start-Process -FilePath "msiexec.exe" -ArgumentList "/i "C:\temp\jre1.7.0_17.msi" ""/log "c:\temp\javainst.log " -Credential $cred -wait
  
  #Also Install the 64-bit JRE if on a 64 workstation
  
  if(Get-Architecture -match "64")
  {
      $cred = Get-Credential
      Start-Process -FilePath "msiexec.exe" -ArgumentList "/i "C:\temp\jre1.7.0_17 (x64).msi" ""/log c:\temp\javainst.log " -Credential $cred -wait
  }
  
  #Import reg keys to disable auto updating
  reg import "C:\temp\JavaUpdate.reg"{ 
      }
  </code></pre>