Lync Powershell启用组成员

时间:2015-02-28 20:05:50

标签: powershell lync

我正在尝试自动启用企业语音的群组成员,我有以下(我知道的非常粗糙),如果只有一个成员,则可以工作:

$telephoneNumber = Get-ADGroupMember -Identity "LyncEnterpriseVoice" | Get-ADUser -Properties telephoneNumber | Select-Object -ExpandProperty telephoneNumber
$ext = Get-ADGroupMember -Identity "LyncEnterpriseVoice" | Get-ADUser -Properties otherTelephone | Select-Object -ExpandProperty othertelephone
Get-ADGroupMember -Identity "LyncEnterpriseVoice" | foreach {Get-ADUser $_.SamAccountName | foreach {Set-CSuser -identity $_.UserPrincipalname –EnterpriseVoiceEnabled $True –LineUri "tel:$telephoneNumber;ext=$ext"}}

我无法弄清楚如何做一个foreach其他电话和电话号码。有人可以指出我正确的方向。

1 个答案:

答案 0 :(得分:0)

不是一个明确的答案,但应该帮助你:

  • 您连续三次致电 Get-ADGroupMember -Identity" LyncEnterpriseVoice" 。不要这样做 - 它效率低下,如果你每次都没有得到相同的结果,甚至可能导致不一致。只需调用一次并将其分配给变量,然后每次使用该变量。如果你给这个变量一个好名字,这也会使你的代码更具可读性。
  • 了解您想要达到的目标 - 您正在收集哪些对象,它们具有哪些属性以及您想要迭代什么?我几乎无法从你的代码中得到它,而且你似乎也没有对它有深刻的理解。一旦你明白了,剩下的就很容易了。

修改

我不确定你的意思"我得到了我想要的结果"。我很确定你的变量不包含你认为他们做的事情。逐行构建脚本很有帮助 - 检查每个步骤处理的对象。否则你只是做出假设,你不可避免地经常出错。

例如,在第1行中,您似乎获得了一系列电话号码,第2行中有一系列额外的电话号码($ telephoneNumber和$ ext)。但是在第3行中,您使用这些完整的数组而不是单个元素来为每个用户构建LineUri字符串,这可能是正确的。

同样在第3行中,您使用AD用户对象作为输入,然后执行foreach并再次获取每个用户的AD用户对象 - 这是一个明确的信号,表明您不知道正在处理的对象。

例如:

获取我们想要操作的用户,包括电话号码。否则你正在处理三个独立的阵列,并且不知道如何匹配所有东西 - 它只是凌乱。

$users = Get-ADGroupMember -Identity LyncEnterpriseVoice | Get-ADUser -Properties telephoneNumber, othertelephone

让我们看看我们有什么:

$users

好吧,它是一个包含我们需要的所有信息的对象数组,但出于好奇,它们到底是什么类型的对象?

$users[0].GetType()

不出所料,它们是ADUser对象。让我们设置一些属性:

$users | foreach { Set-SCUser -Identity $_.UserPrincipalName –EnterpriseVoiceEnabled $true –LineUri "tel:$($_.telephoneNumber);ext=$($_.othertelephone)" }

请注意字符串中的子表达式$(...) - 这些是必要的,因为否则变量$_将被展开,其余变量将".telephoneNumber"

另外一件事:你写" tel: ...; ext = ......"这是不一致的,看起来很奇怪 - 也许是一个错字?