PowerShell 配置VisualStudio 命令行环境

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

<####################################################################################
# VisualStudio Environment Process Script VisualStudio 2013
# Note:  This Script Support Visual Studio 2013   
# Author: Mr.Lee
# Copyright © By Huxizero.Studio
# ToolChain: X86
####################################################################################>
#Global

<####################################################################################
#  Default Visual Studio 2013 x86 native
#  VisualStudio 110
#  VisualStudio 120
#  X86 X64 ARM
####################################################################################>

<#==========================================================================########
#  Visual Studio 100,110,120 
#  x86 AMD64 ARM
#
# $>>2013.10.29 Add .Net Framework Support,Framework 4.0 or Later;
# 
######============================================================================#>
<##--------------------------------------------------------------------------------
# $VSKit= '8.1' or '8.0' or '7.0A'
# $SysNode='SOFTWARE\Wow6432Node' or 'SOFTWARE'
#
#----------------------------------------------------------------------------#######>

Function Get-RegistryValue($key, $value) { 
                  (Get-ItemProperty $key $value).$value 
}

Function Print-VisualStudioNotFound($VSVer,$VSPATH)
{
  Write-Host -ForegroundColor Red "Can not find $VSVer, Please seized car in this directory(${VSPATH}) VisualStudio version and installation"
  Start-Sleep 3
}
 
If($args.Count -ge 2)
{
 $VisualStudio=$args[0]
 $Platform=$args[1]
 #$args[2]
}
ELSE
{
 exit
}
$InvokeScript=[System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition)
#Set-Location $InvokeScript

if( ([System.Environment]::OSVersion.Version.Major -gt 5) -and ( # Vista and ...
         new-object Security.Principal.WindowsPrincipal (
            [Security.Principal.WindowsIdentity]::GetCurrent()) # current user is admin
            ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) )
 {
$EnvTitle="${env:UserName}@${env:UserDomain} [A] (X86)"
}
ELSE
{
$EnvTitle="${env:UserName}@${env:UserDomain} (X86) "
}
$Host.UI.RawUI.WindowTitle="$EnvTitle - $PWD"

IF(${env:ProgramFiles(x86)} -eq $null)
  {
   $SystemType=32
   $ProgramDir=${env:ProgramFiles}
  }
ELSE
  {
   $SystemType=64
   #SDK Install On ${ProgramDir}
   $ProgramDir=${env:ProgramFiles(x86)}
  }
#$VS_120 =
Write-Host "Your Select Visual Studio is: $VisualStudio,And Your Select Platform:$Platform, And Your Host System is: $SystemType"  
$reI=[System.String]::Compare($VisualStudio,"VS120",$True)
$reII=[System.String]::Compare($VisualStudio,"VS110",$True)
$reIII=[System.String]::Compare($VisualStudio,"VS100",$True)
IF($reI -eq 0)
  {
    #Write-host "VS120 LALALAL"
    Write-Host "Check Visual Studio 2013 Install !!!!!"
    $DefaultFramework=4.51
    IF($env:VS120COMNTOOLS -eq $null)
    {
      Print-VisualStudioNotFound 'VisualStudio 2013' "${env:VS120COMNTOOLS}"
      exit
    }
    $IDE="${env:VS120COMNTOOLS}..\IDE"
    if($SystemType -eq 64)
    {
    $VSInstall=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' '12.0'
    $VCDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' '12.0'
    $SDKDIR=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1' 'InstallationFolder'
    $NetTools=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x64' 'InstallationFolder'
    $FrameworkDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 'FrameworkDir64'
    $FrameworkVer=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 'FrameworkVer64'
    $FSharpDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\Setup\F#' 'ProductDir'
    }
    else
    {
    $VSInstall=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' '12.0'
    $VCDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' '12.0'
    $SDKDIR=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1' 'InstallationFolder'
    $NetTools=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools' 'InstallationFolder'
    $FrameworkDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 'FrameworkDir32'
    $FrameworkVer=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 'FrameworkVer32'
    $FSharpDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\12.0\Setup\F#' 'ProductDir'
    }
    $KitBin32="${SDKDIR}bin\x86"
    $kitBin64="${SDKDIR}bin\x64"
    $KitBinARM="${SDKDIR}bin\ARM"
    $KitInc="${SDKDIR}Include\um;${SDKDIR}Include\Shared;${SDKDIR}Include\WinRT"
    $KitLib32="${SDKDIR}Lib\winv6.3\um\x86"
    $KitLib64="${SDKDIR}Lib\winv6.3\um\x64"
    $KitLibARM="${SDKDIR}LIB\winv6.3\um\ARM"
  }
