您的位置:首页 > 编程语言 > C#

C# 启用Lync用户

2011-11-18 16:34 260 查看
PowerShell ps;
ps = PowerShell.Create();
ps.AddScript("Set-ExecutionPolicy Unrestricted");
ps.Invoke();
ps.AddScript(@"import-module Lync");
ps.Invoke();
ps.AddScript("Enable-CsUser  -Identity {0}@domain.com -RegistrarPool lyncpool.domain.com -SipAddressType UserPrincipalName");
ps.Commands.AddCommand("Out-String");
Collection<PSObject> results = ps.Invoke();;

foreach (PSObject obj in results)
{
stringBuilder.Append(obj.ToString());
}

foreach (ErrorRecord error in ps.Streams.Error)
{
stringBuilder.Append(error.ToString());
}



通过C#执行powershell命令,需要导入System.Management.Automation.dll。该组件在powershell的安装目录。

1、首先需要powershell的执行环境

2、导入Lync模块

3、执行启用Lync用户的命令

以上代码在控制台程序中运行通过,但放在IIS运行,就会出现权限不足的情况。

如果执行成功就不会有任何的返回值。如果失败就会返回错误信息。

第二种方式

RunspaceConfiguration config = RunspaceConfiguration.Create();
Runspace myRs = RunspaceFactory.CreateRunspace(config);
myRs.ApartmentState = System.Threading.ApartmentState.STA;
myRs.ThreadOptions = PSThreadOptions.UseCurrentThread;
myRs.Open();
RunspaceInvoke scriptInvoker = new RunspaceInvoke(myRs);
scriptInvoker.Invoke("Set-ExecutionPolicy Unrestricted");
scriptInvoker.Invoke(@"Import-Module Lync");
Pipeline pipeline = myRs.CreatePipeline();
pipeline.Commands.AddScript("Enable-CsUser  -Identity {0}@domain.com -RegistrarPool lyncpool.domain.com -SipAddressType UserPrincipalName");
Collection<PSObject> results = pipeline.Invoke();;

foreach (PSObject obj in results)
{
stringBuilder.Append(obj.ToString());
}

这种方式可以在IIS中运行。

参考文档

http://stackoverflow.com/questions/6266108/powershell-how-to-import-module-in-a-runspace

http://gotspeech.net/blogs/marshallharrison/archive/2011/01/07/calling-powershell-from-c.aspx

http://stackoverflow.com/questions/6568160/error-executing-powershell-commandlets-using-c-sharp/6568919#6568919


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: