Lync PowerShell:为用户启用企业语音

Posted

技术标签:

【中文标题】Lync PowerShell:为用户启用企业语音【英文标题】:Lync PowerShell: Enable a User for Enterprise Voice 【发布时间】:2013-06-11 11:25:44 【问题描述】:

我有以下代码用于使用 Power Shell 命令启用 Lync 用户。代码分两步,第一步是启用用户,第二步是启用企业语音。

 using (Pipeline pipe = runspace.CreatePipeline())
 
     var enableCsUser = new Command("Enable-CsUser");
     enableCsUser.Parameters.Add("Identity", upn);
     enableCsUser.Parameters.Add("SipAddress", "sip:" + sipAddress);
     enableCsUser.Parameters.Add("RegistrarPool", LyncPool);
     pipe.Commands.Add(enableCsUser);
     InvokePipeline(pipe);
 
 using (Pipeline pipe = runspace.CreatePipeline())
 
     var setCsUser = new Command("Set-CsUser");
     setCsUser.Parameters.Add("Identity", upn);
     setCsUser.Parameters.Add("EnterpriseVoiceEnabled", true);
     pipe.Commands.Add(setCsUser);
     InvokePipeline(pipe);
 

第一部分工作正常,用户已启用。第二部分在InvokePipeline(pipe); 引发异常,我没有明确的理由。我关注了以下文章here、here和here。

异常详情如下。

System.Management.Automation.RemoteException: Management object not found for identity "lfigo@fabrekam.cloudyCloud.com".
at System.Management.Automation.PowerShell.CoreInvoke[TOutput](IEnumerable input, PSDataCollection`1 output, PSInvocationSettings settings)
at System.Management.Automation.PowerShell.Invoke(IEnumerable input, PSInvocationSettings settings)
at System.Management.Automation.PowerShell.Invoke(IEnumerable input)
at System.Management.Automation.RemotePipeline.Invoke(IEnumerable input)
at System.Management.Automation.Runspaces.Pipeline.Invoke()

我错过了什么吗?

【问题讨论】:

【参考方案1】:

这是我使用的代码。工作正常...请注意,传递一个简单的 ...Parameters.Add("EnterpriseVoiceEnabled", true) 不起作用。必须将 CommandParameter 嵌入到参数中。

Pipeline pipeline = runspace.CreatePipeline();
Command enable_telephone = new Command(@"Set-CsUser");
pipeline.Commands.Add(enable_telephone);
enable_telephone.Parameters.Add("Identity", Account1.Text);
enable_telephone.Parameters.Add("LineUri", "tel:" + phone_number);
enable_telephone.Parameters.Add(new CommandParameter("EnterpriseVoiceEnabled", true));
pipeline.Invoke();

【讨论】:

我正在使用以下内容:ps.AddParameter("EnterpriseVoiceEnabled", "$True"); 达到相同效果。 OP 没有说明他的情况,但如果您远程运行代码(而不是在 Lync 服务器上),仅使用“$true”将不起作用。您必须使用另一个内部的参数定义才能远程执行。

以上是关于Lync PowerShell:为用户启用企业语音的主要内容,如果未能解决你的问题,请参考以下文章

PowerShell 运维菜鸟系列-04-批量-启用用户-启用企业语音-设置分机号(项目中)

使用 C# 为 LYNC 2010 启用用户

为 Lync 响应组启用呼叫转接

使用 Powershell 最大化 Lync 窗口?

在 Lync Client 2010 中更改设置

Lync 项目经验-41-查询-启用-Lync-用户-详细信息(项目中)