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=...”这是不一致的,看起来很奇怪- 可能是打字错误?
我正在尝试自动为群组成员启用企业语音,我有以下内容(我知道非常粗略),如果只有一个成员,它就可以工作:
$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=...”这是不一致的,看起来很奇怪- 可能是打字错误?