scripts/boabbyod.ps1
2024-10-28 23:04:37 +10:00

676 lines
No EOL
34 KiB
PowerShell

####################################
# Base System Changes and UI Tweaks
####################################
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Confirm:$False -force
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force -confirm:$false
$PSRepository = get-PSRepository
if ($PSRepository.installationpolicy -ne 'Trusted') {
Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted
}
$32apps = Get-WmiObject -class win32_product
$32bit = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate
$64bit = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate
$apps = $32bit + $64bit
#Disable Windows 10 Fast startup
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power" -Name HiberbootEnabled -Value 0
#Set Power Plan to High Performance
powercfg.exe -SETACTIVE 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
powercfg -SETACVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 3
powercfg -change -standby-timeout-ac 0
powercfg -change -hibernate-timeout-ac 0
#Enable Unzip Function
Add-Type -AssemblyName System.IO.Compression.FileSystem
function unzip {
param( [string]$ziparchive, [string]$extractpath )
[System.IO.Compression.ZipFile]::ExtractToDirectory( $ziparchive, $extractpath )
}
#Create Support Directories
New-Item -ItemType directory -Path C:\support -ErrorAction SilentlyContinue
New-Item -ItemType directory -Path C:\support\software -ErrorAction SilentlyContinue
New-Item -ItemType directory -Path C:\support\software\AnyDesk -ErrorAction SilentlyContinue
#Install Boab Syncro Agent
write-host 'Installing Syncro agent..' -ForegroundColor Yellow
if($apps.DisplayName -ne 'Syncro'){
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SyncroSetup-boab_it_provisioning-v1-2707067.exe' -Method 'GET' -OutFile "c:\support\software\SyncroSetup-boab_it_provisioning-v1-2707067.exe"
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SyncroSetup-boab_it_provisioning-v1-2707067.exe'
Start-sleep 60
$syncro = get-process | where-object { $_.ProcessName -eq "SyncroSetup-boab_it_provisioning-v1-2707067" }
if ($null -ne $syncro) {
taskkill /pid $($Syncro.id) /f
}
$syncro = get-process | where-object { $_.ProcessName -eq "Syncro.Installer" }
if ($null -ne $syncro) {
taskkill /pid $($Syncro.id) /f
}
}
#Start WinRM Service
Start-Service WinRM -verbose
#Enable System restore
Enable-ComputerRestore -Drive "C:\" -confirm:$false
#Check and Create admin account
$user = get-localuser | Where-Object { $_.name -eq "administrator" }
$pass = 'boab123' | ConvertTo-SecureString -AsPlainText -Force
if ($user.enabled -eq $true) {
set-localuser -name $user -password $pass
Add-LocalGroupMember -group 'administrators' -Member $user -ErrorAction SilentlyContinue
Write-host 'Password has been successfully set'
} elseif ($user.enabled -eq $false) {
Enable-LocalUser -name 'administrator'
Set-LocalUser -name 'administrator' -password $pass
Write-host 'Administrator Account has been successfully Enabled'
}
# Create Hidden BITS Accounts
#net user BITS x1jT0kh83v /add
#net localgroup Administrators BITS /add
#reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\Userlist" /v BITS /t REG_DWORD /d 0 /f
#Enable SMB and ICMP on Windows Firewall
Write-host 'Enable SMB and ICMP on Windows Firewall' -ForegroundColor yellow
Set-NetFirewallRule -DisplayName "File and Printer Sharing (Echo Request - ICMPv4-In)" -Enabled True
Set-NetFirewallRule -DisplayName "File and Printer Sharing (Echo Request - ICMPv4-Out)" -Enabled True
Set-NetFirewallRule -DisplayName "File and Printer Sharing (SMB-In)" -Enabled True
Set-NetFirewallRule -DisplayName "File and Printer Sharing (SMB-Out)" -Enabled True
# Set WinUserLanguageList as a variable
$lang = Get-WinUserLanguageList
# Clear the WinUserLanguageList
$lang.Clear()
# Add language to the language list
$lang.add("en-AU")
# Remove whatever input method is present
$lang[0].InputMethodTips.Clear()
# Add this keyboard as keyboard language
$lang[0].InputMethodTips.Add('0C09:00000409')
# Set this language list as default
Set-WinUserLanguageList $lang -Force
# Make region settings independent of OS language
Set-WinCultureFromLanguageListOptOut -OptOut $True
# Set Windows Dispaly Language
Set-WinUILanguageOverride -Language en-AU
# Set region to this Country
Set-Culture en-AU
# Set the location to this location
Set-WinHomeLocation -GeoId 12
# Set non-unicode legacy software to use this language as default
Set-WinSystemLocale -SystemLocale en-AU
# Set the TimeZone
Set-TimeZone -name 'AUS Eastern Standard Time'
#Brisbane Standard Time
# E. Australia Standard Time
#Darwin Standard Time
# AUS Central Standard Time
#Adelaide Standard Time
# Cen. Australia Standard Time
#Fix Network Print
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Print" -name "RpcAuthnLevelPrivacyEnabled" -value 00000000 -type dword
# Default preset
$tweaks = @(
### Require administrator privileges ###
"RequireAdmin",
"EnableRemoteDesktop",
"DisableSleepTimeout",
"HideTaskbarPeopleIcon",
"EnableNumlock"
)
# Relaunch the script with administrator privileges
Function RequireAdmin {
If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator")) {
Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`" $PSCommandArgs" -WorkingDirectory $pwd -Verb RunAs
Exit
}
}
# Enable Remote Desktop w/o Network Level Authentication
Function EnableRemoteDesktop {
Write-Output "Enabling Remote Desktop w/o Network Level Authentication..."
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication" -Type DWord -Value 0
Enable-NetFirewallRule -Name "RemoteDesktop*"
}
# Disable display and sleep mode timeouts
Function DisableSleepTimeout {
Write-Output "Disabling sleep mode timeouts for AC..."
powercfg /X standby-timeout-ac 0
powercfg -change hibernate-timeout-ac 0
}
# Hide Taskbar People icon
Function HideTaskbarPeopleIcon {
Write-Output "Hiding People icon..."
If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People")) {
New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People" | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People" -Name "PeopleBand" -Type DWord -Value 0
}
# Enable NumLock after startup
Function EnableNumlock {
Write-Output "Enabling NumLock after startup..."
If (!(Test-Path "HKU:")) {
New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS | Out-Null
}
Set-ItemProperty -Path "HKU:\.DEFAULT\Control Panel\Keyboard" -Name "InitialKeyboardIndicators" -Type DWord -Value 2147483650
Add-Type -AssemblyName System.Windows.Forms
If (!([System.Windows.Forms.Control]::IsKeyLocked('NumLock'))) {
$wsh = New-Object -ComObject WScript.Shell
$wsh.SendKeys('{NUMLOCK}')
}
}
# Normalize path to preset file
$preset = ""
$PSCommandArgs = $args
If ($args -And $args[0].ToLower() -eq "-preset") {
$preset = Resolve-Path $($args | Select-Object -Skip 1)
$PSCommandArgs = "-preset `"$preset`""
}
# Load function names from command line arguments or a preset file
If ($args) {
$tweaks = $args
If ($preset) {
$tweaks = Get-Content $preset -ErrorAction Stop | ForEach { $_.Trim() } | Where { $_ -ne "" -and $_[0] -ne "#" }
}
}
# Call the desired tweak functions
$tweaks | ForEach { Invoke-Expression $_ }
##################
# .Net Framework 3.5
##################
Enable-WindowsOptionalFeature -Online -FeatureName "NetFx3"
####################################################
# Install Office 2016 - Office 365 Business Premium
####################################################
$office = $apps | where-object {$_.displayname -like "*Office 16 Click-to-Run*"}
if($null -eq $office){
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/O365_BP_x64.zip' -Method 'GET' -OutFile "c:\support\software\O365_BP_x64.zip"
unzip "c:\support\software\O365_BP_x64.zip" "c:\support\software\office"
C:\support\software\office\setup.exe /configure 'C:\support\software\office\configuration.xml'
}
##################
# Google Chrome
##################
$Chrome = $apps | where-object {$_.displayname -like "*chrome*"}
if($null -eq $Chrome){
$Path = 'C:\support\Software'
$Installer = "chrome_installer.exe"
Invoke-WebRequest "http://dl.google.com/chrome/install/375.126/chrome_installer.exe" -OutFile $Path\$Installer
Start-Process -FilePath $Path\$Installer -Args "/silent /install" -Verb RunAs -Wait
}
##################
# Anydesk
##################
$anydesk = $apps | where-object {$_.displaynamename -like "*anydesk*"}
if($null -eq $anydesk){
write-host 'Installing Anydesk' -ForegroundColor yellow
invoke-webrequest -uri "https://boabcdn.blob.core.windows.net/cdn/BoabITAnyDesk.msi" -OutFile "C:\Support\Software\AnyDesk\BoabITAnyDesk.msi"
set-location "C:\support\software\AnyDesk\"
.\BoabITAnyDesk.msi /quiet
}
##################
# Install VLC
##################
$vlc = $apps | where-object {$_.displayname -like "*VLC*"}
if($null -eq $vlc){
write-host 'Installing VLC' -ForegroundColor yellow
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/vlc-3.0.16-win64.exe' -Method 'GET' -OutFile "c:\support\software\vlc-3.0.16-win64.exe"
start-process -WorkingDirectory "C:\Support\Software" -FilePath '.\vlc-3.0.16-win64.exe' -argumentlist '/L=1033 /S'
}
##################
# Zoom
##################
$zoom = $apps | where-object {$_.displayname -like "*zoom*"}
if($null -eq $zoom){
write-host 'Installing Zoom' -ForegroundColor yellow
invoke-webrequest -uri "https://boabcdn.blob.core.windows.net/cdn/ZoomInstaller.exe" -OutFile "C:\Support\Software\ZoomInstaller.exe"
start-process -workingdirectory 'C:\support\software' -filepath '.\ZoomInstaller.exe'
start-sleep 10
$blockedProcesses = @('Zoom')
$runningProcesses = Get-Process | Where-Object { $blockedProcesses -contains $_.ProcessName }
if($runningProcesses -ne $null){
Stop-Process -Name Zoom
}
}
##################
#Adobe Acrobat Pro
##################
$acrobat = $apps | where-object {$_.displayname -like "*Acrobat*"}
if($null -eq $acrobat){
#Disabled Enchanced Security
$FeatureLockDown = test-path -Path "HKLM:\SOFTWARE\Policies\Adobe\Adobe Acrobat\DC\FeatureLockDown" -ErrorAction SilentlyContinue
If($Testpath -eq $Null){
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Adobe\Adobe Acrobat\DC\FeatureLockDown" -Name "bEnhancedSecurityStandalone" -Value 0
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Adobe\Adobe Acrobat\DC\FeatureLockDown" -Name "bEnhancedSecurityInBrowser" -Value 0
} else {
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Adobe\Adobe Acrobat\DC\FeatureLockDown" -Name "bEnhancedSecurityStandalone" -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Adobe\Adobe Acrobat\DC\FeatureLockDown" -Name "bEnhancedSecurityInBrowser" -Value 0
}
}
##################
# CallSmart PBX
##################
$cpbx = $apps | where-object {$_.displayname -like "*cloudPBX*"}
if($null -eq $cbpx){
Write-host 'Installing CallSmart PBX..' -ForegroundColor yellow
invoke-webrequest -uri "https://aucdn.blob.core.windows.net/cloudpbx/CloudPBX_UC_current.msi" -OutFile 'C:\support\software\CloudPBX_UC_current.msi'
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\CloudPBX_UC_current.msi' -ArgumentList '/quiet', '/norestart' -wait
}
##################
# Install Cylance
##################
$cylance = $apps | where-object {$_.displayname -like "*Cylance*"}
if($null -eq $cylance){
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/CylanceProtect_x64.zip' -Method 'GET' -OutFile "c:\support\software\CylanceProtect_x64.zip"
unzip "c:\support\software\CylanceProtect_x64.zip" "c:\support\software\cylance"
msiexec /i c:\support\software\cylance\CylanceProtect_x64.msi /qn PIDKEY=RAqWoyAGgajdfqCh1gM1ncxHA LAUNCHAPP=1 PROTECTTEMPPATH=1
}
##################
# Install 7-zip
##################
Invoke-WebRequest -Uri "https://www.7-zip.org/a/7z2301-x64.exe" -OutFile 'C:\support\7z2301-x64.exe'
Start-Process -WorkingDirectory 'C:\support' -FilePath '.\7z2301-x64.exe' -ArgumentList '/S'
####################################################
# Install Pexa
####################################################
$pexa = $apps | where-object {$_.displayname -like "*Pexa*"}
if($null -eq $pexa){
Write-host 'Installing Pexa' -ForegroundColor yellow
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/PexaDigitalSigning_1.0.12.105_x64.msi' -Method 'GET' -OutFile "c:\support\software\PexaDigitalSigning_1.0.12.105_x64.msi"
start-process -WorkingDirectory 'c:\support\software' -FilePath '.\PexaDigitalSigning_1.0.12.105_x64.msi' -ArgumentList '/quiet' -wait
}
####################################################
# Install Pexa Certificate Software
####################################################
$PexaCert = $apps | where-object {$_.displayname -like "*Charismathics*"}
if($null -eq $PexaCert){
Write-host 'Installing Pexa' -ForegroundColor yellow
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/CertificateSoftware.exe' -Method 'GET' -OutFile "c:\support\software\CertificateSoftware.exe"
start-process -WorkingDirectory 'c:\support\software' -FilePath '.\CertificateSoftware.exe' -ArgumentList 'SP- /suppressmsgboxes /verysilent /norestart' -wait
}
####################################################
# Pexa Chrome Extension
####################################################
$chromeInstalled = (Get-Item (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe').'(Default)').VersionInfo
if ($chromeInstalled.FileName -eq $null) {
Write-Host "Chrome is not installed"
}else {
<# .DESCRIPTION Adds a Google Chrome extension to the forced install list. Can be used for forcing installation of any Google Chrome extension. Takes existing extensions into account which might be added by other means, such as GPO and MDM. #>
$extensionId = 'mehmbceeoajoljjbcodcbjlhmopjmlmf'
Write-Information "ExtensionID = $extensionID"
$extensionId = "$extensionId;https://clients2.google.com/service/update2/crx"
$regKey = "HKLM:\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist"
if (!(Test-Path $regKey)) {
New-Item $regKey -Force
Write-Information "Created Reg Key $regKey"
}
# Add Extension to Chrome
$extensionsList = New-Object System.Collections.ArrayList
$number = 0
$noMore = 0
do {
$number++
Write-Information "Pass : $number"
try {
$install = Get-ItemProperty $regKey -name $number -ErrorAction Stop
$extensionObj = [PSCustomObject]@{
Name = $number
Value = $install.$number
}
$extensionsList.add($extensionObj) | Out-Null
Write-Information "Extension List Item : $($extensionObj.name) / $($extensionObj.value)"
}
catch {
$noMore = 1
}
}
until($noMore -eq 1)
$extensionCheck = $extensionsList | Where-Object { $_.Value -eq $extensionId }
if ($extensionCheck) {
$result = "Extension Already Exists"
Write-Information "Extension Already Exists"
}
else {
$newExtensionId = $extensionsList[-1].name + 1
New-ItemProperty HKLM:\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist -PropertyType String -Name $newExtensionId -Value $extensionId
$result = "Installed"
Write-Host $result
}
}
####################################################
# Install PingID
####################################################
$pingid = $apps | where-object {$_.displayname -like "*pingid*"}
if($null -eq $pingid){
Write-host 'Installing PingID' -ForegroundColor yellow
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/PingID.exe' -Method 'GET' -OutFile "C:\Support\Software\PingID.exe"
start-process -WorkingDirectory 'c:\support\software' -FilePath '.\PingID.exe' -ArgumentList '/verysilent' -wait
}
####################################################
# Cisco Webex
####################################################
$webex = $apps | where-object {$_.displayname -like "*webex*"}
if($null -eq $webex){
Write-host 'Installing Cisco Webex' -ForegroundColor yellow
Invoke-RestMethod 'https://binaries.webex.com/WebexTeamsDesktop-Windows-Gold/Webex.msi?_gl=1*tsd93u*_gcl_au*NzYyOTg5Mzk1LjE3MDEwNDk4NjM.' -Method 'GET' -OutFile "C:\Support\Software\Webex.msi"
start-process -WorkingDirectory 'c:\support\software' -FilePath '.\Webex.msi' -ArgumentList '/quiet', '/norestart' -wait
}
####################################################
# Yealink USB Connect
####################################################
$YUC = $apps | where-object {$_.displayname -like "*Yealink*"}
if($null = $YUC){
Invoke-WebRequest "https://boabcdn.blob.core.windows.net/cdn/Yealink USB Connect-0.35.42.0.msi" -OutFile "C:\Support\software\Yealink USB Connect-0.35.42.0.msi"
write-host 'Installing Yealink Connect' -ForegroundColor yellow
Start-Process -WorkingDirectory "C:\Support\software" -filepath ".\Yealink USB Connect-0.35.42.0.msi" -Argumentlist "/quiet" -Wait
Write-host "Enterprise ID: difzbkke"
}
####################################################
# New Teams
####################################################
Invoke-WebRequest -uri "https://boabcdn.blob.core.windows.net/cdn/teamsbootstrapper.exe" -outfile "C:\Support\software\teamsbootstrapper.exe"
start-process -workingdirectory "C:\support\software" -filepath ".\teamsbootstrapper.exe" -ArgumentList "-p"
####################################################
# Drivers
####################################################
$csModel = get-computerinfo | select-object csmodel
#Surface Book 3
if ($csmodel.csmodel -eq "Surface Book 3") {
$CheckDriver = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | where { $_.DisplayName -like "Surface book 3 update*" }
If ($null -eq $CheckDriver) {
$testpath = test-path C:\support\software\SurfaceBook3Drivers.msi
If ($testpath -eq $false) {
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SurfaceBook3Drivers.msi' -Method 'GET' -OutFile "c:\support\software\SurfaceBook3Drivers.msi"
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SurfaceBook3Drivers.msi' -ArgumentList '/quiet', '/norestart' -wait
}
}
}
#Surface Book 1
if ($csmodel.csmodel -eq "Surface Book") {
$CheckDriver = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | where { $_.DisplayName -like "Surface book update*" }
If ($null -eq $CheckDriver) {
$testpath = test-path C:\support\software\SurfaceBook1Drivers.msi
If ($testpath -eq $false) {
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SurfaceBook1Drivers.msi' -Method 'GET' -OutFile "c:\support\software\SurfaceBook1Drivers.msi"
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SurfaceBook1Drivers.msi' -ArgumentList '/quiet', '/norestart' -wait
}
}
}
#Surface Book 2
if ($csmodel.csmodel -eq "Surface Book 2") {
$CheckDriver = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | where { $_.DisplayName -like "Surface book update*" }
If ($null -eq $CheckDriver) {
$testpath = test-path C:\support\software\SurfaceBook2Drivers.msi
If ($testpath -eq $false) {
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SurfaceBook2Drivers.msi' -Method 'GET' -OutFile "c:\support\software\SurfaceBook2Drivers.msi"
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SurfaceBook2Drivers.msi' -ArgumentList '/quiet', '/norestart' -wait
}
}
}
#Surface Laptop 4 Win 11
if($csmodel.csmodel -eq "Surface Laptop 4"){
$OS = Get-ComputerInfo
$testpath = test-path C:\support\software\SurfaceLaptop4_Win11.msi
if($os.WindowsProductName -like "Windows 11*"){
If($testpath -eq $false){
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SurfaceLaptop4_Win11.msi' -Method 'GET' -OutFile "c:\support\software\SurfaceLaptop4_Win11.msi"
}
if($True -eq $testpath) {
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SurfaceLaptop4_Win11.msi' -ArgumentList '/quiet', '/norestart'
}
}
}
#Surface Laptop 4 Win 10
if($csmodel.csmodel -eq "Surface Laptop 4"){
$OS = Get-ComputerInfo
$testpath = test-path C:\support\software\SurfaceLaptop4_Win10.msi
if($os.WindowsProductName -like "Windows 10*"){
If($testpath -eq $false){
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SurfaceLaptop4_Win10.msi' -Method 'GET' -OutFile "c:\support\software\SurfaceLaptop4_Win10.msi"
}
if($True -eq $testpath) {
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SurfaceLaptop4_Win10.msi' -ArgumentList '/quiet', '/norestart'
}
}
}
#Surface Laptop 5 Win 11
if($csmodel.csmodel -eq "Surface Laptop 5"){
$OS = Get-ComputerInfo
$testpath = test-path C:\support\software\SurfaceLaptop5_Win11.msi
if($os.WindowsProductName -like "Windows 11*"){
If($testpath -eq $false){
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SurfaceLaptop5_Win11.msi' -Method 'GET' -OutFile "c:\support\software\SurfaceLaptop5_Win11.msi"
}
if($True -eq $testpath) {
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SurfaceLaptop5_Win11.msi' -ArgumentList '/quiet', '/norestart'
}
}
}
#Surface Laptop 5 Win 10
if($csmodel.csmodel -eq "Surface Laptop 5"){
$OS = Get-ComputerInfo
$testpath = test-path C:\support\software\SurfaceLaptop5_Win10.msi
if($os.WindowsProductName -like "Windows 10*"){
If($testpath -eq $false){
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SurfaceLaptop5_Win10.msi' -Method 'GET' -OutFile "c:\support\software\SurfaceLaptop5_Win10.msi"
}
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SurfaceLaptop5_Win10.msi' -ArgumentList '/quiet', '/norestart'
}
}
#Surface Pro 9 Win 11
if($csmodel.csmodel -eq "Surface Laptop 5"){
$OS = Get-ComputerInfo
$testpath = test-path C:\support\software\SurfacePro9_Win11.msi
if($os.WindowsProductName -like "Windows 10*"){
If($testpath -eq $false){
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SurfacePro9_Win11.msi' -Method 'GET' -OutFile "c:\support\software\SurfacePro9_Win11.msi"
}
if($True -eq $testpath) {
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SurfacePro9_Win11.msi' -ArgumentList '/quiet', '/norestart'
}
}
}
#Surface Pro 9 Win 10
if($csmodel.csmodel -eq "Surface Laptop 5"){
$OS = Get-ComputerInfo
$testpath = test-path C:\support\software\SurfacePro9_Win10.msi
if($os.WindowsProductName -like "Windows 11*"){
If($testpath -eq $false){
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SurfacePro9_Win10.msi' -Method 'GET' -OutFile "c:\support\software\SurfacePro9_Win10.msi"
}
if($True -eq $testpath) {
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SurfacePro9_Win10.msi' -ArgumentList '/quiet', '/norestart'
}
}
}
#NUC10i5FNH
if ($csmodel.csmodel -eq "NUC10i5FNH") {
$testpath = Test-Path -path C:\support\software\NUC10i5FNHDriver.zip
if ($testpath -eq $false) {
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/NUC10i5FNHDriver.zip' -Method 'GET' -OutFile "c:\support\software\NUC10i5FNHDrivers.zip"
unzip "c:\support\software\NUC10i5FNHDrivers.zip" "c:\support\software"
#WiFi/LAN
start-process -WorkingDirectory 'C:\support\software\NUC10i5FNH\BT_22.30.0_64_Win10' -FilePath '.\WirelessSetup.exe' -ArgumentList '/qn' -wait
#ME Firmware
start-process -WorkingDirectory 'C:\support\Software\NUC10i5FNH\me_win10_1931.14.0.1323\ME_Win10_1931.14.0.1323' -FilePath '.\MEISetup.exe' -ArgumentList '-s' -wait
#Serial IO
start-process -WorkingDirectory 'C:\support\Software\NUC10i5FNH\serialio_win10_30.100.1947.3' -FilePath '.\SetupSerialIO.exe' -ArgumentList '-s' -wait
#Thunderbolt
start-process -WorkingDirectory 'C:\support\Software\NUC10i5FNH\tbt-win10-1.41.1054.0' -FilePath '.\Thunderbolt(TM) Software Installer.exe' -ArgumentList '/install /quiet /norestart' -wait
#RST
start-process -WorkingDirectory 'C:\support\Software\NUC10i5FNH\rst-win10-18.0.1.1138.1' -FilePath '.\SetupRST.exe' -ArgumentList '-accepteula -silent' -wait
#Bluetooth / Base drivers - same directory
start-process -WorkingDirectory 'C:\support\software\NUC10i5FNH\BT_22.30.0_64_Win10' -FilePath '.\Intel Bluetooth.msi' -ArgumentList '/qn' -wait
#LAN / Base drivers - same directory
start-process -WorkingDirectory 'C:\support\software\NUC10i5FNH\PROWinx64_26_0\PROWinx64\APPS\PROSETDX\Winx64' -FilePath '.\DxSetup.exe' -ArgumentList '/qn /norestart' -wait
#Audio / Base drivers - same directory
start-process -WorkingDirectory 'C:\support\Software\NUC10i5FNH\aud_win10_64_6.0.8950.1\Audio_Win10_20H1_Realtek_8950.1' -FilePath '.\setup.exe' -ArgumentList '/s' -wait
#HDMI Firmware
start-process -WorkingDirectory 'C:\support\software\NUC10i5FNH\NUC10ixFN-HDMI_Firmware_Update_Tool-1.78.2.0.7' -FilePath '.\BobcatAuxISPTool.exe' -wait
}
}
#NUC7i5BNH
if ($csmodel.csmodel -eq "NUC7i5BNH") {
$testpath = Test-Path -path C:\support\software\NUC7i5BNHDrivers.zip
if ($testpath -eq $false) {
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/NUC7i5BNHDriver.zip' -Method 'GET' -OutFile "c:\support\software\NUC7i5BNHDrivers.zip"
unzip "c:\support\software\NUC7i5BNHDrivers.zip" "c:\support\software"
#WiFi/LAN
start-process -WorkingDirectory 'C:\support\Software\NUC7i5BNH' -filepath '.\wifi_win10_64_21.120.2.exe' -ArgumentList '/s' -wait
#ME Firmware
start-process -WorkingDirectory 'C:\support\Software\NUC7i5BNH\me-consumer-win10-19h1-20h1-12.0.70.1648' -FilePath '.\SetupME.exe' -ArgumentList '-s' -wait
#Chipset
start-process -WorkingDirectory 'C:\support\Software\NUC7i5BNH\chipset_win7_8.1_10_10.1.1.38' -FilePath '.\SetupChipset.exe' -ArgumentList '-s -norestart' -wait
#Thunderbolt
start-process -WorkingDirectory 'C:\support\Software\NUC7i5BNH\thunderbolt-win10-1.41.1094.0' -FilePath '.\Thunderbolt(TM) Software Installer.exe' -ArgumentList '/install /quiet /norestart' -wait
#Graphics
start-process -WorkingDirectory 'C:\support\Software\NUC7i5BNH\gfx_win10_64_24.20.100.6286_bn' -FilePath '.\igxpin.exe' -ArgumentList '-s' -wait
#Bluetooth / Base drivers - same directory
start-process -WorkingDirectory 'C:\support\software\NUC7i5BNH\BT_22.30.0_64_Win10' -FilePath '.\Intel Bluetooth.msi' -ArgumentList '/qn' -wait
#LAN / Base drivers - same directory
start-process -WorkingDirectory 'C:\support\software\NUC7i5BNH\PROWinx64_26_0\PROWinx64\APPS\PROSETDX\Winx64' -FilePath '.\DxSetup.exe' -ArgumentList '/qn /norestart' -wait
#Audio / Base drivers - same directory
start-process -WorkingDirectory 'C:\support\Software\NUC7i5BNH\aud_win7_8.1_10_64_6.0.1.8192' -FilePath '.\setup.exe' -ArgumentList '/s' -wait
}
}
if ($csmodel.csmodel -eq "NUC11PAHi7") {
$testpath = Test-Path -path C:\support\software\NUC11PAHi7.zip
if ($testpath -eq $false) {
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/NUC11PAHi7.zip' -Method 'GET' -OutFile "c:\support\software\NUC11PAHi7.zip"
unzip "c:\support\software\NUC11PAHi7.zip" "c:\support\software"
#CardReader
Write-host 'Installing Card Reader Driver..' -ForegroundColor Yellow
start-process -WorkingDirectory 'D:\Software\NUC11PAHi7\CardReader' -filepath '.\ITECIR.exe' -ArgumentList '/s' -wait
#Chipset
Write-host 'Installing Chipset Driver..' -ForegroundColor Yellow
start-process -WorkingDirectory 'D:\Software\NUC11PAHi7\Chipset' -filepath '.\SetupChipset.exe' -ArgumentList '-s -norestart' -wait
#Graphics
Write-host 'Installing Graphics Driver..' -ForegroundColor Yellow
start-process -WorkingDirectory 'D:\Software\NUC11PAHi7\Graphics' -filepath '.\igxpin.exe' -ArgumentList '-s' -wait
#ManagementEngine
Write-host 'Installing ManagementEngine Driver..' -ForegroundColor Yellow
start-process -WorkingDirectory 'D:\Software\NUC11PAHi7\ManagementEngine' -filepath '.\SetupME.exe' -ArgumentList '-s' -wait
#Intel NUC Software Stuido Service
Write-host 'Installing Intel NUC Software Stuido Service Driver..' -ForegroundColor Yellow
start-process -WorkingDirectory 'D:\Software\NUC11PAHi7\Intel NUC Software Studio Service' -filepath '.\NSSServiceInstaller.msi' -ArgumentList '/quiet /norestart' -wait
#RST
#Write-host 'Installing RST Driver..' -ForegroundColor Yellow
#start-process -WorkingDirectory 'D:\Software\NUC11PAHi7\RST' -filepath '.\SetupRST.exe' -ArgumentList '-s -accepteula' -wait
#SDCard
Write-host 'Installing SDCard Driver..' -ForegroundColor Yellow
start-process -WorkingDirectory 'D:\Software\NUC11PAHi7\SDCard' -filepath '.\Setup.exe' -ArgumentList '/quiet /norestart' -wait
#SerialIO
Write-host 'Installing SerialIO Driver..' -ForegroundColor Yellow
start-process -WorkingDirectory 'D:\Software\NUC11PAHi7\Serial IO' -filepath '.\SetupSerialIO.exe' -ArgumentList '-s' -wait
#Bluetooth
#Write-host 'Installing Bluetooth Driver..' -ForegroundColor Yellow
#start-process -WorkingDirectory 'D:\Software\NUC11PAHi7\Bluetooth' -filepath '.\bt_22.40.0_64_win10.exe' -ArgumentList '-s' -wait
#WiFi
Write-host 'Installing WiFi Driver..' -ForegroundColor Yellow
start-process -WorkingDirectory 'D:\Software\NUC11PAHi7\WIFI' -filepath '.\wifi_22.40.0_driver64_win10.exe' -ArgumentList '-s' -wait
#BIOS
Write-host 'Installing BIOS Update..' -ForegroundColor Yellow
start-process -WorkingDirectory 'D:\Software\NUC11PAHi7\BIOS' -filepath '.\PATGL357.0041.EBU.exe' -wait
}
}
if ($csmodel.csmodel -eq "NUC12WSKI7") {
$testpath = Test-Path -path C:\support\software\NUC12WSKI7.zip
if ($testpath -eq $false) {
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/NUC12WSKi7.zip' -Method 'GET' -OutFile "c:\support\software\NUC12WSKi7.zip"
unzip "c:\support\software\NUC12WSKi7.zip" "c:\support\software"
#Patch for a Modern Standby LAN Issue
reg.exe C:\support\software\NUC12WSKi7\AUTO_GEN_PEP_DISABLE.reg
#WIFI
start-process -WorkingDirectory 'C:\support\software\NUC12WSKi7\WiFi' -filepath '.\WirelessSetup.exe' -ArgumentList '-s' -wait
#Bluetooth
start-process -WorkingDirectory 'C:\support\software\NUC12WSKi7\Bluetooth\' -filepath '.\Intel Bluetooth.msi' -ArgumentList '/quiet', '/norestart'
#Chipset
start-process -WorkingDirectory 'C:\support\software\NUC12WSKi7\Chipset\' -filepath '.\SetupChipset.exe' -ArgumentList '/quiet', '/norestart' -wait
#ME Firmware
start-process -WorkingDirectory 'C:\support\software\NUC12WSKi7\ME Chipset\' -filepath '.\SetupME.exe' -ArgumentList '-s' -wait
#SerialIO
start-process -WorkingDirectory 'C:\support\software\NUC12WSKi7\SerialIO\' -filepath '.\SetupSerialIO.exe' -ArgumentList '-s' -wait
#Thunderbolt
start-process -WorkingDirectory 'C:\support\software\NUC12WSKi7\Thunderbolt\' -filepath '.\Thunderbolt(TM) Software Installer.exe' -ArgumentList '/quiet', '/norestart' -wait
#Audio
start-process -WorkingDirectory 'C:\support\software\NUC12WSKi7\Audio\AUD-Win10_Win11-6.0.9437.1_iSST_10.29.00.7767' -FilePath '.\setup.exe' -ArgumentList '-s' -wait
#BIOS
start-process -WorkingDirectory 'C:\support\software\NUC12WSKi7' -FilePath '.\WSADL357.0087.EBU.exe' -wait
}
}
#Surface Pro 7
if ($csmodel.csmodel -eq "Surface Pro 7") {
$testpath = test-path C:\support\software\SurfacePro7Drivers.msi
If ($testpath -eq $false) {
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SurfacePro7Drivers.msi' -Method 'GET' -OutFile "c:\support\software\SurfacePro7Drivers.msi"
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SurfacePro7Drivers.msi' -ArgumentList '/quiet', '/norestart' -wait
}
}
#Surface Dock 1 Firmware
if ($csmodel.csmodel -like "*Surface*") {
Invoke-RestMethod 'https://boabcdn.blob.core.windows.net/cdn/SurfaceDock1Firmware.msi' -Method 'GET' -OutFile "c:\support\software\SurfaceDock1Firmware.msi"
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\SurfaceDock1Firmware.msi' -ArgumentList '/quiet', '/norestart' -wait
}
####################################################
# Install LEAP
####################################################
Add-Type -AssemblyName PresentationFramework
$msgBoxInput = [System.Windows.MessageBox]::Show("Install LEAP?.", 'Install LEAP', 'YesNo', 'Information')
switch ($msgBoxInput) {
'Yes' {
Invoke-WebRequest -Uri 'https://www.dropbox.com/scl/fi/w7qdxme2df2s1ad9myk5t/LEAPDesktopX64Setup.exe?rlkey=11sins6zi694kgp9kapzb5ztq&dl=1' -OutFile 'C:\support\LEAPDesktopX64Setup.exe'
start-process -WorkingDirectory 'C:\support\software' -FilePath '.\LEAPDesktopX64Setup.exe' -ArgumentList '/S', '/v/qn' -Wait
New-NetFirewallRule -DisplayName "LEAP Desktop" -Direction Inbound -Program "C:\Program Files\LEAP Office\Cloud\LEAP Desktop.exe" -Action Allow
New-NetFirewallRule -DisplayName "LEAP Timesheet" -Direction Inbound -Program "C:\Program Files\LEAP Office\Timesheet\Leap.Timesheet.Shell.exe" -Action Allow
New-NetFirewallRule -DisplayName "LEAP Office XE" -Direction Inbound -Program "C:\ProgramData\LEAP Office\Cloud\Net Client\LeapOfficeXE.NetClient.exe" -Action Allow
New-NetFirewallRule -DisplayName "LEAP PDF" -Direction Inbound -Program "C:\ProgramData\LEAP Office\Cloud\Extras\LeaPDF\LeaPDF.exe" -Action Allow
New-NetFirewallRule -DisplayName "LEAP Print" -Direction Inbound -Program "C:\ProgramData\LEAP Office\Cloud\Extras\LEAPPrint\LEAPPrint.exe" -Action Allow
New-NetFirewallRule -DisplayName "LEAP Calc" -Direction Inbound -Program "C:\ProgramData\LEAP Office\Cloud\LEAPCalc\leap-calc.exe" -Action Allow
New-NetFirewallRule -DisplayName "LEAP Audit" -Direction Inbound -Program "C:\Users\%Username%\AppData\Local\Programs\leap-audit-tool.exe" -Action Allow
}
'No' {
Write-Host 'Cancelled' -foregroundcolor yellow
$msgBoxInput = [System.Windows.MessageBox]::Show("Tnstallation complete.")
}
}
$msgBoxInput = [System.Windows.MessageBox]::Show("Tnstallation complete.")