我需要将Active Directory中启用的用户与服务器上的用户配置文件列表进行比较,然后删除同一服务器上的禁用配置文件。
我正在尝试获取每个用户的.csv
列表:一个用于AD,一个用于服务器。
当我获取服务器文件时,配置文件显示为:“domain \ username”,但对于AD文件,我仅获取:“username”,因此无法进行比较。
理想情况下,当我获得添加域的AD文件时,我想更改用户名。我试图做这样的事情:
$Name = $_.SamAccountName
ForEach-Object {
Get-ADUser -Filter 'enabled -eq $true' | select-object SamAccountName
$Name = "DOMAIN\ + $Name"
}
$users | Export-Csv c:\USEREnabled.csv -Encoding UTF8
它将返回带有所有SamAccountName的.csv文件,但未做任何更改。
最佳答案
您可以使用称为“计算属性”的技术来执行此操作。这是我们通过Select-Object
为对象生成新属性的地方。这是如何为您工作的:
Get-ADUser -Filter 'enabled -eq $true' |
Select-Object SamAccountName,@{Name='FullUserName';Expression={"YOURDOMAIN\$($_.SamAccountName)"}} |
Export-CSV C:\Temp\UsersEnabled.csv -Encoding UTF8
这是通过将带有
Select-Object
和Name
键的哈希表添加到Expression
来实现的。在Expression
关键字内,脚本块用于构建新字符串,该字符串将Domain添加到管道中每个用户的SamAccountName属性(由自动变量$_
表示)。这样的结果将是一个具有两个属性的对象:SamAccountName和FullUserName。