Invalid cast from Boolean

Welcome Forums DSC (Desired State Configuration) Invalid cast from Boolean

This topic contains 3 replies, has 2 voices, and was last updated by

 
Participant
1 year, 8 months ago.

  • Author
    Posts
  • #65914

    Participant
    Points: 0
    Rank: Member

    Hello

    When running the code below im getting this error, any idea whats wrong in the config?

    PSDesiredStateConfiguration\Configuration : Cannot convert value "False" to type
    "System.Management.Automation.ScriptBlock". Error: "Invalid cast from 'System.Boolean' to
    'System.Management.Automation.ScriptBlock'."
    At H:\PowerShell\WorkingArea\DSC\webApp\webApp.ps1:1 char:1
    + Configuration WebApp
    + ~~~~~~~~~~~~~~~~~~~~

    Configuration WebApp
    {
        
        # Import the module that defines custom resources
        Import-DscResource -ModuleName PSDesiredStateConfiguration
        Import-DscResource -ModuleName xWebAdministration
        Import-DscResource -ModuleName xNetworking
        Import-DscResource -ModuleName xSQLServer
    
    
        Node $AllNodes.Where($_.Role -contains "sqlServer").nodename
        {
        # Install a prerequisite Windows feature
            WindowsFeature "NET"
            {
                Ensure  = "Present"
                Name    = "NET-Framework-Core"
                Source  = $Node.winSource
            }
        
            xsqlServerSetup ($node.nodename)
            {
                DependsOn           = '[WindowsFeature]NET'
                SourcePath          = $Node.sqlSource
                SetupCredential     = $Node.InstallerServiceAccount
                InstanceName        = $Node.InstanceName
                Features            = $Node.Features
                SQLSysAdminAccounts = $Node.AdminAccount
                SQLSvcAccount       = $Node.InstallerServiceAccount
                InstallSharedDir    = $node.InstallSharedDir
                InstallSharedWOWDir = $Node.InstallSharedWOWDir
                InstanceDir         = $Node.InstanceDir
                InstallSQLDataDir   = $Node.InstallSQLDataDir
                SQLUserDBDir        = $Node.SQLUserDBDir
                SQLUserDBLogDir     = $Node.SQLUserDBLogDir
                SQLTempDBDir        = $Node.SQLTempDBDir
                SQLTempDBLogDir     = $Node.SQLTempDBLogDir
                SQLBackupDir        = $Node.SQLBackupDir
            }
    
            ## Add firewall exceptions for SQL Server but run SQL server setup first.
            xSqlServerFirewall ($Node.NodeName)
            {
                DependsOn           = ("[xSqlServerSetup]" + $Node.NodeName)
                SourcePath          = $Node.sqlSource
                InstanceName        = $Node.InstanceName
                Features            = $Node.Features
            }
            xSQLServerMemory ($Node.Nodename)
             {
                 Ensure             = "Present"
                 SQLInstanceName    = $Node.InstanceName
                 DynamicAlloc       = $True
                 DependsOn          = ("[xSqlServerSetup]" + $Node.NodeName)
             }
             xSQLServerMaxDop($Node.Nodename)
             {
                 Ensure             = "Present"
                 SQLInstanceName    = $Node.InstanceName
                 DynamicAlloc       = $true
                 DependsOn          = ("[xSqlServerSetup]" + $Node.NodeName)     
             }
            
        }
    
        Node $AllNodes.where($_.Role -contains "WebServer").NodeName
        { 
            # Install the IIS role
            WindowsFeature IIS
            {
                Ensure          = "Present"
                Name            = "Web-Server"
            }
    
            # Install the ASP .NET 4.5 role
            WindowsFeature AspNet45
            {
                Ensure          = "Present"
                Name            = "Web-Asp-Net45"
            }
    
            # Stop the default website
            xWebsite DefaultSite
            {
                Ensure          = "Present"
                Name            = "Default Web Site"
                State           = "Stopped"
                PhysicalPath    = "C:\inetpub\wwwroot"
                DependsOn       = "[WindowsFeature]IIS"
            }
    
            # Copy the website content
            File WebContent
            {
                Ensure          = "Present"
                SourcePath =    = $node.siteSource
                DestinationPath = $node.siteDestination
                Recurse         = $true
                Type            = "Directory"
                DependsOn       = "[WindowsFeature]AspNet45"
            }
    
            # Create the new Website with HTTP
            xWebsite NewWebsite
            {
                Ensure          = "Present"
                Name            = $Node.WebSiteName
                State           = "Started"
                PhysicalPath    = $node.siteDestination
                BindingInfo     = @(
                    MSFT_xWebBindingInformation
                    {
                        Protocol    = $Node.protocol
                        Port        = $Node.port
                    }
                )
                DependsOn       = "[File]WebContent"
            }
    
            # Edit the hosts file
            xHostsFile hostsFile
            {
                Hostname = $Node.HostFileEntry
                IPAddress = $Node.HostFileIP
            }
        }    
    
    }
    
    WebApp -ConfigurationData .\webApp.psd1 -verbose
    @{
        AllNodes = @(
    
            @{
                NodeName  = '*'
                winSource = '\\dscserver\Data\2012R2\sources\sxs'
                sqlSource = '\\dscserver\Data\SQL2014'
    
            },
    
            @{
                NodeName                    = 'DSCSQL'
                Role                        = 'sqlServer'
                InstanceName                = 'MSSQL'
                PSDscAllowPlainTextPassword = $true
                PSDscAllowDomainUser        = $true
                AdminAccount                = "domain\user"
                InstallSharedDir            = "C:\Program Files\Microsoft SQL Server"
                InstallSharedWOWDir         = "C:\Program Files (x86)\Microsoft SQL Server"
                InstanceDir                 = "C:\Program Files\Microsoft SQL Server"
                InstallSQLDataDir           = "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data"
                SQLUserDBDir                = "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data"
                SQLUserDBLogDir             = "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data"
                SQLTempDBDir                = "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data"
                SQLTempDBLogDir             = "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data"
                SQLBackupDir                = "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data"
            },
    
            @{
                NodeName        = 'DSCWEB'
                Role            = 'WebServer'
                WebsiteName     = 'mytestsite'
                SiteSource      = '\\dscserver\Data\mytestsite'
                SiteDestination = 'C:\inetpub\wwwroot\'
                HostFileEntry   = 'mytestsite.net'
                HostFileIP      = '127.0.0.1'
                Protocol        = 'HTTP'
                Port            = '8089'
    
            }
        );
    }
  • #66130

    Participant
    Points: 53
    Team Member
    Rank: Member

    The problem is in the Node statements. If you use Intellisense to autocomplete things, it will add the parentheses for you but not the curly braces.

    Node $AllNodes.Where($_.Role -contains "sqlServer").nodename

    should be
    Node $AllNodes.Where({$_.Role -contains "sqlServer"}).nodename

    • #66139

      Participant
      Points: 53
      Team Member
      Rank: Member

      Also – certain things that bite me once (like this one) I tend to remember the pain – and the fix – but if you have trouble remembering the syntax, remember that it's the same syntax as a "where-object", i.e. get-something | where-object {$_.name -like "Something*"}

    • #66411

      Participant
      Points: 0
      Rank: Member

      Thanks for the help, much appreciated!

The topic ‘Invalid cast from Boolean’ is closed to new replies.