Skip to content

Commit

Permalink
Changes to ADDomainController
Browse files Browse the repository at this point in the history
- BREAKING CHANGE: Renamed the parameter `DomainAdministratorCredential`
  to `Credential` to better indicate that it is possible to impersonate
  any credential with enough permission to perform the task (issue dsccommunity#269).
  • Loading branch information
johlju committed Jul 29, 2019
1 parent c440190 commit 7b5b0a3
Show file tree
Hide file tree
Showing 14 changed files with 112 additions and 69 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@
- Changes to WaitForADDomain
- Added comment-based help ([issue #341](https://github.com/PowerShell/ActiveDirectoryDsc/issues/341))
- Changes to ADDomainController
- BREAKING CHANGE: Renamed the parameter `DomainAdministratorCredential`
to `Credential` to better indicate that it is possible to impersonate
any credential with enough permission to perform the task ([issue #269](https://github.com/PowerShell/ActiveDirectoryDsc/issues/269)).
- Add support for creating Read-Only Domain Controller (RODC)
([issue #40](https://github.com/PowerShell/ActiveDirectoryDsc/issues/40)).
[Svilen @SSvilen](https://github.com/SSvilen)
Expand Down
18 changes: 9 additions & 9 deletions DSCResources/MSFT_ADComputer/en-US/about_ADComputer.help.txt
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ Configuration ADComputer_AddComputerAccount_Config
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$UserCredential
$Credential
)

Import-DscResource -ModuleName ActiveDirectoryDsc
Expand All @@ -117,15 +117,15 @@ Configuration ADComputer_AddComputerAccount_Config
{
ComputerName = 'SQL01'

PsDscRunAsCredential = $UserCredential
PsDscRunAsCredential = $Credential
}

ADComputer 'CreateEnabled_SQL02'
{
ComputerName = 'SQL02'
EnabledOnCreation = $true

PsDscRunAsCredential = $UserCredential
PsDscRunAsCredential = $Credential
}
}
}
Expand All @@ -142,7 +142,7 @@ Configuration ADComputer_AddComputerAccountDisabled_Config
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$UserCredential
$Credential
)

Import-DscResource -ModuleName ActiveDirectoryDsc
Expand All @@ -154,7 +154,7 @@ Configuration ADComputer_AddComputerAccountDisabled_Config
ComputerName = 'CLU_CNO01'
EnabledOnCreation = $false

PsDscRunAsCredential = $UserCredential
PsDscRunAsCredential = $Credential
}
}
}
Expand All @@ -172,7 +172,7 @@ Configuration ADComputer_AddComputerAccountSpecificPath_Config
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$UserCredential
$Credential
)

Import-DscResource -ModuleName ActiveDirectoryDsc
Expand All @@ -184,7 +184,7 @@ Configuration ADComputer_AddComputerAccountSpecificPath_Config
DomainController = 'DC01'
ComputerName = 'SQL01'
Path = 'OU=Servers,DC=contoso,DC=com'
Credential = $UserCredential
Credential = $Credential
}
}
}
Expand All @@ -203,7 +203,7 @@ Configuration ADComputer_AddComputerAccountAndCreateODJRequest_Config
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$UserCredential
$Credential
)

Import-DscResource -ModuleName ActiveDirectoryDsc
Expand All @@ -216,7 +216,7 @@ Configuration ADComputer_AddComputerAccountAndCreateODJRequest_Config
ComputerName = 'NANO-200'
Path = 'OU=Servers,DC=contoso,DC=com'
RequestFile = 'D:\ODJFiles\NANO-200.txt'
Credential = $UserCredential
Credential = $Credential
}
}
}
Expand Down
26 changes: 13 additions & 13 deletions DSCResources/MSFT_ADDomainController/MSFT_ADDomainController.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ $script:localizedData = Get-LocalizedData -ResourceName 'MSFT_ADDomainController
.PARAMETER DomainName
Provide the FQDN of the domain the Domain Controller is being added to.
.PARAMETER DomainAdministrationCredential
.PARAMETER Credential
Specifies the credential for the account used to install the domain controller.
This account must have permission to access the other domain controllers
in the domain to be able replicate domain information.
Expand Down Expand Up @@ -45,7 +45,7 @@ function Get-TargetResource

