Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

[sccm 2016] Silent Auto INSTALL OF SCCM2016 + MDT2013U2

Publié le par damcuvelier

param(
[Parameter(Mandatory=$false)][string]$FQDom = "LAB.local",
[Parameter(Mandatory=$false)][string]$SCCMSRV = "SCCMSRV",
[Parameter(Mandatory=$false)][string]$ConfigMgrSource = "C:\ConfigMgrSource",
[Parameter(Mandatory=$false)][string]$SetupSQLFold = "C:\SetupSQL",
[Parameter(Mandatory=$false)][string]$pswd = "P@ssw0rd2",
[Parameter(Mandatory=$false)][string]$sourcepath = "C:\Source",
[Parameter(Mandatory=$false)][string]$partdeploy = "D:"
)

$ErrorActionPreference = 'SilentlyContinue'

#variables
$Suff = $FQDom.split(".")[1]
$Domain = $FQDom.split(".")[0]
$PSScriptRoot = Split-Path -Path $MyInvocation.MyCommand.Path

# This scripts needs unrestricted access
$error.clear
Set-ExecutionPolicy Unrestricted; if($Error.count -gt 0){Set-ExecutionPolicy Unrestricted -scope CurrentUser}

#ini config files
function writeinifiles{

#SQL Configuration ini File
";SQL Server 2016 Configuration File" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"[OPTIONS]" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Agree to terms" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"IACCEPTSQLSERVERLICENSETERMS="+[char]34+"True"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specifies a Setup work flow, like INSTALL, UNINSTALL, or UPGRADE. This is a required parameter. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"ACTION="+[char]34+"Install"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Detailed help for command line argument ENU has not been defined yet. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"ENU="+[char]34+"True"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Parameter that controls the user interface behavior. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; UIMODE="+[char]34+"Normal"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Setup will not display any user interface. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"QUIET="+[char]34+"True"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Setup will display progress only, without any user interaction. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"QUIETSIMPLE="+[char]34+"False"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specify whether SQL Server Setup should discover and include product updates. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"UpdateEnabled="+[char]34+"True"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specifies features to install, uninstall, or upgrade. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"FEATURES=SQLENGINE,RS,CONN" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specify the location where SQL Server Setup will obtain product updates. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"UpdateSource="+[char]34+"MU"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Displays the command line parameters usage " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"HELP="+[char]34+"False"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specifies that the detailed Setup log should be piped to the console. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"INDICATEPROGRESS="+[char]34+"False"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specifies that Setup should install into WOW64. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"X86="+[char]34+"False"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specify the root installation directory for shared components.  " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"INSTALLSHAREDDIR="+[char]34+"C:\Program Files\Microsoft SQL Server"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specify the root installation directory for the WOW64 shared components. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"INSTALLSHAREDWOWDIR="+[char]34+"C:\Program Files (x86)\Microsoft SQL Server"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specify a default or named instance. MSSQLSERVER is the default instance for non-Express editions and SQLExpress for Express editions. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"INSTANCENAME="+[char]34+"MSSQLSERVER"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specify the Instance ID for the SQL Server features you have specified. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"INSTANCEID="+[char]34+"MSSQLSERVER"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specify that SQL Server feature usage data can be collected and sent to Microsoft.  " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SQMREPORTING="+[char]34+"True"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"ERRORREPORTING="+[char]34+"False"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; RSInputSettings_RSInstallMode_Description " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"RSINSTALLMODE="+[char]34+"DefaultNativeMode"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specify if errors can be reported to Microsoft to improve future SQL Server releases.  " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"ERRORREPORTING="+[char]34+"True"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specify the installation directory. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"INSTANCEDIR="+[char]34+"C:\Program Files\Microsoft SQL Server"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Agent account name " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"AGTSVCACCOUNT="+[char]34+"NT Service\SQLSERVERAGENT"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Auto-start service after installation.  " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"AGTSVCSTARTUPTYPE="+[char]34+"Manual"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; CM brick TCP communication port " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"COMMFABRICPORT="+[char]34+"0"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; How matrix will use private networks " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"COMMFABRICNETWORKLEVEL="+[char]34+"0"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; How inter brick communication will be protected " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"COMMFABRICENCRYPTION="+[char]34+"0"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; TCP port used by the CM brick " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"MATRIXCMBRICKCOMMPORT="+[char]34+"0"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Startup type for the SQL Server service. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SQLSVCSTARTUPTYPE="+[char]34+"Automatic"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Level to enable FILESTREAM feature at (0, 1, 2 or 3). " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"FILESTREAMLEVEL="+[char]34+"0"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Set to "+[char]34+"1"+[char]34+" to enable RANU for SQL Server Express. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"ENABLERANU="+[char]34+"False"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specifies a Windows collation or an SQL collation to use for the Database Engine. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SQLCOLLATION="+[char]34+"SQL_Latin1_General_CP1_CI_AS"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Account for SQL Server service: Domain\User or system account. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SQLSVCACCOUNT="+[char]34+"NT AUTHORITY\SYSTEM"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Windows account(s) to provision as SQL Server system administrators. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SQLSYSADMINACCOUNTS="+[char]34+"$Domain\Administrator"+[char]34+" "+[char]34+"BUILTIN\Administrators"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Default directory for the Database Engine backup files. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SQLBACKUPDIR="+[char]34+"G:\SQLBCK"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Default directory for the Database Engine user databases. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SQLUSERDBDIR="+[char]34+"G:\SQLDB"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Default directory for the Database Engine user database logs. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SQLUSERDBLOGDIR="+[char]34+"H:\SQLLOG"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Directory for Database Engine TempDB files. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SQLTEMPDBDIR="+[char]34+"F:\SQLTMP"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Provision current user as a Database Engine system administrator for SQL Server 2012 Express. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"ADDCURRENTUSERASSQLADMIN="+[char]34+"False"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specify 0 to disable or 1 to enable the TCP/IP protocol. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"TCPENABLED="+[char]34+"1"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specify 0 to disable or 1 to enable the Named Pipes protocol. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"NPENABLED="+[char]34+"0"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Startup type for Browser Service. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"BROWSERSVCSTARTUPTYPE="+[char]34+"Disabled"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specifies which account the report server NT service should execute under.  " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"RSSVCACCOUNT="+[char]34+"NT AUTHORITY\SYSTEM"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; Specifies how the startup mode of the report server NT service. " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"RSSVCSTARTUPTYPE="+[char]34+"Automatic"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"


#sccm setup ini file:
"[Identification]" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"Action=InstallPrimarySite" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"[Options]" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"[Identification]" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"Action=InstallPrimarySite" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"[Options]" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"ProductID=$ProductID" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SiteCode=$SiteCode" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SiteName=$SiteName" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SMSInstallDir="+[char]34+"C:\Program Files\ConfigMgr"+[char]34 | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; SDKServer=<FQDN for SDKServer>" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"RoleCommunicationProtocol=HTTPorHTTPS" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"ClientsUsePKICertificate=0" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"PrerequisiteComp=0" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"PrerequisitePath=<Prereqs folder path>" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"MobileDeviceLanguage=0" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; ManagementPoint=<FQDN MP server>" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"ManagementPointProtocol=HTTP" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"DistributionPoint=$SCCMSRV" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"DistributionPointProtocol=HTTP" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"DistributionPointInstallIIS=0" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"AdminConsole=1 (0 is you don’t want to install the console)" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"[SQLConfigOptions]" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SQLServerName=$SQLServerName" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"; DatabaseName=<SQLServerName\InstanceName> (leave blank for the default instance)" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"DatabaseName=" | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"
"SQLSSBPort=4022 " | Out-File -Append "$PSScriptRoot\SQLConfigurationFile.ini"

 

}

