Lync Powershell 启用组成员

Lync Powershell enable group members

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

$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 otherTelephone 和 telephoneNumber。谁能给我指出正确的方向。

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

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

编辑:

我不确定 "I get the results I want" 是什么意思。我很确定您的变量不包含您认为的内容。逐行构建脚本很有帮助 - 检查每一步您正在处理的对象。否则你只是做出假设,你不可避免地会经常出错。

例如,在第 1 行中,您似乎得到了一组 telephone 数字,在第 2 行中,得到了一组附加 phone 数字($telephoneNumber 和 $分机)。但是在第 3 行中,您使用这些完整的数组而不是单个元素来为每个用户构建 LineUri 字符串,这不可能是正确的。

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

例如:

获取我们要操纵的用户,包括电话号码phone。否则,您将处理三个独立的数组,并且不知道如何匹配所有内容 - 太乱了。

$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=...”这是不一致的,看起来很奇怪- 可能是打字错误?