好的,所以我对Powershell有点陌生,我正在尽力而为,但似乎无法做到这一点。
设置目录的方式是每个组织都有自己的“密码重置组”。我将基于事件日志条目“目录服务更改”运行计划的任务设置。脚本的工作是在组中查找成员,并将其密码重置为他们的employeeNumber,让用户在下次登录时更改密码,然后从组中删除该用户。我似乎在语法正确方面遇到问题。
Try {
$GroupDN = (Get-ADGroup -Filter {Name -like '*Password Reset Group*'}).DistinguishedName
}
Catch {
Write-Host "Unable to locate group: $Group because ""$($Error[0])""" -ForegroundColor Red
Exit
}
ForEach ($User in (Get-ADUser -Filter * -Properties MemberOf,employeeNumber))
{ If ($User.MemberOf -contains $GroupDN)
{ $password = "$($_.employeeNumber)new!" | ConvertTo-SecureString -AsPlainText -Force
Set-ADAccountPassword -Identity $User -NewPassword $password -Reset
Remove-ADGroupMember -Identity "$GroupDN" -Members $User
}
}
答案 0 :(得分:0)
使用@AdminOfThings提供给我的信息。我能够编写我想要的代码。花了很多时间在这里,但是这里是:
ForEach ($GroupDN in (Get-ADGroup -Filter {Name -like '*Password Reset Group*'}).DistinguishedName)
{ ForEach ($User in (Get-ADUser -Filter * -Properties MemberOf,employeeNumber))
{ If ($User.MemberOf -contains $GroupDN)
{ $password = $User.employeeNumber | ConvertTo-SecureString -AsPlainText -Force
Set-ADAccountPassword -Identity $User -NewPassword $password -Reset
Set-ADUser -Identity $User -ChangePasswordAtLogon $true -PasswordNeverExpires $false
Remove-ADGroupMember -Identity "$GroupDN" -Members $User -Confirm:$false
}
}
}
答案 1 :(得分:0)
很高兴看到您提出了自己的答案,但是您可以通过使用...来简化此操作。
Get-ADPrincipalGroupMembership
# get function / cmdlet details
(Get-Command -Name Get-ADPrincipalGroupMembership ).Parameters
Get-help -Name Get-ADPrincipalGroupMembership -Full
Get-help -Name Get-ADPrincipalGroupMembership -Online
Get-help -Name Get-ADPrincipalGroupMembership -Examples
# Example 2: Get group memberships for the Administrator
Get-ADPrincipalGroupMembership -Identity Administrator
...,其中列出了用户所属的所有组。
因此,您的调整可能就是这样...
Get-ADUser -Filter * |
ForEach{
# "`n--- Processing user $($PSItem.SamAccountName) ---`n"
If ($TargetGroup = (Get-ADPrincipalGroupMembership -Identity $PSItem.SamAccountName) -match 'Password Reset Group')
{
$password = "$($PSItem.employeeNumber)new!" |
ConvertTo-SecureString -AsPlainText -Force
Set-ADAccountPassword -Identity $PSItem.SamAccountName -NewPassword $password -Reset
Remove-ADGroupMember -Identity $TargetGroup.SamAccountName -Members $PSItem.SameAccountName
}
}
至于……
好的,所以我对Powershell有点陌生
…很好,但是您应该花一些时间在PowerShell上,以限制/避免猜测,误解,沮丧,不良习惯,错误等,这是您的明智之举,您将继续遇到(即使我们中最有经验的人也会这样做并互相学习)。我们拥有无数免费的免费资源供您利用。
在YouTube,MVA,MSDN Channel9上直播所有视频培训。 使用可以为您编写代码的工具,以后可以根据需要进行保存和调整。尤其是涉及到ADDS时。
Active Directory Administrative Center: Getting Started
Active Directory Administrative Center
Step-By-Step: Utilizing PowerShell History Viewer in Windows Server 2012 R2
免费的Books和references