# install & configure SCCM 2016
function CreateADUsers{

Import-Module -Name ActiveDirectory
$newUsers = "SMSadmin","Testuser","Testuser2","Testuser3","DomJoin","ReportsUser","ClientInstall","SCCMNAA"


$Password = ConvertTo-SecureString -String $pswd -AsPlainText -Force
foreach ($newuser in $newUsers){New-ADUser -SamAccountName $newUser -Name $newuser -AccountPassword $Password -PassThru | Enable-ADAccount -Verbose}

 

([ADSI]"WinNT://$SCCMSRV/Administrators,group").add("WinNT://$Domain/ClientInstall")
([ADSI]"WinNT://$SCCMSRV/Administrators,group").add("WinNT://$Domain/SMSAdmin")

$step="BitsTransfer"
}

function BitsTransfer{
Start-BitsTransfer
$step="createContainer"
}

function createContainer{

#create the Container
New-ADObject -path 'CN=System,DC=$Domain,DC=com' -Type container -name 'System Management' -PassThru
#get the Default Naming context
$root = (Get-ADRootDSE).defaultNamingContext

#store the ACL for the Container System Management
$acl = get-acl "AD:CN=System Management,CN=System,$root"

#get the Computer AD Object
$SCCMComputerAccount = Get-ADComputer -Identity $SCCMSRV

#Create an ACE to give the Computer Account Full access to the Container "System Management" and the child Objects
$All = [System.DirectoryServices.ActiveDirectorySecurityInheritance]::SelfAndChildren
$ace = new-object System.DirectoryServices.ActiveDirectoryAccessRule $SCCMComputerAccount.SID, "GenericAll", "Allow", $All
$acl.AddAccessRule($ace)
Set-acl -aclobject $acl "ad:CN=System Management,CN=System,$root"
$step="ExtendADSchema"
}

