Advertisement
Lynngineer

boxstarter-t570-lynn.ps1

Jul 28th, 2019
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Get-Boxstarter {
  2. # https://pastebin.com/raw/bg5pfwYK
  3. # . { iwr -useb https://boxstarter.org/bootstrapper.ps1 } | iex; get-boxstarter -Force
  4. # . C:\downloads_temp\boxstarter-bootstrapper.ps1; iex Get-Boxstarter -Force
  5.     Param(
  6.         [string] $Version = "2.12.0",
  7.         [switch] $Force
  8.     )
  9.     if(!(Test-Admin)) {
  10.         $bootstrapperFile = ${function:Get-Boxstarter}.File
  11.         if($bootstrapperFile) {
  12.             Write-Host "User is not running with administrative rights. Attempting to elevate..."
  13.             $command = "-ExecutionPolicy bypass -noexit -command . '$bootstrapperFile';Get-Boxstarter $($args)"
  14.             Start-Process powershell -verb runas -argumentlist $command
  15.         }
  16.         else {
  17.             Write-Host "User is not running with administrative rights.`nPlease open a PowerShell console as administrator and try again."
  18.         }
  19.         return
  20.     }
  21.  
  22.     $badPolicy = $false
  23.     @("Restricted", "AllSigned") | ? { $_ -eq (Get-ExecutionPolicy).ToString() } | % {
  24.         Write-Host "Your current PowerShell Execution Policy is set to '$(Get-ExecutionPolicy)' and will prohibit boxstarter from operating properly."
  25.         Write-Host "Please use Set-ExecutionPolicy to change the policy to RemoteSigned or Unrestricted."
  26.         $badPolicy = $true
  27.     }
  28.     if($badPolicy) { return }
  29.  
  30.     Write-Output "Welcome to the Boxstarter Module installer  --------  Lynn"
  31.     if(Check-Chocolatey -Force:$Force){
  32.    
  33.         $message = "Chocolatey extensions..."
  34.         Write-Host $message
  35.         # configure license correctly  
  36.         # https://chocolatey.org/docs/installation-licensed
  37.         # https://chocolatey.org/docs/features-install-directory-override
  38.         $command = "choco install chocolatey.extension --install-directory=$env:ChocolateyToolsLocation -y"
  39.         Invoke-Expression $command
  40.        
  41.         # Create python directory. Install to it.
  42.         New-Item c:\python -Force -type directory | Out-Null
  43.         $command = "choco install python --install-directory=c:\python -y"
  44.         Invoke-Expression $command
  45.  
  46.         $command = "choco list -lo"
  47.         Invoke-Expression $command
  48.  
  49.         Write-Output "Chocolatey installed, licensed, and configured. Boxstarter modules commented out."
  50.         Write-Output "Fin"
  51. #        Write-Output "Chocolatey installed, Installing Boxstarter Modules."
  52.  
  53. # Alt+Shift, Shift+#
  54. #        $chocoVersion  = "2.9.17"
  55. #        try {
  56. #            New-Object -TypeName Version -ArgumentList $chocoVersion.split('-')[0] | Out-Null
  57. #            $command = "cinst Boxstarter -y"
  58. #        }
  59. #        catch{
  60. #            # if there is no -v then its an older version with no -y
  61. #            $command = "cinst Boxstarter"
  62. #        }
  63. #        $command += " --version $version"
  64. #        Invoke-Expression $command
  65. #        Import-Module "$env:ProgramData\boxstarter\boxstarter.chocolatey\boxstarter.chocolatey.psd1" -Force
  66. #        $Message = "Boxstarter Module Installer completed"
  67. #
  68.  
  69.     }
  70.     else {
  71.         $Message = "Did not detect Chocolatey and unable to install. Installation of Boxstarter has been aborted."
  72.     }
  73.     if($Force) {
  74.         Write-Host $Message
  75.     }
  76.     else {
  77.         Read-Host $Message
  78.     }
  79. }
  80.  
  81. function Check-Chocolatey {
  82.     Param(
  83.         [switch] $Force
  84.     )
  85.     if(-not $env:ChocolateyInstall){
  86.         $message = "Chocolatey environment variables and directories will be created."
  87.         Write-Host $message
  88.         $env:ChocolateyInstall = "c:\choco"
  89.  
  90. #       [System.Environment]::SetEnvironmentVariable('Z_TEST', '001', [System.EnvironmentVariableTarget]::Machine)
  91.  
  92.         $env:ChocolateyLicenseDir = "c:\choco\license"
  93.         $env:ChocolateyToolsLocation = "c:\ctools"
  94.         New-Item $env:ChocolateyInstall -Force -type directory | Out-Null
  95.         New-Item $env:ChocolateyLicenseDir -Force -type directory | Out-Null
  96.         New-Item $env:ChocolateyToolsLocation -Force -type directory | Out-Null
  97.         # Copy chocolatey license file      
  98.         Copy-Item -Path C:\downloads_temp\chocolatey.license.xml -Destination $env:ChocolateyLicenseDir
  99.         # Directories exist and license is in correct place
  100.     }
  101.  
  102.     if(-not $env:ChocolateyInstall -or -not (Test-Path "$env:ChocolateyInstall\bin\choco.exe")){
  103.  
  104.         $message = "Chocolatey not installed. Also .NET Framework Version 4 or greater."
  105.         Write-Host $message
  106.         if($Force -OR (Confirm-Install)){
  107.             $exitCode = Enable-Net40
  108.             if($exitCode -ne 0) {
  109.                 Write-Warning ".net install returned $exitCode. You likely need to reboot your computer before proceeding with the install."
  110.                 return $false
  111.             }
  112.        
  113.             $message = "Chocolatey downloading..."
  114.             Write-Host $message
  115.             $url="https://chocolatey.org/api/v2/package/chocolatey/"
  116.             $wc=new-object net.webclient
  117.             $wp=[system.net.WebProxy]::GetDefaultProxy()
  118.             $wp.UseDefaultCredentials=$true
  119.             $wc.Proxy=$wp
  120.  
  121.             $message = "Chocolatey installing..."
  122.             Write-Host $message
  123.             # install chocolatey
  124.             iex ($wc.DownloadString("https://chocolatey.org/install.ps1"))
  125.  
  126.             $message = "Chocolatey added to bin.."
  127.             Write-Host $message
  128.             # add to path
  129.             $env:path="$env:path;$env:ChocolateyInstall\bin"
  130.             Write-Host "env: $env:path"
  131.  
  132.         }
  133.         else{
  134.             return $false
  135.         }
  136.     }
  137.     return $true
  138. }
  139.  
  140. function Is64Bit {  [IntPtr]::Size -eq 8  }
  141.  
  142. function Enable-Net40 {
  143.     if(Is64Bit) {$fx="framework64"} else {$fx="framework"}
  144.     if(!(test-path "$env:windir\Microsoft.Net\$fx\v4.0.30319")) {
  145.         Write-Host "Downloading .net 4.5..."
  146.         Get-HttpToFile "https://download.microsoft.com/download/b/a/4/ba4a7e71-2906-4b2d-a0e1-80cf16844f5f/dotnetfx45_full_x86_x64.exe" "$env:temp\net45.exe"
  147.         Write-Host "Installing .net 4.5..."
  148.         $pinfo = New-Object System.Diagnostics.ProcessStartInfo
  149.         $pinfo.FileName = "$env:temp\net45.exe"
  150.         $pinfo.Verb="runas"
  151.         $pinfo.Arguments = "/quiet /norestart /log $env:temp\net45.log"
  152.         $p = New-Object System.Diagnostics.Process
  153.         $p.StartInfo = $pinfo
  154.         $p.Start() | Out-Null
  155.         $p.WaitForExit()
  156.         $e = $p.ExitCode
  157.         if($e -ne 0){
  158.             Write-Host "Installer exited with $e"
  159.         }
  160.         return $e
  161.     }
  162.     return 0
  163. }
  164.  
  165. function Get-HttpToFile ($url, $file){
  166.     Write-Verbose "Downloading $url to $file"
  167.     if(Test-Path $file){Remove-Item $file -Force}
  168.     $downloader=new-object net.webclient
  169.     $wp=[system.net.WebProxy]::GetDefaultProxy()
  170.     $wp.UseDefaultCredentials=$true
  171.     $downloader.Proxy=$wp
  172.     try {
  173.         $downloader.DownloadFile($url, $file)
  174.     }
  175.     catch{
  176.         if($VerbosePreference -eq "Continue"){
  177.             Write-Error $($_.Exception | fl * -Force | Out-String)
  178.         }
  179.         throw $_
  180.     }
  181. }
  182.  
  183. function Confirm-Install {
  184.     $caption = "Installing Chocolatey"
  185.     $message = "Do you want to proceed?"
  186.     $yes = new-Object System.Management.Automation.Host.ChoiceDescription "&Yes","Yes";
  187.     $no = new-Object System.Management.Automation.Host.ChoiceDescription "&No","No";
  188.     $choices = [System.Management.Automation.Host.ChoiceDescription[]]($yes,$no);
  189.     $answer = $host.ui.PromptForChoice($caption,$message,$choices,0)
  190.  
  191.     switch ($answer){
  192.         0 {return $true; break}
  193.         1 {return $false; break}
  194.     }
  195. }
  196.  
  197. function Test-Admin {
  198.     $identity  = [System.Security.Principal.WindowsIdentity]::GetCurrent()
  199.     $principal = New-Object System.Security.Principal.WindowsPrincipal( $identity )
  200.     return $principal.IsInRole( [System.Security.Principal.WindowsBuiltInRole]::Administrator )
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement