与ADObject属性相关的PowerShell输出

时间:2018-01-28 18:05:18

标签: powershell properties active-directory

我在搜索和指定返回输出时尝试保留Microsoft.ActiveDirectory.Management.ADAccount对象;但是,在选择输出时,会填充其他字段。问题:

  1. 为什么会这样?
  2. 是否有方法,命令或过滤器只返回指定的参数? (不是下面示例中列出的额外字段)
  3. 有没有办法从ADAccount对象中删除属性? (本例中为$ a)
  4. 对于select方法,有没有办法保留原始对象格式? (我不想要一个表,但仍需要稍后引用该对象)
  5. 运行以下命令:

    $a = Get-ADUser $targetPerson -Properties Department, EmailAddress, Office, OfficePhone
    

    返回:

    Department        : ****
    DistinguishedName : CN=1111,OU=2222,OU=3333,OU=4444,DC=5555,DC=6666
    EmailAddress      : ****@mail.com
    Enabled           : ****
    GivenName         : ****
    Name              : ****
    ObjectClass       : user
    ObjectGUID        : ****
    Office            : ****
    OfficePhone       : ****
    SamAccountName    : ****
    SID               : ****
    Surname           : ****
    UserPrincipalName : ****
    

2 个答案:

答案 0 :(得分:0)

Get-ADUser具有它始终返回的默认属性集,包括例如可分辨名称,SID和帐户名称。参数-Properties用于指定cmdlet应返回的其他属性,因为默认属性集只是所有可用属性的一小部分。

要将Get-ADUser的输出限制为一组特定属性,您需要通过Select-Object管道输出:

$props = 'Department', 'EmailAddress', 'Office', 'OfficePhone'
$a = Get-ADUser $targetPerson -Properties $props |
     Select-Object $props

当然,这会将ADAccount对象转换为自定义对象(PSCustomObject),但我不认为可以解决这个问题。

答案 1 :(得分:0)

Microsoft.ActiveDirectory.Management.ADAccount对象从其创建的类继承成员。以下是一些继承的成员 - Name,ObjectClass,ObjectGUID,SID和SamAccountName。

More about AD Object

我认为你不能创建一个没有那些继承成员的Microsoft.ActiveDirectory.Management.ADAccount对象。

但是如果您的项目可以接受PSCustomObject,那么将$ a传递给Select-object。

$a | Select-Object -Property Department, EmailAddress, Office, OfficePhone