function ExtendADSchema{
& "$ConfigMgrSource\SMSSETUP\BIN\X64\extadsch.exe"
$step="OpenPorts"
}

function OpenPorts{
New-GPO -Name SCCM_FireWall_Rule -Comment "This is to allow port 1433 and 4022 for sql replication" -Domain $Domain.com -Verbose

$GPOSession = Open-NetGPO -PolicyStore "$Domain.com\SCCM_FireWall_Rule" -DomainController "$DomainDC" -Verbose
New-NetFirewallRule -name AllowPort1433 -DisplayName "ALlow port 1433 for SQL Replication" -Direction Inbound -Protocol TCP -LocalPort 1433 -LocalAddress 10.1.1.1/24 -GPOSession $GPOSession -Verbose
New-NetFirewallRule -name AllowPort4022 -DisplayName "ALlow port 4022 for SQL Replication" -Direction Inbound -Protocol TCP -LocalPort 4022 -LocalAddress 10.1.1.1/24 -GPOSession $GPOSession -Verbose
Save-NetGPO -GPOSession $GPOSession -Verbose

New-GPLink -Name SCCM_FireWall_Rule -Target "DC=$Domain,DC=Com" -LinkEnabled Yes

Get-ADComputer -Filter * -SearchBase "CN=Computers,DC=$Domain,DC=Com" | ForEach-Object -Process {Invoke-GPUpdate -RandomDelayInMinutes 0 -Force }
$step="InstallRequiredfeatures"
}

function InstallRequiredfeatures{
$Session = New-PSSession -ComputerName "$SCCMSRV"
$featuresneeded = "Web-Common-Http","Web-Static-Content","Web-Default-Doc","Web-Dir-Browsing","Web-Http-Errors","Web-Http-Redirect","Web-App-Dev","Web-Asp-Net","Web-Net-Ext","Web-ASP","Web-ISAPI-Ext","Web-ISAPI-Filter","Web-Health","Web-Http-Logging","Web-Log-Libraries","Web-Request-Monitor","Web-Http-Tracing","Web-Security","Web-Basic-Auth","Web-Windows-Auth","Web-Url-Auth","Web-Filtering","Web-IP-Security","Web-Performance","Web-Stat-Compression","Web-Mgmt-Tools","Web-Mgmt-Console","Web-Scripting-Tools","Web-Mgmt-Service","Web-Mgmt-Compat","Web-Metabase","Web-WMI","Web-Lgcy-Scripting","Web-Lgcy-Mgmt-Console"
Invoke-Command -Session $Session -ScriptBlock {Get-WindowsFeature -Name $using:FeaturesNeeded | where {$_.installed -eq $false } | Add-WindowsFeature }
$step="dotNetFx40"
}

function dotNetFx40{
$Session = New-PSSession -ComputerName "$SCCMSRV"
$url = "http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe"
Start-BitsTransfer -Source $url -Destination "\\$SCCMSRV\C$\Temp\DotNet4_Full.exe" -Asynchronous
Invoke-Command -Session $session -ScriptBlock {Get-WindowsFeature -Name "BITS","RDC" | Add-WindowsFeature -Verbose }
$step="DllSQLServer"
}

function DllSQLServer{
$SQLServer2016url = "https://download.microsoft.com/download/B/F/2/BF2EDBB8-004D-47F3-AA2B-FEA897591599/SQLServer2016-SSEI-Expr.exe"
Start-BitsTransfer -Source $SQLServer2016url -Destination "$SetupSQLFold\SQL" -Asynchronous
$SQLManagementStudiourl = "https://download.microsoft.com/download/5/0/B/50B02ECB-CB5C-4C23-A1D3-DAB4467604DA/SSMS-Setup-ENU.exe"
Start-BitsTransfer -Source $SQLManagementStudiourl -Destination "$SetupSQLFold\SQL Server Management Studio" -Asynchronous
$step="InstallSQLServer"
}

