【问题标题】:How do I add a custom property to "Get-ADUser"?如何将自定义属性添加到“Get-ADUser”?
【发布时间】:2019-06-06 20:07:25
【问题描述】:

我正在尝试使用Get-ADUser 输出从AD 中提取的信息,这相当简单,但是,我正在尝试将Get-Mailbox 中的primarysmtp 地址添加到该数组中,并且遇到了很多问题。

基本上我有:

$newuser = Get-ADUser $Username -properties Name, DisplayName, GivenName, Surname

我希望将自定义属性添加到 $newuser 仅用于输出,而不是实际的 ADUser。

$EXmail = (Get-Mailbox $Username).PrimarySmtpAddress

如何将$EXmail 添加到$newuser? 希望它以某种方式将Email : $EXMail 添加为属性..

试过$newuser | Add-member,没有运气。 我尝试了$newuser.GetEnumerator() 并添加了它,但没有运气。 我希望有一种方法可以使用 GetEnumerator() 执行此操作,只需添加一个键/值,因为在我的脚本中使用它是最简单的。

任何帮助将不胜感激谢谢!

【问题讨论】:

标签: powershell hashtable


【解决方案1】:

Add-Member 应该可以解决这个问题,但您需要 -Force 开关,因为与 Email 作为属性名称存在冲突。

$newuser | Add-Member -MemberType Noteproperty -Name "Email" -Value $EXmail -Force

另一种方法是使用Select-Object,您根本不必更改$newuser 对象。

$newuser | Select-Object Name,DisplayName,GivenName,Surname,@{n="Email";e={$EXMail}}

【讨论】:

  • 谢谢。这绝对可以完成这项工作。我现在唯一的问题是 GetEnumerator() 方法不适用于此对象。可能需要重新编写使用 $_.Key 和 $_.Value 的输出代码。希望不会太难。
【解决方案2】:

这样就可以了:

$newuser = Get-ADUser $Username -properties Name, DisplayName, GivenName, Surname, @{n='PrimarySmtpAddress';e={(Get-Mailbox $_.userprincipalname).PrimarySmtpAddress}}

【讨论】:

  • 当我尝试得到一个错误:Get-ADUser:一个或多个属性无效。参数名称:System.Collections.Hashtable
  • 正如@BillStewart 所建议的,计算的属性应该在管道| Select-Object -Property *,@{n='EXmail';e={(Get-Mailbox $_.userprincipalname).PrimarySmtpAddress}}中使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多