DSCResources/MSFT_xSPCreateFarm/MSFT_xSPCreateFarm.schema.mof

/*
**Description**
 
This resource is used to provision a new SharePoint farm.
It should only be used on the first server in the farm to create the configuration database, all servers to join the farm after the first server creates the configuration database should use [xSPJoinFarm](xSPJoinFarm).
Once the config DB has been created, the resource will install local help collections, secure resources, activate features and provision the central admin site.
 
The port of the Central Admin website can be set by using the CentralAdministrationPort property, if this is not defined the site will be provisioned on port 9999.
However this setting will not impact existing deployments that already have Central Admin provisioned on another port.
Also when a farm is created, the current behavior is to not enroll the server as a cache server (which is the default behavior of SharePoint).
This means you need to use [xSPDistributedCacheService](xSPDistributedCacheService) on at least one server in the farm to designate it as a cache server.
 
**Example**
 
    xSPCreateFarm CreateSPFarm
    {
        DatabaseServer = "SQL.contoso.local\SQLINSTANCE"
        FarmConfigDatabaseName = "SP_Config"
        Passphrase = "Example Passphrase"
        FarmAccount = $FarmAccount
        PsDscRunAsCredential = $SetupAccount
        AdminContentDatabaseName = "SP_AdminContent"
        CentralAdministrationPort = 2000
        ServerRole = Custom
    }
*/
 
[ClassVersion("1.0.0.0"), FriendlyName("xSPCreateFarm")]
class MSFT_xSPCreateFarm : OMI_BaseResource
{
    [Key, Description("Name of the configuration database")] String FarmConfigDatabaseName;
    [Key, Description("Server that will host the configuration and admin content databases")] String DatabaseServer;
    [Required, Description("The account to use as the main farm account"), EmbeddedInstance("MSFT_Credential")] String FarmAccount;
    [Required, Description("The passphrase to use to allow servers to join this farm")] String Passphrase;
    [Required, Description("The name of the admin content database")] String AdminContentDatabaseName;
    [Write, Description("What port will Central Admin be provisioned to - default is 9999")] uint32 CentralAdministrationPort;
    [Write, Description("SharePoint 2016 only - the MinRole role to enroll this server as"), ValueMap{"Application","Custom","DistributedCache","Search","SingleServer","SingleServerFarm","SpecialLoad","WebFrontEnd"}, Values{"Application","Custom","DistributedCache","Search","SingleServer","SingleServerFarm","SpecialLoad","WebFrontEnd"}] string ServerRole;
    [Write, Description("POWERSHELL 4 ONLY: The account to run this resource as, use PsDscRunAsAccount if using PowerShell 5"), EmbeddedInstance("MSFT_Credential")] String InstallAccount;
};