【发布时间】:2015-11-29 04:02:12
【问题描述】:
我目前正在使用一些 PowerShell 来更新 Active Directory 用户属性。该脚本将从 CSV 读取更新后的属性。
我想要实现的是遍历用户并将每个用户属性与存储在 CSV 中的值进行比较。如果 CSV 属性值与用户的 Active Directory 属性不匹配,我想更新 Active Directory 中的值
目前我可以选择一个用户并使用以下方式显示所有属性:
Get-ADUser -Filter "UserPrincipalName -eq '$($upn)'" -Properties * -SearchBase 'DC=core,DC=com'
我正在努力的是能够遍历每个用户的所有属性并将它们与该用户的 CSV 值进行比较。
这是我正在使用的 sn-p:
# Import CSV into variable $users
$users = Import-Csv -Path 'C:\PowerShell\AD\UserUpdates.csv'
# Loop through each user
foreach ($user in $users) {
#Search in specified OU and Update existing attributes
$userproperties = Get-ADUser -Filter "UserPrincipalName -eq '$($user.UserPrincpalName)'" -Properties * -SearchBase 'DC=core,DC=com'
}
有谁知道循环遍历用户的所有用户配置文件属性的方法?
任何帮助或指导将不胜感激?
更新
好吧,再进一步,我已经取得了进展,但我认为这不是实现这一目标的最干净的方式。
$userproperties = Get-ADUser -Filter "UserPrincipalName -eq '$($upn)'" -Properties * -SearchBase 'DC=core,DC=com' | Select-Object Name,Created, LastLogon,GivenName,SurName,DisplayName,DistinguishedName,UserPrincipleName
这允许我选择以下项目:
$userproperties.DisplayName
但是使用这种方法,我需要列出我希望使用的每个属性。我希望能够遍历所有属性。也许我可以将我希望使用的所有属性放入一个数组并循环遍历它?
【问题讨论】:
标签: powershell csv active-directory