gpt4 book ai didi

powershell - 通过 ADSI 提取 AD 用户信息

转载 作者:行者123 更新时间:2023-12-05 08:43:24 26 4
gpt4 key购买 nike

如何通过 ADSI LDAP 为用户获取这些属性,这些属性来自 Get-ADUser,我需要 ADSI 的等价物。

  • 启用
  • 密码永不过期
  • 密码过期
  • 姓名
  • SamAccountName
  • 邮件
  • 上次设置密码

我的目标是为所有用户查询整个域并获取这些属性。

我尝试使用 Get-ADUser cmdlet,它在查询用户时超时。

Get-ADUser -Filter * -Properties enabled,PasswordNeverExpires,passwordexpired,Name,SamAccountName,mail,passwordla‌​stset -server sc |
where {$_.Enabled -eq "True"} |
where { $_.PasswordNeverExpires -eq $false } |
where { $_.passwordexpired -eq $false } |
Select Name,SamAccountName,mail,
@{l='PasswordExpires';e={$_.passwordlastset+(Get-ADDefa‌​ultDomainPasswordPolicy).MaxPasswordAge}},
@{l='DaystoExpire';e={(New-TimeSpan -Start (get-date) -end ($_.passwordlastset+(Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge)).days}}

上述命令适用于几个用户,但如果我查询大量用户,它会提供无效的枚举上下文。

最佳答案

属性 SamAccountNameNameMail 对应于同名的 AD 属性。 PasswordLastSet 派生自属性 pwdLastSet。其他 3 个属性(EnabledPasswordNeverExpiresPasswordExpired)是 userAccountControl 中的标志。属性。

使用带有 LDAP 查询的 adsisearcher 对象在 AD 中搜索用户对象,然后构建具有所需属性的自定义对象:

$ACCOUNTDISABLE       = 0x000002
$DONT_EXPIRE_PASSWORD = 0x010000
$PASSWORD_EXPIRED = 0x800000

$searcher = [adsisearcher]"(&(objectClass=user)(objectCategory=person))"
$searcher.FindAll() | % {
$user = [adsi]$_.Properties.adspath[0]
New-Object -Type PSCustomObject -Property @{
SamAccountName = $user.sAMAccountName[0]
Name = $user.name[0]
Mail = $user.mail[0]
PasswordLastSet = [DateTime]::FromFileTime($_.Properties.pwdlastset[0])
Enabled = -not [bool]($user.userAccountControl[0] -band
$ACCOUNTDISABLE)
PasswordNeverExpires = [bool]($user.userAccountControl[0] -band
$DONT_EXPIRE_PASSWORD)
PasswordExpired = [bool]($user.userAccountControl[0] -band
$PASSWORD_EXPIRED)
}
}

话虽如此,为什么您要解决所有这些麻烦,而不是简单地使用 Get-ADUser 来达到相同的目的?

Import-Module ActiveDirectory

$attributes = 'SamAccountName', 'Name', 'Mail', 'PasswordLastSet', 'Enabled',
'PasswordNeverExpires', 'PasswordExpired'

Get-ADUser -Filter * -Properties $attributes | select $attributes

关于powershell - 通过 ADSI 提取 AD 用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30710755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com