Trouble with two Search Applications

May 10, 2012 at 12:22 PM

the installer aborts when it hits the Enterprise Search portion of the script when I have two Enterprise Search Applications with the following entry in the log:

Provisioning Enterprise Search...

--------------------------------------------------------------

- Script aborted!

Exception : System.Management.Automation.ParameterBindingValidationException: Cannot bind argument to parameter 'String' because it is null.

at System.Management.Automation.ParameterBinderBase.ValidateNullOrEmptyArgument(CommandParameterInternal parameter, CompiledCommandParameter parameterMetadata, Type argumentType, Object parameterValue, Boolean recurse IntoCollections)at System.Management.Automation.ParameterBinderBase.BindParameter(CommandParameterInternal parameter, CompiledCommandParameter parameterMetadata, ParameterBindingFlags flags)at System.Management.Automation.CmdletParameterBinderController.BindParameter(CommandParameterInternal argument, MergedCompiledCommandParameter parameter, ParameterBindingFlags flags)at System.Management.Automation.CmdletParameterBinderController.BindParameter(UInt32 parameterSets, CommandParameterInternal argument, MergedCompiledCommandParameter parameter, ParameterBindingFlags flags)at System.Management.Automation.CmdletParameterBinderController.BindParameters(UInt32 parameterSets, Collection`1 arguments, CommandMetadata commandMetadata)at System.Management.Automation.CmdletParameterBinderController.BindCommandLineParametersNoValidation(Collection`1 arguments)at System.Management.Automation.CmdletParameterBinderController.BindCommandLineParameters(Collection`1 arguments)at System.Management.Automation.CommandProcessor.BindCommandLineParameters(CommandParameterInternal[] parameters)at System.Management.Automation.CommandProcessor.Prepare(CommandParameterInternal[] parameters)at System.Management.Automation.CommandProcessorBase.DoPrepare(CommandParameterInternal[] parameters)at System.Management.Automation.Internal.PipelineProcessor.Start(Boolean incomingStream)at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate)TargetObject:

CategoryInfo : InvalidData: (:) [ConvertTo-SecureString], ParameterBindingValidationException

FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ConvertToSecureStringCommandErrorDetails :

InvocationInfo : System.Management.Automation.InvocationInfo

PipelineIterationInfo : {}

PSMessageDetails :

The input file section follows:

<EnterpriseSearchService Provision="true" ContactEmail="email@domain.com" ConnectionTimeout="60" AcknowledgementTimeout="60" ProxyType="Default" IgnoreSSLWarnings="false" InternetIdentity="Mozilla/4.0 (compatible; MSIE 4.01; Windows NT; MS Search 6.0 Robot)" IndexLocation="D:\Indexes" PerformanceLevel="PartlyReduced" Account="domain\SO-SP-SEARCHSERVICE" Password="P@ssword" ShareName="SearchIndex">
      <EnterpriseSearchServiceApplications>
        <EnterpriseSearchServiceApplication Name="Intranet SSA" DatabaseServer="SPSSQL" DatabaseName="Intranet_SSA_DB" FailoverDatabaseServer="" Partitioned="false" Partitions="1" SearchServiceApplicationType="Regular" ContentAccessAccount="domain\SO-SP-SPCRAWLER" ContentAccessAccountPassword="P@ssword">
          <ApplicationPool Name="SharedSearch" Account="domain\so-sp-searchservice" Password="P@ssword" />
          <CrawlServers>
            <Server Name="app1" />
          </CrawlServers>
          <QueryServers>
            <Server Name="app1" />
          </QueryServers>
          <!-- You should specify all the servers you listed in QueryServers in the SearchQueryAndSiteSettingsServers node below as well -->
          <SearchQueryAndSiteSettingsServers>
            <Server Name="app1" />
          </SearchQueryAndSiteSettingsServers>
          <!-- You can only run the AdminComponent on one server per Search Service App, so only list one server here -->
          <AdminComponent>
            <Server Name="app1" />
            <ApplicationPool Name="SharedSearch" />
          </AdminComponent>
          <Proxy Name="Intranet SSA" Partitioned="false">
            <ProxyGroup Name="Default" />
          </Proxy>
        </EnterpriseSearchServiceApplication>
        <EnterpriseSearchServiceApplication Name="Public SSA" DatabaseServer="SPSSQL" DatabaseName="Public_SSA_DB" FailoverDatabaseServer="" Partitioned="false" Partitions="1" SearchServiceApplicationType="Regular" ContentAccessAccount="domain\SO-SP-SPCRAWLER" ContentAccessAccountPassword="P@ssword">
          <ApplicationPool Name="SharedSearch" Account="domain\so-sp-searchservice" Password="P@ssword" />
          <CrawlServers>
            <Server Name="app1" />
          </CrawlServers>
          <QueryServers>
            <Server Name="app1" />
          </QueryServers>
          <!-- You should specify all the servers you listed in QueryServers in the SearchQueryAndSiteSettingsServers node below as well -->
          <SearchQueryAndSiteSettingsServers>
            <Server Name="app1" />
          </SearchQueryAndSiteSettingsServers>
          <!-- You can only run the AdminComponent on one server per Search Service App, so only list one server here -->
          <AdminComponent>
            <Server Name="app1" />
            <ApplicationPool Name="SharedSearch" />
          </AdminComponent>
          <Proxy Name="Public SSA" Partitioned="false">
            <ProxyGroup Name="Public" />
          </Proxy>
        </EnterpriseSearchServiceApplication>
      </EnterpriseSearchServiceApplications>
    </EnterpriseSearchService>

I have gotten it to complete and create the SSA if I remove the first one and only create the second.

I have copied the second and added as the first with modified names, but that aborts.

I am using "<Configuration Environment="Dev" Version="3.0">"

Everything else works very smoothly.

May 10, 2012 at 12:33 PM

With furthur testing, it will create either of the SSAs, but not two.

May 11, 2012 at 5:43 AM

Hi,

the error InvalidData: (:) [ConvertTo-SecureString] somehow indicates that a password is missing when the script runs. Can you debug the script and say at which line this happens?

Stefan