DSCResources/MSFT_WorkflowManagerFarm/MSFT_WorkflowManagerFarm.psm1
Import-Module ServiceBus -ErrorAction SilentlyContinue Import-Module WorkflowManager -ErrorAction SilentlyContinue function Get-TargetResource { [CmdletBinding()] [OutputType([System.Collections.Hashtable])] param ( [parameter(Mandatory = $true)] [System.String] [ValidateSet("Present", "Absent")] $Ensure, [parameter(Mandatory = $true)] [System.String] $DatabaseServer, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $CertAutoGenerationKey, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $FarmAccount, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $RunAsPassword, [parameter(Mandatory = $false)] [System.Boolean] $EnableFirewallRules = $false, [parameter(Mandatory = $false)] [System.Boolean] $EnableHttpPort = $false, [parameter(Mandatory = $false)] [System.String] $SBNamespace = "ServiceBus" ) $result = @{} try { $WFFarm = Get-WFFarm $SBNamespace = Get-SBNamespace | Select-Object -First 1 $result = @{ Ensure = "Present" DatabaseServer = $WFFarm.WFFarmDBConnectionString CredAutoGenerationKey = $CertAutoGenerationKey FarmAccount = $FarmAccount RunAsPassword = $RunAsPassword EnableFirewallRules = $EnableFirewallRules EnableHttpPort = $EnableHttpPort SBNamespace = $SBNamespace.Name } } catch { $result = @{ Ensure = "Absent" DatabaseServer = $null CredAutoGenerationKey = $null FarmAccount = $null RunAsPassword = $null EnableFirewallRules = $null EnableHttpPort = $null SBNamespace = $null } } return $result } function Set-TargetResource { [CmdletBinding()] param ( [parameter(Mandatory = $true)] [System.String] [ValidateSet("Present", "Absent")] $Ensure, [parameter(Mandatory = $true)] [System.String] $DatabaseServer, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $CertAutoGenerationKey, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $FarmAccount, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $RunAsPassword, [parameter(Mandatory = $false)] [System.Boolean] $EnableFirewallRules = $false, [parameter(Mandatory = $false)] [System.Boolean] $EnableHttpPort = $false, [parameter(Mandatory = $false)] [System.String] $SBNamespace = "ServiceBus" ) if ($Ensure.ToLower() -eq "present") { $dbConnstring = "data source=" + $DatabaseServer + ";integrated security=true" New-SBFarm -SBFarmDBConnectionString $dbConnstring ` -CertificateAutoGenerationKey $CertAutoGenerationKey.Password Add-SBHost -SBFarmDBConnectionString $dbConnstring ` -RunAsPassword $RunAsPassword.Password ` -EnableFirewallRules $EnableFirewallRules ` -CertificateAutoGenerationKey $CertAutoGenerationKey.Password New-SBNamespace -Name $SBNamespace ` -ManageUsers $FarmAccount.UserName New-WFFarm -WFFarmDBConnectionString $dbConnstring ` -CertificateAutoGenerationKey $CertAutoGenerationKey.Password $SBConfig = Get-SBClientConfiguration -Namespaces $SBNamespace if ($EnableHttpPort) { Add-WFHost -WFFarmDBConnectionString $dbConnstring ` -RunAsPassword $RunasPassword.Password ` -EnableFirewallRules $EnableFirewallRules ` -CertificateAutoGenerationKey $CertAutoGenerationKey.Password ` -SBClientConfiguration $SBConfig ` -EnableHttpPort } else { Add-WFHost -WFFarmDBConnectionString $dbConnstring ` -RunAsPassword $RunasPassword.Password ` -EnableFirewallRules $EnableFirewallRules ` -CertificateAutoGenerationKey $CertAutoGenerationKey.Password ` -SBClientConfiguration $SBConfig } } else { Write-Verbose -Message "Removing the current server from the Workflow Farm" Remove-SBHost Remove-WFHost } } function Test-TargetResource { [CmdletBinding()] [OutputType([System.Boolean])] param ( [parameter(Mandatory = $true)] [System.String] [ValidateSet("Present", "Absent")] $Ensure, [parameter(Mandatory = $true)] [System.String] $DatabaseServer, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $CertAutoGenerationKey, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $FarmAccount, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $RunAsPassword, [parameter(Mandatory = $false)] [System.Boolean] $EnableFirewallRules = $false, [parameter(Mandatory = $false)] [System.Boolean] $EnableHttpPort = $false, [parameter(Mandatory = $false)] [System.String] $SBNamespace = "ServiceBus" ) Write-Verbose -Message "Testing for presence of the Workflow Manager farm" $result = Get-TargetResource @PSBoundParameters return ($result.Ensure -eq $Ensure) } Export-ModuleMember -Function *-TargetResource |