使用 Powershell 将启用和禁用的 AD 用户(在两个不同的文件中)导出到 CSV

Export Enabled and Disabled AD Users (in two different files) to CSV with Powershell

我需要使用这些属性分别启用和禁用用户:

但是我在检索禁用用户时输入正确的属性时遇到问题。你能检查并更正下面的脚本吗?另外,我需要检索具有相同属性的已启用用户。

Import-Module ActiveDirectory
Search-ADAccount –AccountDisabled -UsersOnly |
    Select -Property Name,SamAccountName,EmailAddress |
    Export-Csv "C:\DisabledADUsers.csv" -NoTypeInformation -Encoding UTF8

Search-ADAccount returns 只是用户属性的一个子集。通过 Get-ADUser 管道搜索结果以获取所有属性并通过 `Select-Object:

限制输出
$props = 'Name', 'DisplayName', 'EmailAddress', 'Description', 'Enabled'

Search-ADAccount –AccountDisabled -UsersOnly |
    Get-ADUser -Properties $props |
    Select $props |
    Export-Csv "C:\DisabledADUsers.csv" -NoTypeInformation -Encoding UTF8

注意没有 properties/attributes "Full Name" 或 "AccountStatus"。如果你想要自定义属性,你必须自己创建它们 calculated properties.

Search-ADAccount –AccountDisabled -UsersOnly |
    Get-ADUser -Properties Name,DisplayName,EmailAddress,Description,Enabled |
    Select-Object @{n='Full Name';e={$_.Name}},
        DisplayName, EmailAddress, Description,
        @{n='AccountStatus';e={@('Disabled','Enabled')[([int]$_.Enabled)]}} |
    ...

但是,由于您需要启用用户和禁用用户(只是在单独的文件中),因此单独枚举它们没有意义。只需调用 Get-ADUser 并将结果附加到相应的文件。

Get-ADUser -Filter * -Properties Name,DisplayName,EmailAddress,Description,Enabled |
    Select-Object @{n='Full Name';e={$_.Name}},
        DisplayName, EmailAddress, Description,
        @{n='AccountStatus';e={@('Disabled','Enabled')[([int]$_.Enabled)]}} |
    ForEach-Object {
        $csv = '{0}ADUsers.csv' -f $_.AccountStatus
        $_ | Export-Csv $csv -Append -NoType -Encoding UTF8
    }