ELSEIF($reII -eq 0)
  {
    $DefaultFramework=4.5
    Write-Host "Check Visual Studio 2012 Install !!!!!"
    IF($env:VS110COMNTOOLS -eq $null)
    {
      Print-VisualStudioNotFound 'VisualStudio 2012' "${env:VS110COMNTOOLS}"
      exit
    }
    $IDE="${env:VS110COMNTOOLS}..\IDE"
    if($SystemType -eq 64)
    {
    $VSInstall=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' '11.0'
    $VCDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' '11.0'
    $SDKDIR=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0' 'InstallationFolder'
    $NetTools=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x64' 'InstallationFolder'
    $FrameworkDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 'FrameworkDir64'
    $FrameworkVer=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 'FrameworkVer64'
    $FSharpDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\Setup\F#' 'ProductDir'
    #$NetTools="${NetTools}bin"
    }
    else
    {
    $VSInstall=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' '11.0'
    $VCDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' '11.0'
    $SDKDIR=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0' 'InstallationFolder'
    $NetTools=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools' 'InstallationFolder'
    $FrameworkDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 'FrameworkDir32'
    $FrameworkVer=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 'FrameworkVer32'
    $FSharpDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\11.0\Setup\F#' 'ProductDir'
    }
    $KitBin32="${SDKDIR}bin\x86"
    $kitBin64="${SDKDIR}bin\x64"
    $KitBinARM="${SDKDIR}bin\ARM"
    $KitInc="${SDKDIR}Include\um;${SDKDIR}Include\Shared;${SDKDIR}Include\WinRT"
    $KitLib32="${SDKDIR}Lib\win8\um\x86"
    $KitLib64="${SDKDIR}Lib\win8\um\x64"
    $KitLibARM="${SDKDIR}LIB\win8\um\ARM"
  }
ELSEIF($reIII -eq 0)
  {
    Write-Host "Check Visual Studio 2010 Install !!!!!"
    IF($env:VS100COMNTOOLS -eq $null)
    {
      Print-VisualStudioNotFound 'VisualStudio 2010' "${env:VS100COMNTOOLS}"
      exit
    }
    $Perr=[System.String]::Compare($Platform,"ARM",$True)
    IF($Perr -eq 0)
    {
      Write-Host -ForegroundColor Red "Error! Visual Studio Not Support ARM Platform."
      Start-Sleep 5
      Exit
    }
    $DefaultFramework=4.0
    
    $IDE="${env:VS100COMNTOOLS}..\IDE"
    if($SystemType -eq 64)
    {
    $VSInstall=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' '10.0'
    $VCDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' '10.0'
    $SDKDIR=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v7.0A' 'InstallationFolder'
    $NetTools=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools-x64' 'InstallationFolder'
    $FrameworkDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 'FrameworkDir64'
    $FrameworkVer=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 'FrameworkVer64'
    $FSharpDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Setup\F#' 'ProductDir'
    #$NetTools="${NetTools}bin"
    }
    else
    {
    $VSInstall=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' '10.0'
    $VCDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' '10.0'
    $SDKDIR=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A' 'InstallationFolder'
    $NetTools=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools' 'InstallationFolder'
    $FrameworkDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 'FrameworkDir32'
    $FrameworkVer=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 'FrameworkVer32'
    $FSharpDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\10.0\Setup\F#' 'ProductDir'
    }
    $KitBin32="${SDKDIR}bin"
    $kitBin64="${SDKDIR}bin\x64"
    $KitInc="${SDKDIR}Include"
    $KitLib32="${SDKDIR}Lib"
    $KitLib64="${SDKDIR}Lib\x64"
  
  }
