cloud/go.osdcloud.com/enterprise.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
<#PSScriptInfo
.VERSION 22.9.13.1 .GUID 57f30acf-8336-4519-9971-1d71d261f197 .AUTHOR David Segura @SeguraOSD .COMPANYNAME osdcloud.com .COPYRIGHT (c) 2022 David Segura osdcloud.com. All rights reserved. .TAGS OSDeploy OSDCloud WinPE OOBE Windows AutoPilot .LICENSEURI .PROJECTURI https://github.com/OSDeploy/OSD .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES Script should be executed in a Command Prompt using the following command powershell Invoke-Expression -Command (Invoke-RestMethod -Uri go.osdcloud.com/enterprise) This is abbreviated as powershell iex(irm go.osdcloud.com/enterprise) #> <# .SYNOPSIS PSCloudScript at go.osdcloud.com/enterprise .DESCRIPTION PSCloudScript at go.osdcloud.com/enterprise .NOTES Version 22.9.13.1 .LINK https://raw.githubusercontent.com/OSDeploy/OSD/master/cloud/tasksequences/enterprise.ps1 .EXAMPLE powershell iex (irm go.osdcloud.com/enterprise) #> [CmdletBinding()] param() #================================================= #Script Information $ScriptName = 'go.osdcloud.com/enterprise' $ScriptVersion = '22.9.13.1' #================================================= #region Initialize #Start the Transcript $Transcript = "$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))-OSDCloud.log" $null = Start-Transcript -Path (Join-Path "$env:SystemRoot\Temp" $Transcript) -ErrorAction Ignore #Determine the proper Windows environment if ($env:SystemDrive -eq 'X:') {$WindowsPhase = 'WinPE'} else { $ImageState = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State' -ErrorAction Ignore).ImageState if ($env:UserName -eq 'defaultuser0') {$WindowsPhase = 'OOBE'} elseif ($ImageState -eq 'IMAGE_STATE_SPECIALIZE_RESEAL_TO_OOBE') {$WindowsPhase = 'Specialize'} elseif ($ImageState -eq 'IMAGE_STATE_SPECIALIZE_RESEAL_TO_AUDIT') {$WindowsPhase = 'AuditMode'} else {$WindowsPhase = 'Windows'} } #Finish initialization Write-Host -ForegroundColor DarkGray "$ScriptName $ScriptVersion $WindowsPhase" #Load OSDCloud Functions Invoke-Expression -Command (Invoke-RestMethod -Uri functions.osdcloud.com) #endregion #================================================= #region WinPE if ($WindowsPhase -eq 'WinPE') { #Process OSDCloud startup and load Azure KeyVault dependencies osdcloud-StartWinPE -OSDCloud -KeyVault #Write-Host -ForegroundColor Cyan "To start a new PowerShell session, type 'start powershell' and press enter" #Write-Host -ForegroundColor Cyan "Start-OSDCloud or Start-OSDCloudGUI can be run in the new PowerShell session" #Stop the startup Transcript. OSDCloud will create its own $null = Stop-Transcript -ErrorAction Ignore #Start OSDCloud and pass all the parameters except the Language to allow for prompting Start-OSDCloud -OSVersion 'Windows 10' -OSBuild 21H2 -OSEdition Enterprise -OSLicense Volume -SkipAutopilot -SkipODT -Restart } #endregion #================================================= #region Specialize if ($WindowsPhase -eq 'Specialize') { $null = Stop-Transcript -ErrorAction Ignore } #endregion #================================================= #region AuditMode if ($WindowsPhase -eq 'AuditMode') { $null = Stop-Transcript -ErrorAction Ignore } #endregion #================================================= #region OOBE if ($WindowsPhase -eq 'OOBE') { #Load everything needed to run AutoPilot and Azure KeyVault osdcloud-StartOOBE -Display -Language -DateTime -Autopilot -KeyVault #Get Autopilot information from the device $TestAutopilotProfile = osdcloud-TestAutopilotProfile #If the device has an Autopilot Profile if ($TestAutopilotProfile -eq $true) { #osdcloud-ShowAutopilotProfile } #If not, need to register the device using the Enterprise GroupTag and Assign it elseif ($TestAutopilotProfile -eq $false) { $AutopilotRegisterCommand = 'Get-WindowsAutopilotInfo -Online -GroupTag Enterprise -Assign' $AutopilotRegisterProcess = osdcloud-AutopilotRegisterCommand -Command $AutopilotRegisterCommand;Start-Sleep -Seconds 30 } #Or maybe we just can't figure it out else { Write-Warning 'Unable to determine if device is Autopilot registered' } osdcloud-RemoveAppx -Basic osdcloud-Rsat -Basic osdcloud-NetFX osdcloud-UpdateDrivers osdcloud-UpdateWindows osdcloud-UpdateDefender if ($AutopilotRegisterProcess) { Write-Host -ForegroundColor Cyan 'Waiting for Autopilot Registration to complete' #$AutopilotRegisterProcess.WaitForExit() if (Get-Process -Id $AutopilotRegisterProcess.Id -ErrorAction Ignore) { Wait-Process -Id $AutopilotRegisterProcess.Id } } $null = Stop-Transcript -ErrorAction Ignore osdcloud-RestartComputer } #endregion #================================================= #region Windows if ($WindowsPhase -eq 'Windows') { #Load OSD and Azure stuff osdcloud-SetExecutionPolicy osdcloud-InstallPackageManagement osdcloud-InstallModuleKeyVault osdcloud-InstallModuleOSD osdcloud-InstallModuleAzureAD $null = Stop-Transcript -ErrorAction Ignore } #endregion #================================================= |