[Parameter(Mandatory = $true)]
[System.Management.Automation.PSCredential]
$DomainAdministratorCredential,
$Credential,

[Parameter(Mandatory = $true)]
[System.Management.Automation.PSCredential]
Expand All @@ -72,7 +72,7 @@ function Get-TargetResource

$getTargetResourceResult = @{
DomainName = $DomainName
DomainAdministratorCredential = $DomainAdministratorCredential
Credential = $Credential
SafemodeAdministratorPassword = $SafemodeAdministratorPassword
Ensure = $false
IsGlobalCatalog = $false
Expand All @@ -87,7 +87,7 @@ function Get-TargetResource

try
{
$domain = Get-ADDomain -Identity $DomainName -Credential $DomainAdministratorCredential
$domain = Get-ADDomain -Identity $DomainName -Credential $Credential
}
catch
{
Expand All @@ -99,7 +99,7 @@ function Get-TargetResource
$script:localizedData.DomainPresent -f $DomainName
)

$domainControllerObject = Get-DomainControllerObject -DomainName $DomainName -ComputerName $env:COMPUTERNAME -Credential $DomainAdministratorCredential
$domainControllerObject = Get-DomainControllerObject -DomainName $DomainName -ComputerName $env:COMPUTERNAME -Credential $Credential
if ($domainControllerObject)
{
Write-Verbose -Message (
Expand Down Expand Up @@ -143,7 +143,7 @@ function Get-TargetResource
.PARAMETER DomainName
Provide the FQDN of the domain the Domain Controller is being added to.
.PARAMETER DomainAdministrationCredential
.PARAMETER Credential
Specifies the credential for the account used to install the domain controller.
This account must have permission to access the other domain controllers
in the domain to be able replicate domain information.
Expand Down Expand Up @@ -203,7 +203,7 @@ function Set-TargetResource

[Parameter(Mandatory = $true)]
[System.Management.Automation.PSCredential]
$DomainAdministratorCredential,
$Credential,

[Parameter(Mandatory = $true)]
[System.Management.Automation.PSCredential]
Expand Down Expand Up @@ -264,7 +264,7 @@ function Set-TargetResource
$installADDSDomainControllerParameters = @{
DomainName = $DomainName
SafeModeAdministratorPassword = $SafemodeAdministratorPassword.Password
Credential = $DomainAdministratorCredential
Credential = $Credential
NoRebootOnCompletion = $true
Force = $true
}
Expand Down Expand Up @@ -339,7 +339,7 @@ function Set-TargetResource
$script:localizedData.IsDomainController -f $env:COMPUTERNAME, $DomainName
)

$domainControllerObject = Get-DomainControllerObject -DomainName $DomainName -ComputerName $env:COMPUTERNAME -Credential $DomainAdministratorCredential
$domainControllerObject = Get-DomainControllerObject -DomainName $DomainName -ComputerName $env:COMPUTERNAME -Credential $Credential

# Check if Node Global Catalog state is correct
if ($PSBoundParameters.ContainsKey('IsGlobalCatalog') -and $targetResource.IsGlobalCatalog -ne $IsGlobalCatalog)
Expand Down Expand Up @@ -371,7 +371,7 @@ function Set-TargetResource

# DC is not in correct site. Move it.
Write-Verbose -Message ($script:localizedData.MovingDomainController -f $targetResource.SiteName, $SiteName)
Move-ADDirectoryServer -Identity $env:COMPUTERNAME -Site $SiteName -Credential $DomainAdministratorCredential
Move-ADDirectoryServer -Identity $env:COMPUTERNAME -Site $SiteName -Credential $Credential
}

if ($PSBoundParameters.ContainsKey('AllowPasswordReplicationAccountName'))
Expand Down Expand Up @@ -478,7 +478,7 @@ function Set-TargetResource
.PARAMETER DomainName
Provide the FQDN of the domain the Domain Controller is being added to.
.PARAMETER DomainAdministrationCredential
.PARAMETER Credential
Specifies the credential for the account used to install the domain controller.
This account must have permission to access the other domain controllers
in the domain to be able replicate domain information.
Expand Down Expand Up @@ -528,7 +528,7 @@ function Test-TargetResource

[Parameter(Mandatory = $true)]
[System.Management.Automation.PSCredential]
$DomainAdministratorCredential,
$Credential,

[Parameter(Mandatory = $true)]
[System.Management.Automation.PSCredential]
Expand Down Expand Up @@ -585,7 +585,7 @@ function Test-TargetResource

if ($PSBoundParameters.ContainsKey('SiteName'))
{
if (-not (Test-ADReplicationSite -SiteName $SiteName -DomainName $DomainName -Credential $DomainAdministratorCredential))
if (-not (Test-ADReplicationSite -SiteName $SiteName -DomainName $DomainName -Credential $Credential))
{
$errorMessage = $script:localizedData.FailedToFindSite -f $SiteName, $DomainName
New-ObjectNotFoundException -Message $errorMessage
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
class MSFT_ADDomainController : OMI_BaseResource
{
[Key, Description("The fully qualified domain name (FQDN) of the domain the Domain Controller will be joining.")] String DomainName;
[Required, Description("The credentials (as a 'PSCredential' object) of a user that has Domain Administrator rights to add the Domain Controller to the domain."), EmbeddedInstance("MSFT_Credential")] String DomainAdministratorCredential;
[Required, Description("The credentials (as a 'PSCredential' object) of a user that has Domain Administrator rights to add the Domain Controller to the domain."), EmbeddedInstance("MSFT_Credential")] String Credential;
[Required, Description("The 'PSCredential' object containing the password to use for Directory Services Restore Mode (DSRM)."), EmbeddedInstance("MSFT_Credential")] String SafemodeAdministratorPassword;
[Write, Description("The path where the database will be stored.")] String DatabasePath;
[Write, Description("The path where the logs will be stored.")] String LogPath;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
Key - String
The fully qualified domain name (FQDN) of the domain the Domain Controller will be joining.

.PARAMETER DomainAdministratorCredential
.PARAMETER Credential
Required - String
The credentials (as a 'PSCredential' object) of a user that has Domain Administrator rights to add the Domain Controller to the domain.

Expand Down Expand Up @@ -82,7 +82,12 @@ Configuration ADDomainController_AddDomainControllerToDomainMinimal_Config
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$DomainAdministratorCredential
$Credential,

[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$SafeModePassword
)

Import-DscResource -ModuleName PSDscResources
Expand All @@ -107,7 +112,7 @@ Configuration ADDomainController_AddDomainControllerToDomainMinimal_Config
WaitForADDomain 'WaitForestAvailability'
{
DomainName = 'contoso.com'
DomainUserCredential = $DomainAdministratorCredential
DomainUserCredential = $Credential
RetryCount = 10
RetryIntervalSec = 120

Expand All @@ -117,8 +122,8 @@ Configuration ADDomainController_AddDomainControllerToDomainMinimal_Config
ADDomainController 'DomainControllerMinimal'
{
DomainName = 'contoso.com'
DomainAdministratorCredential = $DomainAdministratorCredential
SafemodeAdministratorPassword = $DomainAdministratorCredential
Credential = $Credential
SafeModeAdministratorPassword = $SafeModePassword

DependsOn = '[WaitForADDomain]WaitForestAvailability'
}
Expand All @@ -137,7 +142,12 @@ Configuration ADDomainController_AddDomainControllerToDomainAllProperties_Config
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$DomainAdministratorCredential
$Credential,

[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$SafeModePassword
)

Import-DscResource -ModuleName PSDscResources
Expand All @@ -162,7 +172,7 @@ Configuration ADDomainController_AddDomainControllerToDomainAllProperties_Config
WaitForADDomain 'WaitForestAvailability'
{
DomainName = 'contoso.com'
DomainUserCredential = $DomainAdministratorCredential
DomainUserCredential = $Credential
RetryCount = 10
RetryIntervalSec = 120

Expand All @@ -172,8 +182,8 @@ Configuration ADDomainController_AddDomainControllerToDomainAllProperties_Config
ADDomainController 'DomainControllerAllProperties'
{
DomainName = 'contoso.com'
DomainAdministratorCredential = $DomainAdministratorCredential
SafemodeAdministratorPassword = $DomainAdministratorCredential
Credential = $Credential
SafeModeAdministratorPassword = $SafeModePassword
DatabasePath = 'C:\Windows\NTDS'
LogPath = 'C:\Windows\Logs'
SysvolPath = 'C:\Windows\SYSVOL'
Expand All @@ -197,7 +207,12 @@ Configuration ADDomainController_AddDomainControllerToDomainUsingIFM_Config
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$DomainAdministratorCredential
$Credential,

[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$SafeModePassword
)

Import-DscResource -ModuleName PSDscResources
Expand All @@ -222,7 +237,7 @@ Configuration ADDomainController_AddDomainControllerToDomainUsingIFM_Config
WaitForADDomain 'WaitForestAvailability'
{
DomainName = 'contoso.com'
DomainUserCredential = $DomainAdministratorCredential
DomainUserCredential = $Credential
RetryCount = 10
RetryIntervalSec = 120

Expand All @@ -232,8 +247,8 @@ Configuration ADDomainController_AddDomainControllerToDomainUsingIFM_Config
ADDomainController 'DomainControllerWithIFM'
{
DomainName = 'contoso.com'
DomainAdministratorCredential = $DomainAdministratorCredential
SafemodeAdministratorPassword = $DomainAdministratorCredential
Credential = $Credential
SafeModeAdministratorPassword = $SafeModePassword
InstallationMediaPath = 'F:\IFM'

DependsOn = '[WaitForADDomain]WaitForestAvailability'
Expand All @@ -253,7 +268,12 @@ Configuration ADDomainController_AddReadOnlyDomainController_Config
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$DomainAdministratorCredential
$Credential,

[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$SafeModePassword
)

Import-DscResource -ModuleName PSDscResources
Expand All @@ -278,7 +298,7 @@ Configuration ADDomainController_AddReadOnlyDomainController_Config
WaitForADDomain 'WaitForestAvailability'
{
DomainName = 'contoso.com'
DomainUserCredential = $DomainAdministratorCredential
DomainUserCredential = $Credential
RetryCount = 10
RetryIntervalSec = 120

Expand All @@ -288,8 +308,8 @@ Configuration ADDomainController_AddReadOnlyDomainController_Config
ADDomainController 'Read-OnlyDomainController(RODC)'
{
DomainName = 'contoso.com'
DomainAdministratorCredential = $DomainAdministratorCredential
SafemodeAdministratorPassword = $DomainAdministratorCredential
Credential = $Credential
SafeModeAdministratorPassword = $SafeModePassword
ReadOnlyReplica = $true
SiteName = 'Default-First-Site-Name'
AllowPasswordReplicationAccountName = @('pvdi.test1', 'pvdi.test')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Configuration ADComputer_AddComputerAccount_Config
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$UserCredential
$Credential
)

Import-DscResource -ModuleName ActiveDirectoryDsc
Expand All @@ -40,15 +40,15 @@ Configuration ADComputer_AddComputerAccount_Config
{
ComputerName = 'SQL01'

PsDscRunAsCredential = $UserCredential
PsDscRunAsCredential = $Credential
}

ADComputer 'CreateEnabled_SQL02'
{
ComputerName = 'SQL02'
EnabledOnCreation = $true

PsDscRunAsCredential = $UserCredential
PsDscRunAsCredential = $Credential
}
}
}

0 comments on commit 7b5b0a3

Please sign in to comment.