ELSE
  {
    #Write-host "VS120 LALALAL"
    Write-Host "Check Visual Studio 2013 Install !!!!!"
    $DefaultFramework=4.51
    
    $IDE="${env:VS120COMNTOOLS}..\IDE"
    if($SystemType -eq 64)
    {
    $VSInstall=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' '12.0'
    $VCDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' '12.0'
    $SDKDIR=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1' 'InstallationFolder'
    $NetTools=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x64' 'InstallationFolder'
    $FrameworkDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 'FrameworkDir64'
    $FrameworkVer=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 'FrameworkVer64'
    $FSharpDir=Get-RegistryValue 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\Setup\F#' 'ProductDir'
    }
    else
    {
    $VSInstall=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' '12.0'
    $VCDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' '12.0'
    $SDKDIR=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1' 'InstallationFolder'
    $NetTools=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools' 'InstallationFolder'
    $FrameworkDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 'FrameworkDir32'
    $FrameworkVer=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 'FrameworkVer32'
    $FSharpDir=Get-RegistryValue 'HKLM:\SOFTWARE\Microsoft\VisualStudio\12.0\Setup\F#' 'ProductDir'
    }
    $KitBin32="${SDKDIR}bin\x86"
    $kitBin64="${SDKDIR}bin\x64"
    $KitBinARM="${SDKDIR}bin\ARM"
    $KitInc="${SDKDIR}Include\um;${SDKDIR}Include\Shared;${SDKDIR}Include\WinRT"
    $KitLib32="${SDKDIR}Lib\winv6.3\um\x86"
    $KitLib64="${SDKDIR}Lib\winv6.3\um\x64"
    $KitLibARM="${SDKDIR}LIB\winv6.3\um\ARM"
  }
IF($SystemType -eq 64)
{
  $FrameworkDir="${FrameworkDir}\"
  #$env:PATH="$FSharpDir;$env:PATH"
}

$env:Path="$FSharpDir;$NetTools;${FrameworkDir}${FrameworkVer};$env:Path"

$re1=[System.String]::Compare($Platform,"X64",$True)
$re2=[System.String]::Compare($Platform,"X86",$True)
$re3=[System.String]::Compare($Platform,"ARM",$True)

IF($re1 -eq 0){
IF($SystemType -eq 32)
{
$Compiler="${VCDir}bin\x86_amd64"
$Library="${VCDir}lib\amd64"
$env:Path="$Compiler;$KitBin32;$IDE;${VCDIR}bin;$env:PATH"
$env:INCLUDE="$KitInc;${VCDir}Include;$env:INCLUDE"
$env:LIB="$KitLib64;${VCDir}Lib\amd64;$env:LIB"
}
ELSE{
$Compiler="${VCDir}bin\amd64"
$Library="${VCDir}lib\amd64"
$env:Path="$Compiler;$KitBin64;$IDE;$env:PATH"
$env:INCLUDE="$KitInc;${VCDir}Include;$env:INCLUDE"
$env:LIB="$KitLib64;${VCDir}Lib\amd64;$env:LIB"
}
#Test OK
}
ELSEIF($re2 -eq 0){
$Compiler="${VCDir}bin"
$Library="${VCDir}lib"
$env:Path="$Compiler;$KitBin32;$IDE;$env:PATH"
$env:INCLUDE="$KitInc;${VCDir}Include;$env:INCLUDE"
#VS120 OK
$env:LIB="$KitLib32;${VCDir}LIB;$env:LIB"
#echo $Compiler
}
ELSEIF($re3 -eq 0){
$Compiler="${VCDir}bin\x86_ARM"
$Library="${VCDir}lib\arm"
$env:Path="$Compiler;${VCDir}bin;$KitBinARM;$IDE;$env:PATH"
$env:INCLUDE="$KitInc;${VCDir}Include;$env:INCLUDE"
$env:LIB="$KitLibARM;${VCDir}LIB\arm;$env:LIB"
}ELSE
{
$Compiler="${VCDir}bin"
$Library="${VCDir}lib"
$env:Path="$Compiler;$KitBin32;$IDE;$env:PATH"
$env:INCLUDE="$KitInc;${VCDir}Include;$env:INCLUDE"
#VS120 OK
$env:LIB="$KitLib32;${VCDir}LIB;$env:LIB"
}

#Base C/C++ Native Environment Support
#///////////////////////////////////////////////////////////////////////#

#Write-Host "${VCDir}..\Common7\IDE"
#Write-Host $Compiler $Library

#Write-Host $Global:WindowTitlePrefix.ToString()
#Find Visual Studio 2013

#//////////////////////////////////////////////////////////////////////#
#Extend C/C++ Environment


#.Net Framework Check
#Framework or Framework64