如何在远程运行空间中使用powershell来管理Exchange

时间:2014-04-09 15:39:36

标签: c# powershell office365 powershell-remoting

我的老板要求我建立一个网络界面,允许某人重置Exchange Online中的电子邮箱密码 我找到的所有信息(角色,邮件,重置密码等)的唯一方法是通过PowerShell。所以我尝试在ASP.Net中运行powershell。简单的批处理很简单但是当我尝试在Exchange连接时,都失败了。

WSManConnectionInfo connectionInfo = new WSManConnectionInfo(new Uri("https://ps.outlook.com/powershell"), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", Credential);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;
connectionInfo.MaximumConnectionRedirectionCount = 2;
connectionInfo.ProxyAccessType = System.Management.Automation.Remoting.ProxyAccessType.IEConfig;
connectionInfo.ProxyAuthentication = AuthenticationMechanism.Digest;
connectionInfo.ProxyCredential = ProxyCredential;
runspace = RunspaceFactory.CreateRunspace(connectionInfo);
runspace.Open();

凭据就像新的PSCredential(&#34; admin@company.onmicrosoft.com" ;, Securite.convertToSecureString(&#34;密码&#34;))和ProxyCredential就像< em> new PSCredential(&#34; userAccount&#34;,Securite.convertToSecureString(&#34;密码&#34;))因为它是一个LDAP帐户,我不知道是否域已设置。

runspace.open()使用此消息抛出System.Management.Automation.Remoting.PSRemotingTransportException

La connexion au serveur distant a échoué avec le message d'erreur suivant : Accès refusé. Pour plus d'informations, voir la rubrique d'aide about_Remote_Troubleshooting.

将由

翻译
remote server connexion has failed with this error message : Access Denied. For more informations, go to about_Remote_Troubleshooting.  

但是&#34; about_Remote_Troubleshooting&#34; ?

所以,我的问题是我做错了什么?我该怎么做才能解决它?

感谢您的关注,对不起我的英语,并提前感谢您的答案; o)


编辑:
我尝试重写我的代码以使用PSSession

powershell = PowerShell.Create();
powershell.AddCommand("Set-Variable");
powershell.AddParameter("Name", "cred");
powershell.AddParameter("Value", Credential);
powershell.AddCommand("Set-ExecutionPolicy").AddParameter("ExecutionPolicy", "RemoteSigned");
powershell.AddCommand("Enable-PSRemoting").AddParameter("Force");
powershell.AddScript("$proxysettings = New-PSSessionOption -ProxyAccessType IEConfig");
powershell.AddScript("$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'https://ps.outlook.com/powershell/' -Credential $cred -Authentication Basic -AllowRedirection -SessionOption $proxysettings");
powershell.AddScript("Import-PSSession $session");
powershell.AddScript("Get-RoleGroup | Where-Object {$_.Members -EQ 'w.user'} | Select -Property Name  | Format-List | out-string");
Collection<PSObject> results = powershell.Invoke();
if (powershell.Streams.Error.Count > 0)
{
    String error = String.Empty;
    foreach (ErrorRecord _error in powershell.Streams.Error)
    {
        error += _error.Exception.Message + "\r\n";
    }
    throw new Exception(error);
}

它很难看,但在清理它之前我尝试使用一个正常工作的代码。 我检索此错误消息

La connexion au serveur distant a échoué avec le message d'erreur suivant : Accès refusé. Pour plus d'informations, voir la rubrique d'aide about_Remote_Troubleshooting.
Impossible de valider l'argument sur le paramètre « Session ». L'argument est null. Indiquez un argument non-null et réessayez.
Le terme « Get-RoleGroup » n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès est correct et réessayez.

翻译:

Access denied : read about_Remote_Troubleshooting.
Invalid parameter "Session". Parameter is null.
"Get-RoleGroup" is not a cmdlet, function, script or executable. Check the orthographe...

我被诅咒/ o \

0 个答案:

没有答案