Reputation: 2606
I tried the following code to get the mailbox from an exchange server.I am encountering issue while running the program
static void Main(string[] args)
{
string user = "Domain\\username";
SecureString passwd = new SecureString();
foreach (char c in "Password")
{
passwd.AppendChar(c);
}
PSCredential cred = new PSCredential(user, passwd);
WSManConnectionInfo ConnInfo = new WSManConnectionInfo(new Uri(liveIdconnectionUri), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", cred);
ConnInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos;
ConnInfo.MaximumConnectionRedirectionCount = 2;
//ConnInfo.ProxyAccessType = System.Management.Automation.Remoting.ProxyAccessType.AutoDetect;
Runspace ExchangeRunspace = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace(ConnInfo);
PowerShell powershell = PowerShell.Create();
PSCommand command = new PSCommand();
command.AddCommand("Get-Mailbox");
command.AddParameter("Identity", user);
powershell.Commands = command;
// open the remote runspace
ExchangeRunspace.Open();
// associate the runspace with powershell
powershell.Runspace = ExchangeRunspace;
// invoke the powershell to obtain the results
powershell.Invoke();
Collection<PSObject> results = powershell.Invoke();
foreach (PSObject obj in results)
{
PSMemberInfoCollection<PSPropertyInfo> propInfos = obj.Properties;
Console.WriteLine("********************");
foreach (PSPropertyInfo propInfo in propInfos)
{
string propInfoValue = (propInfo.Value == null) ? "" : propInfo.Value.ToString();
Console.WriteLine("{0} --> {1}", propInfo.Name, propInfoValue);
}
}
Console.ReadLine();
}
I get the following error while running the above code
Connecting to remote server failed with the following error message : WinRM cannot process the request. The following error occured while using Kerberos authentication: There are currently no logon servers available to service the logon request.
Possible causes are:
-The user name or password specified are invalid.
-Kerberos is used when no authentication method and no user name are specified.
-Kerberos accepts domain user names, but not local user names.
-The Service Principal Name (SPN) for the remote computer name and port does not exist.
-The client and remote computers are in different domains and there is no trust between the two domains.
After checking for the above issues, try the following:
-Check the Event Viewer for events related to authentication.
-Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
Note that computers in the TrustedHosts list might not be authenticated.
-For more information about WinRM configuration, run the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic."
Even when I run the command 'New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $liveIdconnectionUri -credential "[email protected]" -authentication kerberos', I get the same error.
Any pointer to solve this would be really helpful.Thanks in advance.
Upvotes: 1
Views: 1111
Reputation: 112
string username = "Hitesh";
string password = "Shrimali";
string sSAMAccount = "SAMAccountName"; //here Also you can use Your emailAddress
var lyncPW = GetSecurePassword(password);
PSCredential creds = new PSCredential(username, lyncPW);
Runspace m_RunSpace = RunspaceFactory.CreateRunspace();
PowerShell powershell = PowerShell.Create();
m_RunSpace.Open();
PSCommand CmdCredential = new PSCommand();
CmdCredential.AddCommand("Get-Credential");
CmdCredential.AddParameter("Credential", creds);
powershell.Commands = CmdCredential;
powershell.Runspace = m_RunSpace;
powershell.Invoke();
PSCommand command = new PSCommand();
command.AddCommand("New-PSSession");
command.AddParameter("ConfigurationName", "Microsoft.Exchange");
command.AddParameter("ConnectionUri", "YourURL/PowerShell/"); //Your Exchange URL
command.AddParameter("Credential", creds);
command.AddParameter("Authentication", "Default");
powershell.Commands = command;
powershell.Runspace = m_RunSpace;
powershell.Invoke();
PSSessionOption sessionOption = new PSSessionOption();
sessionOption.SkipCACheck = true;
sessionOption.SkipCNCheck = true;
sessionOption.SkipRevocationCheck = true;
command.AddParameter("SessionOption", sessionOption);
powershell.Commands = command;
powershell.Runspace = m_RunSpace;
Collection<PSSession> result = powershell.Invoke<PSSession>();
PSSession ps = result.FirstOrDefault();
RunspaceInvoke runSpaceInvoker = new RunspaceInvoke(m_RunSpace);
runSpaceInvoker.Invoke("Set-ExecutionPolicy Unrestricted -Scope CurrentUser");
PSCommand cmdImportSession = new PSCommand();
cmdImportSession.AddCommand("Import-PSSession");
cmdImportSession.AddParameter("Session", ps);
cmdImportSession.AddParameter("AllowClobber", true);
powershell.Commands = cmdImportSession;
powershell.Runspace = m_RunSpace;
powershell.Invoke();
PSCommand cmdNewMoveRequest = new PSCommand();
cmdNewMoveRequest.AddCommand("New-MoveRequest");
cmdNewMoveRequest.AddParameter("Identity", sSAMAccount);
cmdNewMoveRequest.AddParameter("TargetDatabase", "BoxerProperty Disabled Users Mailbox Database");
powershell.Commands = cmdNewMoveRequest;
powershell.Runspace = m_RunSpace;
powershell.Invoke();
foreach (ErrorRecord current in powershell.Streams.Error)
{
// log errors
}
m_RunSpace.Close();
Upvotes: 0
Reputation: 66
Without having access to the system it would be hard to give you an exact cause. Some things I would try:
* Ensure you have remoting set up correctly and that WSMAN exceptions are present in the firewall. Try running "winrm quickconfig".
* Ensure that you have setup the correct remote script execution policy for the server. See (Get/Set)-ExecutionPolicy
* Make sure the proper domain credentials are being passed and that it can be authenticated from the target computer to the domain ctrlr.
Upvotes: 0