-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathInstall-LabMod.ps1
More file actions
71 lines (61 loc) · 2.87 KB
/
Copy pathInstall-LabMod.ps1
File metadata and controls
71 lines (61 loc) · 2.87 KB
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
# Install-LabMod Module
# To kick me off from a URL run the following:
# (new-object Net.WebClient).DownloadString("https://raw.githubusercontent.com/tracsman/Projects/master/LabModPS/Install-LabMod.ps1") | Invoke-Expression
function Install-LabMod {
# Admin Session Check
If (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Warning "This script must be run elevated as Administrator!"
Return
}
# PowerShell Version Check
If ($PSVersionTable.PSVersion.Major -lt 7) {
Write-Warning "This script requires PowerShell 7 or later."
Return
}
$uri = 'https://raw.githubusercontent.com/tracsman/Projects/master/LabModPS/LabMod/'
$FileName = @()
$FileName += 'LabMod.psd1'
$FileName += 'LabMod.psm1'
$FileName += 'Private/Assert-LabAdminContext.ps1'
$FileName += 'Private/Write-LabLogEntry.ps1'
$FileName += 'Private/Write-LabRunStatus.ps1'
$FileName += 'Private/New-LabVMDrive.ps1'
$FileName += 'Public/Build-LabBaseVHDX.ps1'
$FileName += 'Public/Build-LabBaseVM.ps1'
$FileName += 'Public/Copy-ToUbuntu.ps1'
$FileName += 'Public/Get-LabECX.ps1'
$FileName += 'Public/New-LabECX.ps1'
$FileName += 'Public/New-LabVM.ps1'
$FileName += 'Public/Remove-LabECX.ps1'
$FileName += 'Public/Remove-LabVM.ps1'
$FileName += 'Public/Start-LabVmRequest.ps1'
$FileName += 'Public/Uninstall-LabMod.ps1'
$FileName += 'Public/Update-LabLibrary.ps1'
$FileName += 'Public/Update-LabMod.ps1'
$Destination = 'C:\Program Files\PowerShell\7\Modules\LabMod\'
New-Item -Path ($Destination) -ItemType Directory -Force | Out-Null
New-Item -Path ($Destination + "Private") -ItemType Directory -Force | Out-Null
New-Item -Path ($Destination + "Public") -ItemType Directory -Force | Out-Null
Write-Host
ForEach ($File in $FileName) {
$webClient = new-object System.Net.WebClient
$webClient.DownloadFile( $uri + $File, $Destination + $File )
Write-Host "Copied successfully:" $File
}
$executionPolicy = (Get-ExecutionPolicy)
$executionRestricted = ($executionPolicy -eq "Restricted")
If ($executionRestricted) {
Write-Warning "Your execution policy is $executionPolicy, this means you will not be able import or use any scripts including modules."
Write-Warning "To fix this change your execution policy to something like RemoteSigned."
Write-Host
Write-Warning " PS> Set-ExecutionPolicy RemoteSigned"
Write-Host
Write-Warning "For more information execute:"
Write-Host
Write-Warning " PS> Get-Help about_execution_policies"
}
Write-Host "LabMod is installed and ready to use" -Foreground Green
Write-Host
} # End Function
Install-LabMod
Get-Command -Module LabMod