Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Build status


The xWordPress module contains the xWordPressSite and xIisWordPressSite DSC resources that setup a WordPress Site.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact with any additional questions or comments.


Please check out common DSC Resources contributing guidelines.


  • xIisWordPressSite is a composite configuration that configures an IIS site with WordPress.
  • xWordPressSite configures a WordPress Site.


  • DestinationPath: The path on the filesystem were the web site will be setup.
  • DownloadUri: The URI to download the WordPress Zip file
  • PackageFolder: The URI to download the WordPress Zip file computer name
  • PackageFolder: The folder where the WordPress zip will be downloaded. This path MUST already exist.
  • Configuration: The contents of the WordPress configuration file (wp-config.php).


  • Uri: The WordPress Site URI.
  • Title: The WordPress Site Default page title.
  • AdministratorCredential: The user name and password of the WordPress administrator to create when creating the site.
  • AdministratorEmail: The email address of the WordPress administrator to create.
  • Ensure: { Present }



  • Updated sample to reference the renamed xPhpProvision resource in the xPhp module and version 5.7.15 of MySQL.
  • Update appveyor.yml to use the default template.
  • Added default template files .codecov.yml, .gitattributes, and .gitignore, and .vscode folder.
  • Minor style changes to
  • Added Import-DscResource to xIisWordPressSite to import dependent modules.

  • Updated schema (ValueMap)
  • Fixed encoding

  • Initial release with the following resources
    • xWordPressSite
    • xIisWordPressSite


Setup a WordPress Site on a single node

This configuration will set a WordPress Site on a single node. Note: This requires the following DSC modules:

  • xPsDesiredStateConfiguration
  • xMySql
  • xPhp
  • xWebAdministration
# This configuration configures a Basic WordPress Site
# It requires xPhp, xMySql, xWordPress, and xWebAdministration
# Please review the note about the FQDN variable and
# about the URLs, they may need to be updated.
# ********* NOTE ***********
# If you are not targeting the local machine,
# or this does not resolve to the correct FQDN for the machine
# Update this to the FQDN of the target machine
# **************************
[string] $fqdn = [System.Net.Dns]::GetHostByName(($env:computerName)).HostName
Write-Host "Target Machine FQDN: $fqdn"
[string] $role = 'WordPress'
$dataRoot = Split-Path $MyInvocation.MyCommand.Path
$phpTemplatePath = join-Path $dataRoot "phpConfigTemplate.txt"
$WordPressTemplatePath = Join-Path $dataRoot "WordPressConfigurationTemplate.ps1"
if (-not (Test-Path $WordPressTemplatePath))
    $message = "Missing required file $WordPressTemplatePath"
    # This file is in the samples folder of the resource
    throw $message
$plainPassword = 'pass@word1'
$pwd = convertTo-SecureString -String $plainPassword -AsPlainText -Force
$WordPressUserName = 'WordPressUser'
$WordPressDatabase = 'WordPress'
# Generate the contents of the WordPress configuration
$wordPressConfig = & $WordPressTemplatePath -WordPressDatabase $WordPressDatabase -WordPressUserName $WordPressUserName -PlainPassword $plainPassword
# ********* NOTE ***********
# PHP and My SQL change their download URLs frequently.  Please verify the URLs.
# the WordPress and VC Redist URL change less frequently, but should still be verified.
# After verifying the download URLs for the products and update them appropriately.
# **************************
$configurationData = @{
    AllNodes = @(
            Role = $role
            NodeName = $fqdn
            PSDscAllowPlainTextPassword = $true;
            WordPress = @{
                Title = 'DSC WordPress Site Title'
                Admin = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist ('DscAdmin', $pwd)
                Email = ''
                Uri = "http://$fqdn"
                DownloadURI = ''
                Path = (Join-Path $env:SystemDrive  'wwwWordPress')
                Config = $wordPressConfig
                SiteName = 'WordPress'
                TemplatePath = $WordPressTemplatePath
                UserName = $WordPressUserName
                Database = $WordPressDatabase
                User = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist ($WordPressUserName, $pwd)

            Php = @{
                # Update with the latest "VC11 x64 Non Thread Safe" from
                DownloadURI = ''
                TemplatePath = $phpTemplatePath
                Path = "$env:SystemDrive\php"
                Vc2012RedistUri = ''
            PackageFolder = "$env:SystemDrive\packages"
            MySqlDownloadURI = ''
            Credential = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist ('userNameNotUsed', $pwd) #the password for root. no user name is needed as MySql installer is using only the user "root".
            PlainPassword = $plainPassword

# Configuration to configure a Single machine WordPress Site
Configuration WordPress
    # Import composite resources
    Import-DscResource -module xMySql
    Import-DscResource -module xPhp
    Import-DscResource -module xWordPress
    Node $AllNodes.NodeName
        # Make sure we have a folder for the packages
        File PackagesFolder
            DestinationPath = $Node.PackageFolder
            Type = 'Directory'
            Ensure = 'Present'
        # Make sure PHP is installed in IIS
        xPhpProvision php
            InstallMySqlExt = $true
            PackageFolder =  $Node.PackageFolder
            DownloadUri = $Node.Php.DownloadURI
            DestinationPath = $Node.Php.Path
            ConfigurationPath = $Node.Php.TemplatePath
            Vc2012RedistDownloadUri = $Node.Php.Vc2012RedistUri
        # Make sure MySql is installed with a WordPress database
        xMySqlProvision mySql
            DownloadURI = $Node.MySqlDownloadURI
            MySQLVersion = '5.7.15'
            RootCredential = $Node.Credential
            DatabaseName = 'WordPress'
            UserCredential =  $Node.WordPress.User
            PermissionType = 'ALL PRIVILEGES'

        # Make sure the IIS site for WordPress is created
        # Note, you still need to create the actuall WordPress Site after this.
        xIisWordPressSite iisWordPressSite
            DestinationPath = $Node.WordPress.Path
            DownloadUri = $Node.WordPress.DownloadURI
            PackageFolder = $Node.PackageFolder
            Configuration = $Node.WordPress.Config
        # Make sure the WordPress site is present
        xWordPressSite WordPressSite
            Uri = $Node.WordPress.Uri
            Title = $Node.WordPress.Title
            AdministratorCredential = $Node.WordPress.Admin
            AdministratorEmail = $Node.WordPress.Email
        # Make sure LCM will reboot if needed
            RebootNodeIfNeeded = $true
            # uncomment when debugging on WMF 5 and above.
            # DebugMode = $true
$outputFolder = "$env:USERPROFILE\Desktop\WordPress"
Wordpress -OutputPath $outputFolder -ConfigurationData $configurationData
Set-DscLocalConfigurationManager -path $outputFolder -verbose
Start-DscConfiguration -Wait -Verbose -path $outputFolder


No description, website, or topics provided.







No packages published