DSC/Configuration/xRemoteDesktopSessionHost/DSCResources/MSFT_xRDSessionDeployment/MSFT_xRDSessionDeployment.psm1 (114 lines of code) (raw):
if ([System.Environment]::OSVersion.Version -lt "6.2.9200.0") { Throw "The minimum OS requirement was not met."}
Import-Module RemoteDesktop
#######################################################################
# The Get-TargetResource cmdlet.
#######################################################################
function Get-TargetResource
{
[CmdletBinding()]
[OutputType([System.Collections.Hashtable])]
param
(
[parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string] $ConnectionBroker,
[string] $WebAccessServer,
[string[]] $SessionHosts
)
$result = $null
write-verbose "Getting list of RD Server roles from '$ConnectionBroker'..."
$servers = Get-RDServer -ConnectionBroker $ConnectionBroker -ea SilentlyContinue
if ($servers)
{
write-verbose "Found deployment consisting of $($servers.Count) servers:"
# write-verbose ( $servers | out-string )
$result =
@{
"ConnectionBroker" = ($servers | where Roles -contains "RDS-CONNECTION-BROKER").Server
"WebAccessServer" = ($servers | where Roles -contains "RDS-WEB-ACCESS").Server
"SessionHosts" = $servers | where Roles -contains "RDS-RD-SERVER" | % Server
}
write-verbose ">> RD Connection Broker: $($result.ConnectionBroker.ToLower())"
if ($result.WebAccessServer)
{
write-verbose ">> RD Web Access server: $($result.WebAccessServer.ToLower())"
}
write-verbose ">> RD Session Host servers: $($result.SessionHosts.ToLower() -join '; ')"
$licenseServers = $servers | where Roles -contains "RDS-LICENSING" | % Server
if ($licenseServers)
{
write-verbose ">> RD License servers : $($licenseServers.ToLower() -join '; ')"
}
}
else
{
write-verbose "Remote Desktop deployment does not exist on server '$ConnectionBroker' (or Remote Desktop Management Service is not running)."
}
$result
}
########################################################################
# The Set-TargetResource cmdlet.
########################################################################
function Set-TargetResource
{
[CmdletBinding()]
param
(
[parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string] $ConnectionBroker,
[string] $WebAccessServer,
[string[]] $SessionHosts
)
if (-not $SessionHosts) { $SessionHosts = @( $ConnectionBroker ) }
write-verbose "Initiating new RD Session-based deployment on '$ConnectionBroker'..."
write-verbose ">> RD Connection Broker: $($ConnectionBroker.ToLower())"
if ($WebAccessServer)
{
write-verbose ">> RD Web Access server: $($WebAccessServer.ToLower())"
}
else
{
$PSBoundParameters.Remove("WebAccessServer")
}
write-verbose ">> RD Session Host servers: $($SessionHosts.ToLower() -join '; ')"
write-verbose "calling New-RdSessionDeployment cmdlet..."
#{
$PSBoundParameters.Remove("SessionHosts");
New-RDSessionDeployment @PSBoundParameters -SessionHost $SessionHosts
#}
write-verbose "New-RdSessionDeployment done."
# write-verbose "RD Session deployment done, setting reboot flag..."
# $global:DSCMachineStatus = 1
}
#######################################################################
# The Test-TargetResource cmdlet.
#######################################################################
function Test-TargetResource
{
[CmdletBinding()]
[OutputType([System.Boolean])]
param
(
[parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string] $ConnectionBroker,
[string] $WebAccessServer,
[string[]] $SessionHosts
)
write-verbose "Checking whether Remote Desktop deployment exists on server '$ConnectionBroker'..."
$rddeployment = Get-TargetResource @PSBoundParameters
if ($rddeployment)
{
write-verbose "verifying RD Connection broker name..."
$result = ($rddeployment.ConnectionBroker -ieq $ConnectionBroker)
}
else
{
write-verbose "RD deployment not found."
$result = $false
}
write-verbose "Test-TargetResource returning: $result"
return $result
}
Export-ModuleMember -Function *-TargetResource