cls ######### Change the Following using Find and replace ######### Note the full file paths and change for you environment ######### Activates via kms <# out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append c:\WhereYouLocallyPutTheXMLFile\Uninstall32Office2013.xml c:\WhereYouLocallyPutTheXMLFile\Uninstall32PRJPRO2013.xml c:\WhereYouLocallyPutTheXMLFile\Uninstall32VISPRO2013.xml c:\WhereYouLocallyPutTheXMLFile\Uninstall32SHAREO2013.xml \\2016NetworkFileFolder\Office2016 /sethst:kms.your.server $WhereToGo = “C:\LocalFolder” #> # Elevate to Admin Code # Get the ID and security principal of the current user account $myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent() $myWindowsPrincipal=new-object System.Security.Principal.WindowsPrincipal($myWindowsID) # Get the security principal for the Administrator role $adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator # Check to see if we are currently running "as Administrator" if ($myWindowsPrincipal.IsInRole($adminRole)) { # We are running "as Administrator" - so change the title and background color to indicate this $Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Elevated)" $Host.UI.RawUI.BackgroundColor = "Black" clear-host } else { # We are not running "as Administrator" - so relaunch as administrator # Create a new process object that starts PowerShell $newProcess = new-object System.Diagnostics.ProcessStartInfo "PowerShell"; # Specify the current script path and name as a parameter $newProcess.Arguments = $myInvocation.MyCommand.Definition; # Indicate that the process should be elevated $newProcess.Verb = "runas"; # Start the new process [System.Diagnostics.Process]::Start($newProcess); # Exit from the current, unelevated, process exit } # Run your code that needs to be elevated below # Run your code that needs to be elevated below ##### Functions ##### ##### Install Office 2016 x64 Functions ##### Function XGonTake32 { $UninstallAllStart = "All Office 64-Bit Components Uninstall Start Time: " $UninstallAllStartTime = (Get-Date).ToString() $UninstallAllStartTimes = Get-Date Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $UninstallAllStart + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### Uninstall Office 2010 ##### $args2013PR = '/uninstall PROPLUS /dll OSETUP.DLL /config "c:\WhereYouLocallyPutTheXMLFile\Uninstall32Office2013.xml"' $argsPRJPRO = '/uninstall PRJPRO /dll OSETUP.DLL /config "c:\WhereYouLocallyPutTheXMLFile\Uninstall32PRJPRO2013.xml"' $argsVISPRO = '/uninstall VISPRO /dll OSETUP.DLL /config "c:\WhereYouLocallyPutTheXMLFile\Uninstall32VISPRO2013.xml"' $aargs32ADE = "/uninstall {90140000-00D1-0409-0000-0000000FF1CE} /quiet" $2010PROStart = "Start: Uninstall Office 2010 XML" $2010PROEnd = "End: Uninstall Office 2010 XML" $2010PR02Start = "Start: Uninstall Office 2010 XML Second Pass" $2010PR02End = "End: Uninstall Office 2010 XML Second Pass" $2010PRJStart = "Start: Uninstall Project 2010 XML" $2010PRJEnd = "End: Uninstall Project 2010 XML" $2010VISStart = "Start: Uninstall Visio 2010 XML" $2010VISEnd = "End: Uninstall Visio 2010 XML" $2010ADEStart = "Start: Uninstall 2010 ADE XML" $2010ADEEnd = "End: Uninstall 2010 ADE XML" $2013PROStart = "Start: Uninstall Office 2013 XML" $2013PROEnd = "End: Uninstall Office 2013 XML" $2013PRO2Start = "Start: Uninstall Office 2013 XML Second Pass" $2013PRO2End = "End: Uninstall Office 2013 XML Second Pass" $2013PRJStart = "Start: Uninstall Project 2013 XML" $2013PRJEnd = "End: Uninstall Project 2013 XML" $2013VISStart = "Start: Uninstall Visio 2013 XML" $2013VISEnd = "End: Uninstall Visio 2013 XML" $2010ADEStart = "Start: Uninstall 2010 ADE Registry" $2010ADEEnd = "End: Uninstall 2010 ADE Registry" #$argsRe2013 = "/uninstall {90150000-0011-0000-0000-0000000FF1CE} /quiet" #$argsReTool = "/uninstall {90150000-001F-0409-0000-0000000FF1CE} /quiet" #$argsInfoPa = "/uninstall {90150000-0044-0409-0000-0000000FF1CE} /quiet" #$argsShared = "/uninstall {90150000-006E-0409-0000-0000000FF1CE} /quiet" #$argsVisMUI = "/uninstall {90140000-0054-0409-0000-0000000FF1CE} /quiet" #$argsPRJMUI = "/uninstall {90140000-00B4-0409-0000-0000000FF1CE} /quiet" #$argsNoClue = "/uninstall {90150000-001F-040C-0000-0000000FF1CE} /quiet" #$argsESPTLS = "/uninstall {90150000-001F-0C0A-0000-0000000FF1CE} /quiet" #$argsEnPTLS = "/uninstall {90150000-002C-0409-0000-0000000FF1CE} /quiet" #$argsOSMMUI = "/uninstall {90150000-00E1-0409-0000-0000000FF1CE} /quiet" #$argsMetada = "/uninstall {90150000-0115-0409-0000-0000000FF1CE} /quiet" #$argsESPTLS = "/uninstall {90150000-001F-0C0A-0000-0000000FF1CE} /quiet" #$argsSHAREO = '/uninstall PROPLUS /dll OSETUP.DLL /config "c:\WhereYouLocallyPutTheXMLFile\Uninstall32SHAREO2013.xml"' ##### 2010 Office Pro XML Uninstall $2010PROStartT = Get-Date Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2010PROStart + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-Process "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\Office Setup Controller\setup.exe" -ArgumentList $args2013PR -Wait $2010PROEnd + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2010PROEndT = Get-Date $2010ProH = (($2010PROEndT - $2010PROStartT).hours) $2010ProM = (($2010PROEndT - $2010PROStartT).minutes) $2010ProS = (($2010PROEndT - $2010PROStartT).seconds) Write-output ("Total Uninstall Time:" + " " + $2010ProH + ":" + $2010ProM + ":" + $2010ProS) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### 2010 Project Pro XML Uninstall $2010PRJStartT = Get-Date Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2010PRJStart + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-Process "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\Office Setup Controller\setup.exe" -ArgumentList $argsPRJPRO -Wait $2010PRJEnd + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2010PRJEndT = Get-Date $2010PRJH = (($2010PRJEndT - $2010PRJStartT).hours) $2010PPRJM = (($2010PRJEndT - $2010PRJStartT).minutes) $2010PRJS = (($2010PRJEndT - $2010PRJStartT).seconds) Write-output ("Total Uninstall Time:" + " " + $2010PRJH + ":" + $2010PRJM + ":" + $2010PRJS) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### 2010 Visio Pro XML Uninstall $2010VISStartT = Get-Date Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2010VISStart + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-Process "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\Office Setup Controller\setup.exe" -ArgumentList $argsVISPRO -Wait $2010VISEnd + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2010VISEndT = Get-Date $2010VISH = (($2010VISEndT - $2010VISStartT).hours) $2010VISM = (($2010VISEndT - $2010VISStartT).minutes) $2010VISS = (($2010VISEndT - $2010VISStartT).seconds) Write-output ("Total Uninstall Time:" + " " + $2010PRJH + ":" + $2010PRJM + ":" + $2010PRJS) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### 2010 Office Enterprise XML Uninstall Second Pass $2010PRJStartT2 = Get-Date Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2010PR02Start + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-Process "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\Office Setup Controller\setup.exe" -ArgumentList $args2013PR -Wait $2010PR02End + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2010PROEndT2 = Get-Date $2010ProH2 = (($2010PROEndT2 - $2010PROStartT2).hours) $2010ProM2 = (($2010PROEndT2 - $2010PROStartT2).minutes) $2010ProS2 = (($2010PROEndT2 - $2010PROStartT2).seconds) Write-output ("Total Uninstall Time:" + " " + $2010ProH2 + ":" + $2010ProM2 + ":" + $2010ProS2) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### ADE Uninstall Registry $MCADEStartT = Get-Date Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2010ADEStart + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-Process "C:\Windows\System32\msiexec.exe" -ArgumentList $aargs32ADE -Wait $2010ADEEnd + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $MCADEEndT = Get-Date $MCADEH = (($MCADEEndT - $MCADEStartT).hours) $MCADEM = (($MCADEEndT - $MCADEStartT).minutes) $MCADES = (($MCADEEndT - $MCADEStartT).seconds) Write-output ("Total Uninstall Time:" + " " + $MCADEProH + ":" + $MCADEProM + ":" + $MCADES) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### 2013 Office Pro XML Uninstall $2013PROStartT = Get-Date Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2013PROStart + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-process "c:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\setup.exe" -ArgumentList $args2013PR -Wait $2013PROEnd + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2013PROEndT = Get-Date $2013ProH = (($2013PROEndT - $2013PROStartT).hours) $2013ProM = (($2013PROEndT - $2013PROStartT).minutes) $2013ProS = (($2013PROEndT - $2013PROStartT).seconds) Write-output ("Total Uninstall Time:" + " " + $2013ProH + ":" + $2013ProM + ":" + $2013ProS) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### 2013 Project Pro XML Uninstall $2013PRJStartT = Get-Date Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2013PRJStart + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-process "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Office Setup Controller\setup.exe" -ArgumentList $argsPRJPRO -Wait $2013PRJEnd + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2013PRJEndT = Get-Date $2013PRJH = (($2013PRJEndT - $2013PRJStartT).hours) $2013PPRJM = (($2013PRJEndT - $2013PRJStartT).minutes) $2013PRJS = (($2013PRJEndT - $2013PRJStartT).seconds) Write-output ("Total Uninstall Time:" + " " + $2013PRJH + ":" + $2013PRJM + ":" + $2013PRJS) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### 2013 Visio Pro XML Uninstall $2013VISStartT = Get-Date Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2013VISStart + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-process "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Office Setup Controller\setup.exe" -ArgumentList $argsVISPRO -Wait $2013VISEnd + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $2013VISEndT = Get-Date $2013VISH = (($2013VISEndT - $2013VISStartT).hours) $2013VISM = (($2013VISEndT - $2013VISStartT).minutes) $2013VISS = (($2013VISEndT - $2013VISStartT).seconds) Write-output ("Total Uninstall Time:" + " " + $2013PRJH + ":" + $2013PRJM + ":" + $2013PRJS) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### Export Times to txt file ##### Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $UninstallAllEndTimes = Get-Date $UninstallAllEnd = "All Office 64-Bit Components Uninstall End Time: " $UninstallAllStart + " " + "@" + " " + $UninstallAllStartTime | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $UninstallAllEnd + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $UninstallAllTimesH = (($UninstallAllEndTimes - $UninstallAllEndTimes).hours) $UninstallAllTimesM = (($UninstallAllEndTimes - $UninstallAllEndTimes).minutes) $UninstallAllTimesS = (($UninstallAllEndTimes - $UninstallAllEndTimes).seconds) Write-output ("Total Uninstall Time:" + " " + $UninstallAllTimesH + ":" + $UninstallAllTimesM + ":" + $UninstallAllTimesS) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-Sleep 3 ##### Function Install Office 2013 x64 ##### #XGonGive32 } Function XGonGive32 { ##### 32 bit Office Install ##### Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $Office2016Start = "Install: Office 2016 64-Bit Enterprise" $Office2016End = "Finnish: Office 2016 64-Bit Enterprise" $Office2016StartTime = (Get-Date).ToString() $Office2016StartT = Get-Date Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $Office2016Start + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append start-process "\\2016NetworkFileFolder\Office2016\64bit\Staff\setup.exe" -wait Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### Export Times to txt file ##### $Office2016EndT = Get-Date $Office2016H = (($Office2016EndT - $Office2016StartT).hours) $Office2016M = (($Office2016EndT - $Office2016StartT).minutes) $Office2016S = (($Office2016EndT - $Office2016StartT).seconds) $Office2016Start + " " + "@" + " " + $Office2016StartTime | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $Office2016End + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Total Uninstall Time:" + " " + $Office2016H + ":" + $Office2016M + ":" + $Office2016S) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-Sleep 3 ##### Function Install Project Pro x64 ##### #XGonGiveProPro32 } Function XGonGiveProPro32 { ##### 32 bit Project Pro Install ##### Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $Project2016Start = "Install: Project Professional 2016 64-Bit" $Project2016End = "Finnish: Project Professional 2016 64-Bit" $Project2016StartTime = (Get-Date).ToString() $Project2016StartT = Get-Date $Project2016Start + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append start-process "\\2016NetworkFileFolder\Office2016\ProjectPro2016\64bit\Staff\setup.exe" -wait Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### Export Times to txt file ##### $Project2016EndT = Get-Date $Project2016H = (($Project2016EndT - $Project2016StartT).hours) $Project2016M = (($Project2016EndT - $Project2016StartT).minutes) $Project2016S = (($Project2016EndT - $Project2016StartT).seconds) $Project2016Start + " " + "@" + " " + $Project2016StartTime | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $Project2016End + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Total Uninstall Time:" + " " + $Project2016H + ":" + $Project2016M + ":" + $Project2016S) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-Sleep 3 ##### Function Install Visio x64 ##### #XGonGiveVisi32 } Function XGonGiveVisi32 { ##### 32 bit Visio Pro Install ##### Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $Visio2016Start = "Install: Visio Professional 2016 64-Bit" $Visio2016End = "Finnish: Visio Professional 2016 64-Bit" $Visio2016StartTime = (Get-Date).ToString() $Visio2016StartT = Get-Date $Visio2016Start + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append start-process "\\2016NetworkFileFolder\Office2016\Visio2016\64bit\Staff\setup.exe" -wait Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### Export Times to txt file ##### $Visio2016EndT = Get-Date $Visio2016H = (($Visio2016T - $Visio2016T).hours) $Visio2016M = (($Visio2016T - $Visio2016T).minutes) $Visio2016S = (($Visio2016T - $Visio2016T).seconds) $Visio2016Start + " " + "@" + " " + $Visio2016StartTime | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $visio2016End + " " + "@" + " " + ((Get-Date).ToString()) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Total Uninstall Time:" + " " + $Visio2016H + ":" + $Visio2016M + ":" + $Visio2016S) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Start-Sleep 3 ##### Activate Office Function ##### #2016x64x32 } ##### Activate Office Functions ##### ##### Change to Office 2016 program directory ##### Function 2016x64x32 { Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Change PS Working Directory: c:\Program Files\Microsoft Office\Office16" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append # Change to Office 2016 program directory CD "c:\Program Files\Microsoft Office\Office16" #WonderTwinsPowerActivate } ##### Activate Office 2016 using campus kms ##### Function WonderTwinsPowerActivate { Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Set KMS Server: kms.your.server" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### Point to KMS Server ##### cscript ospp.vbs /sethst:kms.your.server Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Activation: All Office Products" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### Activate Office ##### cscript ospp.vbs /act Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Pausing Twenty Seconds: Wait For Dialogue Activation Windows" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append start-sleep 20 } ##### Close All Open Windows/Dialog Boxes ##### Function CloseEm { Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Closing All Dialogue And Or Office Activation Windows" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append (get-process | ? { $_.mainwindowtitle -ne "" -and $_.processname -ne "powershell" } )| stop-process } ##### ##### ##### ##### ##### Script ##### ##### ##### ##### ##### $StartTimeScript = (Get-Date).ToString() $Starters = Get-Date Write-Output ("SCRIPT START" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append ##### Ping computer ##### If (Test-Connection $Env:ComputerName -count 1 -quiet) { Write-Output ("$env:ComputerName" + " " + "Ping Successful" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-Output "32 bit Script Will Proceed" | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append } Else { Write-Output ($env:Computername + " " + "Ping Failed" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-Output "Cancel Installation" | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Exit } ##### Set Script Variables ##### # Folder Variables # $WhereToGo = "C:\LocalFolder" # Arrays # $DasArrays = @("outlook" , "infopath" , "onedrive" , "excel" , "groove" , "lync" , "lync99" , "skye" , "msaccess" , "onenote" , "onenotem" , "ocpubmgr" , "mspub" , "msouc" , "powerpnt" , "winword" , "visio" , "winproj") ############### Running Script ################## ##### Check for Local Folder directory and Verify ##### If (!(test-path $WhereToGo)) { Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Local Folder Folder: Created" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append New-Item -ItemType Directory -Path $WhereToGo -Force} Else { Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Local Folder Folder: Exists" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append $null } If (!(test-path $WhereToGo)) { Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Local Folder Folder: Cannot Create" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Exit } Else { Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Local Folder Folder: Verified" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append } ##### Copy Office uninstall files to Local Folder ##### Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Copy Uninstall XML Files to C:\LocalFolder" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Copy-Item "\\NetworkShareToCopyOver\Office2016\UninstallXMLs\Uninstall32Office2013.xml" -destination C:\LocalFolder -force Copy-Item "\\NetworkShareToCopyOver\Office2016\UninstallXMLs\Uninstall32Office2010.xml" -destination C:\LocalFolder -force Copy-Item "\\NetworkShareToCopyOver\Office2016\UninstallXMLs\Uninstall32PRJPRO2013.xml" -destination C:\LocalFolder -force Copy-Item "\\NetworkShareToCopyOver\Office2016\UninstallXMLs\Uninstall32VISPRO2013.xml" -destination C:\LocalFolder -force #Copy-Item "\\NetworkShareToCopyOver\Office2016\UninstallXMLs\Uninstall32SHAREO2013.xml" -destination C:\LocalFolder -force #Copy-Item "\\NetworkShareToCopyOver\Office2016\UninstallXMLs\Uninstall3264VISPRO.xml" -destination C:\LocalFolder -force #Copy-Item "\\NetworkShareToCopyOver\Office2016\UninstallXMLs\Uninstall3264PRJPRO.xml" -destination C:\LocalFolder -force ##### Close All Office Programs To Begin Install Process ##### Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Kill All Office Processes" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append foreach ($DasArray in $DasArrays) { If ($KillMe = Get-process | Where-Object {$_.name -like $DasArray}) {$KillMe.kill()} Else {$Null} } ##### Install ##### # Close all Open Windows/Dialog Boxes CloseEm Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append # Uninstall All Office Components From Previous Versions Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Function XGonTake32: Uninstall All Office Products" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append XGonTake32 Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append # Install Office 32 Bit Enterprise Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Function XGonGive32: Office 64-Bit Enterprise Install" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append XGonGive32 Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append # Install Project Professional 64 Bit Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Function XGonGiveProPro32: Project Pro 64-Bit Install" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append XGonGiveProPro32 Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append # Install Visio Professional 64 Bit Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Function XGonGiveVisi32: Visio Pro 64-Bit Install" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append XGonGiveVisi32 Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append # Set KMS Server Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Function 2016x64x32: Change Directory" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append 2016x64x32 Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append # Activate Windows Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("Function WonderTwinsPowerActivate: KMS Server and Activate" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append WonderTwinsPowerActivate Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append # Close All Open Windows/Dialog Boxes CloseEm Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append # Close Powershell $EndTimeScript = (Get-Date).ToString() $Enders = Get-Date $TotalTimeHours = (($Enders - $Starters).hours) $TotalTimeMinutes = (($Enders - $Starters).minutes) $TotalTimeSeconds = (($Enders - $Starters).seconds) Write-output ("SCRIPT Finished" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("SCRIPT Started :" + " " + "@" + " " + $StartTimeScript) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("SCRIPT Finished :" + " " + "@" + " " + ((Get-Date).ToString())) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output ("SCRIPT Total Install Time :" + " " + "@" + " " + $TotalTimeHours + ":" + $TotalTimeMinutes + ":" + $TotalTimeSeconds) | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output "(Hours : Minutes : Seconds)" | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Write-output `n | out-file -FilePath "\\ChangeToANetworkShare\$env:COMPUTERNAME.txt" -Append Exit <# ###### References ####### <# $EndTimeScript = (Get-Date).ToString() $Enders = Get-Date $TotalTimeHours = (($Enders - $Starters).hours) $TotalTimeMinutes = (($Enders - $Starters).minutes) $TotalTimeSeconds = (($Enders - $Starters).seconds) https://technet.microsoft.com/en-us/library/ff730960.aspx https://blogs.technet.microsoft.com/heyscriptingguy/2014/06/18/powertip-add-days-hours-and-minutes-to-current-time/ https://blogs.technet.microsoft.com/heyscriptingguy/2013/12/28/powertip-get-time-difference-between-dates-with-powershell/ https://www.briandesmond.com/blog/date-and-time-math-with-powershell http://stackoverflow.com/questions/36858588/exit-a-powershell-function-but-continue-the-script http://stackoverflow.com/questions/9725629/how-to-close-all-windows https://social.technet.microsoft.com/wiki/contents/articles/7804.powershell-creating-custom-objects.aspx?ranMID=24542&ranEAID=TnL5HPStwNw&ranSiteID=TnL5HPStwNw-VLocFxk0UxWfb9ecDhQ76g&tduid=(9fd0be8a9d2db2d1ac04cf7e63e4a915)(256380)(2459594)(TnL5HPStwNw-VLocFxk0UxWfb9ecDhQ76g)() https://technet.microsoft.com/en-us/library/hh500719.aspx?ranMID=24542&ranEAID=TnL5HPStwNw&ranSiteID=TnL5HPStwNw-qAuv0SaLOH1TkMju2PLt7Q&tduid=(9fd0be8a9d2db2d1ac04cf7e63e4a915)(256380)(2459594)(TnL5HPStwNw-qAuv0SaLOH1TkMju2PLt7Q)() https://technet.microsoft.com/en-us/library/dd819489.aspx?ranMID=24542&ranEAID=TnL5HPStwNw&ranSiteID=TnL5HPStwNw-oMeKd2unVguZJQuSCmJV8Q&tduid=(9fd0be8a9d2db2d1ac04cf7e63e4a915)(256380)(2459594)(TnL5HPStwNw-oMeKd2unVguZJQuSCmJV8Q)() https://msdn.microsoft.com/en-us/library/ms714428(v=vs.85).aspx?ranMID=24542&ranEAID=TnL5HPStwNw&ranSiteID=TnL5HPStwNw-y9ZZJHNRHJOSVoW_eBtLxQ&tduid=(9fd0be8a9d2db2d1ac04cf7e63e4a915)(256380)(2459594)(TnL5HPStwNw-y9ZZJHNRHJOSVoW_eBtLxQ)() https://community.spiceworks.com/topic/350960-script-to-uninstall-all-microsoft-office-applications https://technet.microsoft.com/en-us/library/ee176899.aspx https://support.office.com/en-us/article/Uninstall-or-remove-Office-2010-90635a1d-aec8-4653-b358-67e1b766fc4d?ui=en-US&rs=en-US&ad=US http://www.jonathanmedd.net/2014/02/testing-for-the-presence-of-a-registry-key-and-value.html https://www.experts-exchange.com/questions/26509894/Supress-Restart-Office-2010-Uninstall-script.html http://www.adminarsenal.com/admin-arsenal-blog/stop-the-reboot-in-an-unattended-office-2010-installation/ http://www.adminarsenal.com/admin-arsenal-blog/silently-uninstall-office-2010/ http://www.adminarsenal.com/admin-arsenal-blog/silently-install-office-2016/ https://technet.microsoft.com/en-us/library/cc178956.aspx http://windowsitpro.com/windows/q-there-way-powershell-check-registry-keyfile-and-if-it-changes-set-it-back http://www.itninja.com/question/how-to-suppress-reboot-after-office-2010-uninstall http://www.bhargavs.com/index.php/2009/06/16/measure-powershell-script-run-time/ http://sqlblog.com/blogs/jamie_thomson/archive/2014/08/26/time-your-commands-powershell-nugget.aspx http://www.itninja.com/software/microsoft/sharepoint-designer/14-597 http://www.itninja.com/software/microsoft/office/2013-16 http://www.ghacks.net/2013/01/04/how-to-uninstall-microsoft-office-2013-or-office-365/ "" + " " + "Ping Successful" + " " + "@" + " " + ((Get-Date).ToString()) #>