@@ -45,6 +45,9 @@ $script:localizedData = Get-LocalizedData `
4545
4646 . PARAMETER Description
4747 The value assigned here will be set as the local computer description.
48+
49+ . PARAMETER Server
50+ The Active Directory Domain Controller to use to join the domain.
4851#>
4952function Get-TargetResource
5053{
@@ -80,7 +83,11 @@ function Get-TargetResource
8083
8184 [Parameter ()]
8285 [System.String ]
83- $Description
86+ $Description ,
87+
88+ [Parameter ()]
89+ [System.String ]
90+ $Server
8491 )
8592
8693 Write-Verbose - Message ($script :localizedData.GettingComputerStateMessage -f $Name )
@@ -112,6 +119,7 @@ function Get-TargetResource
112119 UnjoinCredential = [ciminstance ] $convertToCimUnjoinCredential
113120 WorkGroupName = (Get-CimInstance - Class ' Win32_ComputerSystem' ).Workgroup
114121 Description = (Get-CimInstance - Class ' Win32_OperatingSystem' ).Description
122+ Server = Get-LogonServer
115123 }
116124
117125 return $returnValue
@@ -142,6 +150,9 @@ function Get-TargetResource
142150
143151 . PARAMETER Description
144152 The value assigned here will be set as the local computer description.
153+
154+ . PARAMETER Server
155+ The Active Directory Domain Controller to use to join the domain.
145156#>
146157function Set-TargetResource
147158{
@@ -176,7 +187,11 @@ function Set-TargetResource
176187
177188 [Parameter ()]
178189 [System.String ]
179- $Description
190+ $Description ,
191+
192+ [Parameter ()]
193+ [System.String ]
194+ $Server
180195 )
181196
182197 Write-Verbose - Message ($script :localizedData.SettingComputerStateMessage -f $Name )
@@ -208,71 +223,42 @@ function Set-TargetResource
208223 }
209224 else
210225 {
226+ $addComputerParameters = @ {
227+ DomainName = $DomainName
228+ Credential = $Credential
229+ Force = $true
230+ }
231+ $rename = $false
211232 if ($Name -ne $env: COMPUTERNAME )
212233 {
213- # Rename the computer, and join it to the domain.
214- if ($UnjoinCredential )
215- {
216- Add-Computer `
217- - DomainName $DomainName `
218- - Credential $Credential `
219- - NewName $Name `
220- - UnjoinDomainCredential $UnjoinCredential `
221- - Force
222- }
223- else
224- {
225- if ($JoinOU )
226- {
227- Add-Computer `
228- - DomainName $DomainName `
229- - Credential $Credential `
230- - NewName $Name `
231- - OUPath $JoinOU `
232- - Force
233- }
234- else
235- {
236- Add-Computer `
237- - DomainName $DomainName `
238- - Credential $Credential `
239- - NewName $Name `
240- - Force
241- }
242- }
234+ $addComputerParameters.Add (" NewName" , $Name )
235+ $rename = $true
236+ }
237+
238+ if ($UnjoinCredential )
239+ {
240+ $addComputerParameters.Add (" UnjoinDomainCredential" , $UnjoinCredential )
241+ }
242+
243+ if ($JoinOU )
244+ {
245+ $addComputerParameters.Add (" OUPath" , $JoinOU )
246+ }
247+
248+ if ($Server )
249+ {
250+ $addComputerParameters.Add (" Server" , $Server )
251+ }
252+
253+ # Rename the computer, and join it to the domain.
254+ Add-Computer @addComputerParameters
243255
256+ if ($rename )
257+ {
244258 Write-Verbose - Message ($script :localizedData.RenamedComputerAndJoinedDomainMessage -f $Name , $DomainName )
245259 }
246260 else
247261 {
248- # Same computer name, and join it to the domain.
249- if ($UnjoinCredential )
250- {
251- Add-Computer `
252- - DomainName $DomainName `
253- - Credential $Credential `
254- - UnjoinDomainCredential $UnjoinCredential `
255- - Force
256- }
257- else
258- {
259- if ($JoinOU )
260- {
261- Add-Computer `
262- - DomainName $DomainName `
263- - Credential $Credential `
264- - OUPath $JoinOU `
265- - Force
266- }
267- else
268- {
269- Add-Computer `
270- - DomainName $DomainName `
271- - Credential $Credential `
272- - Force
273- }
274- }
275-
276262 Write-Verbose - Message ($script :localizedData.JoinedDomainMessage -f $DomainName )
277263 }
278264 }
@@ -449,7 +435,11 @@ function Test-TargetResource
449435
450436 [Parameter ()]
451437 [System.String ]
452- $Description
438+ $Description ,
439+
440+ [Parameter ()]
441+ [System.String ]
442+ $Server
453443 )
454444
455445 Write-Verbose - Message ($script :localizedData.TestingComputerStateMessage -f $Name )
@@ -621,4 +611,18 @@ function Get-ComputerOU
621611 return $ou
622612}
623613
614+ <#
615+ . SYNOPSIS
616+ Returns the logon server.
617+ #>
618+ function Get-LogonServer
619+ {
620+ [CmdletBinding ()]
621+ [OutputType ([System.String ])]
622+ param ()
623+
624+ $logonserver = $env: LOGONSERVER -replace " \\" , " "
625+ return $logonserver
626+ }
627+
624628Export-ModuleMember - Function *- TargetResource
0 commit comments