diff --git a/DeployTools/Deploy-FirstBoot.ps1 b/DeployTools/Deploy-FirstBoot.ps1 index 564f93e..b672849 100644 --- a/DeployTools/Deploy-FirstBoot.ps1 +++ b/DeployTools/Deploy-FirstBoot.ps1 @@ -1,59 +1,65 @@ -############################################################### -# @description: # -# Used when image get cloned to new system # -# For Checking activation status, Setting SystemName, # -# running updates for Chocolatry apps and Windows Updates # -# # -# @project: IMGSystTools # -# @author: Bram Prieshof # -############################################################### - -if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) { - if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) { - $CommandLine = $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments - Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList " Set-ExecutionPolicy -Scope Process Unrestricted -Force; $CommandLine" - Exit - } -} - -#Disable Windows updates service -Set-Service -Name "wuauserv" -Status Stopped -StartupType Disabled - -Write-Output "Checking activation status..." -$ta = Get-CimInstance -ClassName SoftwareLicensingProduct -Filter "PartialProductKey IS NOT NULL" | Where-Object -Property Name -Like "Windows*" -if ($ta.LicenseStatus -eq 1) {Write-Output "Activation [OK]"} else {Write-Output "Activation [Error, Opening settings]";Start-Process "ms-settings:activation"; pause } - -Write-Output "Getting System name" -$sysid = Read-Host -Prompt 'Please enter system ID (example: DT001)' -Rename-Computer -NewName $sysid -Write-Output "System name [OK]" - - -Write-Output "Checking Chocolatey package updates" -choco upgrade -y all -Write-Output " Chocolatey updates [OK]" - -#Enable Windows updates service -Set-Service -Name "wuauserv" -Status Stopped -StartupType Manual - -Write-Output "Checking Windows updates" -Import-Module PSWindowsUpdate -Get-WUInstall -MicrosoftUpdate -AcceptAll -IgnoreReboot -IgnoreRebootRequired -Install -Write-Output " Windows updates [OK]" - -#Removing Created Shortcuts -Remove-Item C:\Users\Public\Desktop\*.lnk - -#Remove "Run on login script" if exists -if (Test-Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\FirstBoot.lnk" -PathType leaf) -{Remove-Item "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\FirstBoot.lnk"} - -#Finalizing and reboot -Write-Output "" -Write-Output "" -Write-Output "The System deployed successfully, but it needs to be rebooted" - -$confirmation = Read-Host "Do you want to do that now? y/N:" -if ($confirmation -eq 'y') { - Restart-Computer -Force -} +############################################################### +# @description: # +# Used when image get cloned to new system # +# For Checking activation status, Setting SystemName, # +# running updates for Chocolatry apps and Windows Updates # +# # +# @project: IMGSystTools # +# @author: Bram Prieshof # +############################################################### + +if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) { + if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) { + $CommandLine = $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments + Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList " Set-ExecutionPolicy -Scope Process Unrestricted -Force; $CommandLine" + Exit + } +} + +#Disable Windows updates service +Set-Service -Name "wuauserv" -Status Stopped -StartupType Disabled + +Write-Output "Checking activation status..." +$ta = Get-CimInstance -ClassName SoftwareLicensingProduct -Filter "PartialProductKey IS NOT NULL" | Where-Object -Property Name -Like "Windows*" +if ($ta.LicenseStatus -eq 1) {Write-Output "Activation [OK]"} else {Write-Output "Activation [Error, Opening settings]";Start-Process "ms-settings:activation"; pause } + +Write-Output "Getting System name" +$sysid = Read-Host -Prompt 'Please enter system ID (example: DT001)' +Rename-Computer -NewName $sysid +Write-Output "System name [OK]" + +#Chocolaty software updates +$confirmSupdates = Read-Host "Run Software updates? (y/n)" +if ( $confirmSupdates -eq 'y'){ + Write-Output "Checking Chocolatey package updates" + choco upgrade -y all + Write-Output " Chocolatey updates [OK]" +} + +$confirmWupdates = Read-Host "Run Windows updates? (y/n)" +if ( $confirmWupdates -eq 'y'){ + #Enable Windows updates service + Set-Service -Name "wuauserv" -Status Stopped -StartupType Manual + + Write-Output "Checking Windows updates" + Import-Module PSWindowsUpdate + Get-WUInstall -MicrosoftUpdate -AcceptAll -IgnoreReboot -IgnoreRebootRequired -Install + Write-Output " Windows updates [OK]" +} + +#Removing Created Shortcuts +Remove-Item C:\Users\Public\Desktop\*.lnk + +#Remove "Run on login script" if exists +if (Test-Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\FirstBoot.lnk" -PathType leaf) +{Remove-Item "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\FirstBoot.lnk"} + +#Finalizing and reboot +Write-Output "" +Write-Output "" +Write-Output "The System deployed successfully, but it needs to be rebooted" + +$confirmation = Read-Host "Do you want to do that now? y/N:" +if ($confirmation -eq 'y') { + Restart-Computer -Force +}