我需要将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-ObjectName键的哈希表添加到Expression来实现的。在Expression关键字内,脚本块用于构建新字符串,该字符串将Domain添加到管道中每个用户的SamAccountName属性(由自动变量$_表示)。

这样的结果将是一个具有两个属性的对象:SamAccountName和FullUserName。

10-06 13:32