function InstallSQLServer{
& "$SetupSQLFold\SQL\setup.exe /CONFIGURATIONFILE=$PSScriptRoot\SQLConfigurationFile.ini"
$step="InstallSQLMgmtSt"
}

function InstallSQLMgmtSt{
& "$SetupSQLFold\SQL Server Management Studio\SSMS-Setup-ENU.exe /install /quiet /norestart"
}

function InstallSCCMConsole{
$SCCMSETUPSource = "$ConfigMgrInstallationMedia\SMSSETUP\BIN\X64"
$TargetDir=[char]34+"C:\Program Files\ConfigMgr"+[char]34
$DefaultSiteServerName="$SCCMSRV.$FQDom"

& "$SCCMSETUPSource\consolesetup.exe /q TargetDir=$TargetDir EnableSQM=0 DefaultSiteServerName=$DefaultSiteServerName"
$step="InstallSCCM"
}

function InstallSCCM{
& "$SCCMSETUPSource\setup.exe /script $PSScriptRoot\setup.ini"
$step="installMDT2013"
}

function installMDT2013{
& "POWERSHELL $SCCMSETUPSource\MDT-2013U2-silent-install.PS1"
$step="integrateMDT"
}

function integrateMDT{
$Folder = "$partdeploy\DeploymentShare"
$Share  = "DeploymentShare$"

Import-Module "C:\Program Files\Microsoft Deployment Toolkit\bin\MicrosoftDeploymentToolkit.psd1"

New-Item -Path $Folder -Type Directory
New-SmbShare –Name $Share –Path $Folder –FullAccess EVERYONE

New-PSDrive -Name "DS001" -PSProvider "MDTProvider" -Root $Folder -NetworkPath "\\$ENV:COMPUTERNAME\$Share" -Description "Deployment Share" | Add-MDTPersistentDrive

$os = Import-MDTOperatingSystem -Path "DS001:\Operating Systems" -SourcePath "$partdeploy\" -DestinationFolder "Windows 10"

Import-MDTTaskSequence -Path "DS001:\Task Sequences" -Name "Windows 10" -Template "Client.xml" -Comments "Build and Capture Windows 10" -ID "WIN10" -Version "1.0" -OperatingSystemPath "DS001:\Operating Systems\$($os.Name)" -FullName $Domain -OrgName $Domain -AdminPassword $pswd

Update-MDTDeploymentShare -Path "DS001:"

$File = "$Folder\Control\CustomSettings.ini"
(Get-Content $file | Select-String -Pattern 'SkipCapture' -NotMatch) | Set-Content $file

& "C:\Program Files\Microsoft Deployment Toolkit\Bin\Microsoft.BDD.WizLauncher.exe" ConfigureSCCM


$MDT  = "C:\Program Files\Microsoft Deployment Toolkit"
$SCCM = "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole"
$MOF  = "$SCCM\Bin\Microsoft.BDD.CM12Actions.mof"

Copy-Item "$MDT\Bin\Microsoft.BDD.CM12Actions.dll" "$SCCM\Bin\Microsoft.BDD.CM12Actions.dll"
Copy-Item "$MDT\Bin\Microsoft.BDD.Workbench.dll" "$SCCM\Bin\Microsoft.BDD.Workbench.dll"
Copy-Item "$MDT\Bin\Microsoft.BDD.ConfigManager.dll" "$SCCM\Bin\Microsoft.BDD.ConfigManager.dll"
Copy-Item "$MDT\Bin\Microsoft.BDD.CM12Wizards.dll" "$SCCM\Bin\Microsoft.BDD.CM12Wizards.dll"
Copy-Item "$MDT\Bin\Microsoft.BDD.PSSnapIn.dll" "$SCCM\Bin\Microsoft.BDD.PSSnapIn.dll"
Copy-Item "$MDT\Bin\Microsoft.BDD.Core.dll" "$SCCM\Bin\Microsoft.BDD.Core.dll"
Copy-Item "$MDT\SCCM\Microsoft.BDD.CM12Actions.mof" $MOF
Copy-Item "$MDT\Templates\CM12Extensions\*" "$SCCM\XmlStorage\Extensions\" -Force -Recurse
(Get-Content $MOF).Replace('%SMSSERVER%', $SiteServer).Replace('%SMSSITECODE%', $SiteCode) | Set-Content $MOF
& "C:\Windows\System32\wbem\mofcomp.exe" "$SCCM\Bin\Microsoft.BDD.CM12Actions.mof"

New-ItemProperty -Path HKLM:Software -Name CaptureTime -Value $(Get-Date -UFormat "%Y/%m/%d")

$app = Import-MDTApplication `
  -Enable $true `
  -Path "DS001:\Applications" `
  -Name "Branding" `
  -ShortName "Branding" `
  -DisplayName "Branding" `
  -CommandLine "powershell.exe -ExecutionPolicy Bypass -File Configure.ps1" `
  -WorkingDirectory ".\Applications\Branding" `
  -ApplicationSourcePath "C:\Media\Branding" `
  -DestinationFolder "Branding"
 
  $step = [xml]@"
<step type="BDD_InstallApplication" name="Branding" description="" disable="false" continueOnError="false" runIn="WinPEandFullOS" successCodeList="0 3010">  
<defaultVarList>  
  <variable name="ApplicationGUID" property="ApplicationGUID">$($x.GUID)</variable>
  <variable name="ApplicationSuccessCodes" property="ApplicationSuccessCodes">0 3010</variable>
</defaultVarList>  
<action>cscript.exe "%SCRIPTROOT%\ZTIApplications.wsf"</action>  
</step>  
"@

$ts    = "C:\DeploymentShare\Control\WIN10\ts.xml"
$xml   = [xml](Get-Content $ts)
$node  = $xml.ImportNode($step.get_DocumentElement(), $true)
$tasks = $xml.Sequence.Group.Group | ? Name -eq "Custom Tasks"
$tasks.AppendChild($node)
$xml.Save($ts)

Import-Module "C:\Program Files\Microsoft Deployment Toolkit\bin\MicrosoftDeploymentToolkit.psd1"
Restore-MDTPersistentDrive

$settings = "C:\DeploymentShare\Control\Settings.xml"
$xml = [xml](Get-Content $settings)
$xml.Settings.Item("Boot.x86.FeaturePacks")."#text" = "winpe-mdac,winpe-netfx,winpe-powershell"
$xml.Settings.Item("Boot.x64.FeaturePacks")."#text" = "winpe-mdac,winpe-netfx,winpe-powershell"
$xml.Save($settings)

Update-MDTDeploymentShare -Path "DS001:" -Force

# This example only updates the x64 boot WIM.
mkdir C:\Mount

$adk = "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit"

dism /Mount-Wim /WimFile:C:\DeploymentShare\Boot\LiteTouchPE_x64.wim /MountDir:C:\Mount /Index:1

& "$adk\Deployment Tools\amd64\DISM\dism.exe" /Add-Package /Image:C:\Mount /PackagePath:"$adk\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-NetFx.cab"
& "$adk\Deployment Tools\amd64\DISM\dism.exe" /Add-Package /Image:C:\Mount /PackagePath:"$adk\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-NetFx_en-us.cab"

& "$adk\Deployment Tools\amd64\DISM\dism.exe" /Add-Package /Image:C:\Mount /PackagePath:"$adk\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-PowerShell.cab"
& "$adk\Deployment Tools\amd64\DISM\dism.exe" /Add-Package /Image:C:\Mount /PackagePath:"$adk\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-PowerShell_en-us.cab"

dism /UnMount-Wim /MountDir:C:\Mount /Commit
rmdir C:\Mount

 

}


# Silent Auto INSTALL OF SCCM2016 + MDT2013U2
CreateADUsers; while (!($step="BitsTransfer")) { Start-Sleep 10 }
BitsTransfer; while (!($step="createContainer")) { Start-Sleep 10 }
createContainer; while (!($step="ExtendADSchema")) { Start-Sleep 10 }
ExtendADSchema; while (!($step="OpenPorts")) { Start-Sleep 10 }
OpenPorts; while (!($step="InstallRequiredfeatures")) { Start-Sleep 10 }
InstallRequiredfeatures; while (!($step="dotNetFx40")) { Start-Sleep 10 }
dotNetFx40; while (!($step="DllSQLServer")) { Start-Sleep 10 }
DllSQLServer; while (!($step="InstallSQLServer")) { Start-Sleep 10 }
InstallSQLServer; while (!($step="InstallSQLMgmtSt")) { Start-Sleep 10 }
InstallSQLMgmtSt; while (!($step="InstallSCCMConsole")) { Start-Sleep 10 }
InstallSCCMConsole; while (!($step="InstallSCCM")) { Start-Sleep 10 }
InstallSCCM; while (!($step="installMDT2013")) { Start-Sleep 10 }
installMDT2013; while (!($step="integrateMDT")) { Start-Sleep 10 }
integrateMDT

 

 

Commenter cet article