通过 PowerShell 检查本地 AD 中的活动用户 - 我如何通过 CSV 导入来执行此操作?

问题描述 投票:0回答:1

我有一个应用程序中存在的大量用户列表,我需要检查所有这些用户是否都存在于本地 Active Directory 中。我不可能将每个单独的用户 ID 复制/粘贴到 AD 中并检查它们是否存在。

我得到的电子表格按 sAMAccountName 列出了用户,所以我需要通过 CSV 导入列表,让 PowerShell 检查每个用户是否存在,然后报告每个用户是否“活跃”或“删除”。

如果我能让 PowerShell 将其作为列表返回或将数据导出到新的 CSV 文件中,那就更好了。

最简单的方法是什么?我已经做到了以下几点,但我被卡住了!

Import-CSV "\\tsclient\C:\Users\abc\123.csv" | foreach-object {Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0) {     Write-Warning -Message "User $SamAccountName does not exist." }

我知道这在运行之前是不正确的,只会出错。我对数组的了解还不够多,无法检查这是否会使它变得更简单。

总的来说,过程和最终目标似乎很简单,我就是不能完全到达那里!

谢谢!

powershell active-directory powershell-ise userid
1个回答
0
投票

看来你想要的是在一个有序的 CSV 文件中输出,你可以双击以在 Excel 中打开三个(如果你需要的话可以更多)属性:

假设CSV中的字段称为

SamAccountName

如果该字段有不同的标题,请改用它

$result = Import-CSV "\\tsclient\C$\Users\abc\123.csv" | ForEach-Object {
    $user = Get-ADUser -Filter "SamAccountName -eq '$($_.SamAccountName)'"
    if ($user) { $user | Select-Object Name, SamAccountName, Enabled  }
    else { 
        Write-Warning -Message "User '$($_.SamAccountName)' does not exist."
        # output an error object
        "" | Select-Object Name, @{Name = 'SamAccountName'; Expression = {$_.SamAccountName}}
                                 @{Name = 'Enabled'; Expression = { 'User does not exist' }}
    }
}

# now you can output the results on screen
$result | Format-Table -AutoSize

# or save this to a CSV file you can open in Excel
$result | Export-Csv -Path 'X:\Somewhere\Users.csv' -NoTypeInformation -UseCulture
© www.soinside.com 2019 - 2024. All rights reserved.