I am trying to execute a PowerShell script to enable mailboxes on a Exchange 2010. The actual email account creation application is a Java servlet running on a Tomcat server ancd the servlet does most of the work validating the request and populating various system with the account info, including ActiveDirectory. Cutting to the chase, I wrote a service that listens for requests (generated by the servlet) that contains two lines of data, the user name and the database. The error message returned is:
Cannot validate argument on parameter 'Session'. The argument is null. Supply a non-null argument and try the command again.
This is the code:
This is the PowerShell script that the Echange admin wrote for me:Code:private void run() { String inString; while (true) { TcpClient client = listener.AcceptTcpClient(); NetworkStream ns = client.GetStream(); StreamWriter writer = new StreamWriter(ns); StreamReader reader = new StreamReader(ns); Command myCommand = new Command(scriptFile); // create and open Powershell runspace Runspace runspace = RunspaceFactory.CreateRunspace(); runspace.Open(); // create a pipeline and feed it the script text Pipeline pipeline = runspace.CreatePipeline(); try { while (true) { inString = reader.ReadLine().Trim(); if (inString.Equals("eot", StringComparison.CurrentCultureIgnoreCase)) break; eventLog.WriteEntry(inString); String[] parms = inString.Split(':'); CommandParameter testParam = new CommandParameter(parms[0], parms[1]); myCommand.Parameters.Add(testParam); } } catch (Exception e) { eventLog.WriteEntry(e.Message); } pipeline.Commands.Add(myCommand); pipeline.Commands.Add("Out-String"); // execute the script Collection<PSObject> results = new Collection<PSObject>(); try { results = pipeline.Invoke(); } catch (Exception ex) { results.Add(new PSObject((object)ex.Message)); } // close the runspace runspace.Close(); // convert the script result into a single string StringBuilder stringBuilder = new StringBuilder(); foreach (PSObject obj in results) { stringBuilder.AppendLine(obj.ToString()); } writer.WriteLine(stringBuilder.ToString()); writer.Flush(); ns.Close(); client.Close(); } }
Code:param([string]$username,[string]$database) $sess = New-PSSession -Configurationname Microsoft.Exchange -ConnectionUri http://mail.wfo.linfield.edu/powershell Import-PSSession -session $sess enable-Mailbox -DomainController fenrir.catnet.wfo.linfield.edu -identity $username -database $database
Any ideas about what wrong?
Rob Tanner
Linfield College




Reply With Quote