获取未通过 Set-ADAccountPassword 设置到对象实例的对象引用

问题描述 投票:0回答:1

尝试通过 Set-ADAccountPassword 重置用户密码时收到 NullReference。

我提出这个要求:

Get-ADUser -Filter * -SearchBase "DC=domain,DC=hu" -Properties OfficePhone, Mobile, SID | Where-Object { $_.OfficePhone -eq "888888" -or $_.Mobile -eq "888888" } | Select-Object SID | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "HvUpJP13" -Force) -PAssThru | Unlock-ADAccount

我收到错误:

+ ... bject SID | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-Secu ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Microsoft.Activ...ement.ADAccount:ADAccount) [Set-ADAccountPassword], NullReference 
   Exception
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.NullReferenceException,Microsoft.ActiveDirectory.Management.Commands. 
   SetADAccountPassword

同时,如果我删除 Set-ADAccountPassword,则可以针对此请求定位用户。

Get-ADUser -Filter * -SearchBase "DC=domain,DC=hu" -Properties OfficePhone, Mobile, SID | Where-Object { $_.OfficePhone -eq "888888" -or $_.Mobile -eq "888888" } | Select-Object SID 

SID                                          
---                                          
S-1-5-21-1684329652-2275368447-683485574-8603

为什么请求没有完成?

powershell active-directory
1个回答
0
投票

Set-ADAccountPassword
期待来自管道的
ADAccount
,可以是以下之一:

  • Microsoft.ActiveDirectory.Management.ADUser
  • Microsoft.ActiveDirectory.Management.ADComputer
  • Microsoft.ActiveDirectory.Management.ADServiceAccount

请参阅输入部分。

ADAccount
也可以由以下之一构造:

  • 一个响亮的名字
  • GUID(对象GUID)
  • 安全标识符(objectSid)
  • SAM 帐户名称 (sAMAccountName)

参见

-Identity
参数详情

当您在管道中使用

Select-Object SID
时,对原始
ADUser
实例
的引用会丢失,导致您看到错误。只需从管道中删除此语句即可解决问题。另外,您还可以删除:

Where-Object { $_.OfficePhone -eq '888888' -or $_.Mobile -eq '888888' }

并使用

AD Filter
使您的查询更加高效:

# Note:
#   `telephoneNumber` is the LDAP DisplayName of `officePhone`
#   `mobile` is the LDAP DisplayName` of `MobilePhone`
Get-ADUser -LDAPFilter '(|(telephoneNumber=888888)(mobile=888888))' -SearchBase 'DC=domain,DC=hu' |
    Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString -AsPlainText 'HvUpJP13' -Force) -PassThru |
    Unlock-ADAccount
© www.soinside.com 2019 - 2024. All rights reserved.