-
Notifications
You must be signed in to change notification settings - Fork 2
/
autopilot.ps1
98 lines (97 loc) · 3.6 KB
/
autopilot.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
<#
.SYNOPSIS
Autopilot PSCloudScript at autopilot.ps1.osdeploy.com
.DESCRIPTION
Autopilot PSCloudScript at autopilot.ps1.osdeploy.com
.NOTES
Requires Windows 10 1809+ - Windows 11
In OOBE (Out-of-Box Experience), press Shift + F10 to open a Command Prompt
.LINK
https://github.com/OSDeploy/ps1.osdeploy.com/blob/main/autopilot.ps1
.EXAMPLE
powershell iex(irm autopilot.ps1.osdeploy.com)
#>
#=================================================
# Block WinPE
#=================================================
if ($env:SystemDrive -eq 'X:')
{
Write-Warning 'PSCloudScript cannot be run from WinPE'
Start-Sleep -Seconds 5
break
}
#=================================================
# Require OOBE
#=================================================
if ($env:UserName -ne 'defaultuser0')
{
Write-Warning 'PSCloudScript must be run from OOBE'
Start-Sleep -Seconds 5
break
}
#=================================================
# Set-ExecutionPolicy
#=================================================
if ((Get-ExecutionPolicy) -ne 'RemoteSigned')
{
Write-Host -ForegroundColor Cyan 'Set-ExecutionPolicy RemoteSigned'
Set-ExecutionPolicy RemoteSigned -Force
}
#=================================================
# PackageManagement,PowerShellGet
#=================================================
if (Get-Module -Name PowerShellGet -ListAvailable | Where-Object {$_.Version -ge '2.2.5'}) {
Write-Host -ForegroundColor Cyan 'PowerShellGet 2.2.5 or greater is installed'
}
else {
Write-Host -ForegroundColor Cyan 'Install-Package PackageManagement,PowerShellGet'
Install-Package -Name PowerShellGet -MinimumVersion 2.2.5 -Force -Confirm:$false -Source PSGallery
Write-Host -ForegroundColor Cyan 'Import-Module PackageManagement,PowerShellGet'
Import-Module PackageManagement,PowerShellGet -Force
}
#=================================================
# Set-PSRepository PSGallery
#=================================================
$PSRepository = Get-PSRepository -Name PSGallery
if ($PSRepository)
{
if ($PSRepository.InstallationPolicy -ne 'Trusted')
{
Write-Host -ForegroundColor Cyan 'Set-PSRepository PSGallery Trusted'
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
}
}
#=================================================
# WindowsAutopilotIntune
#=================================================
$Requirement = Import-Module WindowsAutopilotIntune -PassThru -ErrorAction Ignore
if (-not $Requirement)
{
Write-Host -ForegroundColor Cyan 'Install-Module AzureAD,Microsoft.Graph.Intune,WindowsAutopilotIntune'
Install-Module WindowsAutopilotIntune -Force
}
#=================================================
# AzureAD
#=================================================
$Requirement = Import-Module AzureAD -PassThru -ErrorAction Ignore
if (-not $Requirement)
{
Write-Host -ForegroundColor Cyan 'Install-Module AzureAD'
Install-Module AzureAD -Force
}
#=================================================
# Get-WindowsAutoPilotInfo
#=================================================
$Requirement = Get-InstalledScript -Name Get-WindowsAutoPilotInfod -ErrorAction SilentlyContinue
if (-not $Requirement)
{
Write-Host -ForegroundColor Cyan 'Install-Script Get-WindowsAutoPilotInfo'
Install-Script -Name Get-WindowsAutoPilotInfo -Force
}
#=================================================
# Complete
#=================================================
Write-Host -ForegroundColor Cyan 'Complete!'
Write-Verbose 'Starting a new PowerShell process for Get-WindowsAutoPilotInfo' -Verbose
Start-Sleep -Seconds 3
Start-Process PowerShell.exe -ArgumentList '-NoLogo'