我需要将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文件,但未进行任何更改。
答案 0 :(得分:0)
您可以使用称为“计算属性”的技术来执行此操作。这是我们通过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。