application-workloads/sccm/sccm-currentbranch/DSC/ClientConfiguration.ps1 (119 lines of code) (raw):
configuration Configuration
{
param
(
[Parameter(Mandatory)]
[String]$DomainName,
[Parameter(Mandatory)]
[String]$DCName,
[Parameter(Mandatory)]
[String]$DPMPName,
[Parameter(Mandatory)]
[String]$CSName,
[Parameter(Mandatory)]
[String]$PSName,
[Parameter(Mandatory)]
[System.Array]$ClientName,
[Parameter(Mandatory)]
[String]$Configuration,
[Parameter(Mandatory)]
[String]$DNSIPAddress,
[Parameter(Mandatory)]
[System.Management.Automation.PSCredential]$Admincreds
)
Set-ExecutionPolicy -ExecutionPolicy Bypass -Force
Import-DscResource -ModuleName TemplateHelpDSC
$LogFolder = "TempLog"
$LogPath = "c:\$LogFolder"
$DName = $DomainName.Split(".")[0]
$DCComputerAccount = "$DName\$DCName$"
$PSComputerAccount = "$DName\$PSName$"
[System.Management.Automation.PSCredential]$DomainCreds = New-Object System.Management.Automation.PSCredential ("${DomainName}\$($Admincreds.UserName)", $Admincreds.Password)
$PrimarySiteName = $PSName.split(".")[0] + "$"
Node localhost
{
LocalConfigurationManager
{
ConfigurationMode = 'ApplyOnly'
RebootNodeIfNeeded = $true
}
SetCustomPagingFile PagingSettings
{
Drive = 'C:'
InitialSize = '8192'
MaximumSize = '8192'
}
SetDNS DnsServerAddress
{
DNSIPAddress = $DNSIPAddress
Ensure = "Present"
DependsOn = "[SetCustomPagingFile]PagingSettings"
}
InstallFeatureForSCCM InstallFeature
{
Name = "Client"
Role = "Client"
DependsOn = "[SetCustomPagingFile]PagingSettings"
}
WaitForDomainReady WaitForDomain
{
Ensure = "Present"
DCName = $DCName
DependsOn = "[SetDNS]DnsServerAddress"
}
JoinDomain JoinDomain
{
DomainName = $DomainName
Credential = $DomainCreds
DependsOn = "[WaitForDomainReady]WaitForDomain"
}
WaitForConfigurationFile WaitForPSJoinDomain
{
Role = "DC"
MachineName = $DCName
LogFolder = $LogFolder
ReadNode = "PSJoinDomain"
Ensure = "Present"
DependsOn = "[JoinDomain]JoinDomain"
}
File ShareFolder
{
DestinationPath = $LogPath
Type = 'Directory'
Ensure = 'Present'
DependsOn = "[WaitForConfigurationFile]WaitForPSJoinDomain"
}
FileReadAccessShare DomainSMBShare
{
Name = $LogFolder
Path = $LogPath
Account = $DCComputerAccount,$PSComputerAccount
DependsOn = "[File]ShareFolder"
}
OpenFirewallPortForSCCM OpenFirewall
{
Name = "Client"
Role = "Client"
DependsOn = "[JoinDomain]JoinDomain"
}
AddUserToLocalAdminGroup AddADUserToLocalAdminGroup {
Name = $($Admincreds.UserName)
DomainName = $DomainName
DependsOn = "[FileReadAccessShare]DomainSMBShare"
}
AddUserToLocalAdminGroup AddADComputerToLocalAdminGroup {
Name = "$PrimarySiteName"
DomainName = $DomainName
DependsOn = "[FileReadAccessShare]DomainSMBShare"
}
WriteConfigurationFile WriteClientFinished
{
Role = "Client"
LogPath = $LogPath
WriteNode = "ClientFinished"
Status = "Passed"
Ensure = "Present"
DependsOn = "[AddUserToLocalAdminGroup]AddADUserToLocalAdminGroup","[AddUserToLocalAdminGroup]AddADComputerToLocalAdminGroup"
}
}
}