Как я могу записать эти операции учетной записи Active Directory в файл CSV? - PullRequest
1 голос
/ 22 февраля 2020

Я хочу создать файл .csv для каждой учетной записи AD, которая отключена и перемещена с именем $account.Distingushed перемещения объекта и именем $OU.Distinguished, из которого объект перемещен.

Каков наилучший способ справиться с этим?

$OUs | Where-Object{$excludeOUS -notcontains $_.DistinguishedName  } | Foreach-Object {
        $params = @{}
        $params = @{
            SearchBase = [String]$_.DistinguishedName
            SearchScope = [String]"OneLevel"
            AccountInactive = $true
            TimeSpan = ([timespan]$days)
            Verbose = $true
        }   
        If($users) { 
            $params.Add("UsersOnly",$true)
        }
        ElseIf($computers) { 
            $params.Add("ComputersOnly",$true)
        }
        $accounts = Search-ADAccount @params
        foreach ($account in $accounts) {
            $params = @{}
            $params = @{
                Identity = [string]$account.DistinguishedName
                Verbose = $true
            }
            If ($noDisable -notcontains $account.Name -and $account.ObjectClass -eq "User" ) {
                Disable-ADAccount @params @whatIf

                $params.Add("Description",$description)

                Set-ADUser @params @WhatIf

                $params.Remove('Description')
                $params.Add("TargetPath", 'OU=Disabled Users,DC=test,DC=local')

                Move-ADObject @params @WhatIf
                # Somehow Export $account.DistinghuisedName and $OU.Distinguished name to .csv???
            }
            ElseIf ($noDisable -notcontains $account.Name -and $account.ObjectClass -eq "Computer") {

                Disable-ADAccount @params @whatIf

                $params.Add("Description",$description)

                Set-ADComputer @params @WhatIf

                $params.Remove('Description')
                $params.Add("TargetPath", 'OU=Disabled Computers,DC=test,DC=local')

                Move-ADObject @params @WhatIf
                # Somehow Export $account.DistinghuisedName and $OU.Distinguished name to .csv???

            }
        }
    }

Ответы [ 3 ]

0 голосов
/ 22 февраля 2020

Вы даже можете экспортировать это прямо как хеш-таблицу:

@{"Account" = $accountDistinguishedName; "OU" = $ouDistinguishedName}.GetEnumerator() | Export-Csv "$($csvpath)\$($accountname)" -NoTypeInformation
0 голосов
/ 23 февраля 2020

Я понял это!

$acctsCSV = @(
    [pscustomobject]@{
        Account = [string]$account.Name
        OU = [string]$OU.DistinguishedName
    }
)
$acctsCSV | Export-Csv -Path $filePath -NoTypeInformation
0 голосов
/ 22 февраля 2020

Вы можете попробовать что-то вроде приведенного ниже кода (не проверено).

Установить переменные для csvPath, ouDistinguishedName и accountDistinguishedName.

Вы можете добавить эти переменные в объект и экспортировать в csv. Я использовал $ account.Name в качестве имени csv, но вы можете использовать что-то еще.

$csvPath = "c:\temp"
$OUs | Where-Object { $excludeOUS -notcontains $_.DistinguishedName } | Foreach-Object {
    $ouDistinguishedName = $_.DistinguishedName
    $params = @{ }
    $params = @{
        SearchBase      = [String]$_.DistinguishedName
        SearchScope     = [String]"OneLevel"
        AccountInactive = $true
        TimeSpan        = ([timespan]$days)
        Verbose         = $true
    }   
    If ($users) { 
        $params.Add("UsersOnly", $true)
    }
    ElseIf ($computers) { 
        $params.Add("ComputersOnly", $true)
    }
    $accounts = Search-ADAccount @params
    foreach ($account in $accounts) {
        $accountDistinguishedName = $account.DistinguishedName
        $accountName = $account.Name
        $params = @{ }
        $params = @{
            Identity = [string]$account.DistinguishedName
            Verbose  = $true
        }
        If ($noDisable -notcontains $account.Name -and $account.ObjectClass -eq "User" ) {
            Disable-ADAccount @params @whatIf

            $params.Add("Description", $description)

            Set-ADUser @params @WhatIf

            $params.Remove('Description')
            $params.Add("TargetPath", 'OU=Disabled Users,DC=test,DC=local')

            Move-ADObject @params @WhatIf
            # Somehow Export $account.DistinghuisedName and $OU.Distinguished name to .csv???

            $objectProperty = @{}
            $objectProperty.Add('Account',$accountDistinguishedName)
            $objectProperty.Add('OU',$ouDistinguishedName)
            $object = New-Object -TypeName psobject -Property $objectProperty
            $object | Export-Csv "$csvPath\$accountName.csv" -NoTypeInformation
        }
        ElseIf ($noDisable -notcontains $account.Name -and $account.ObjectClass -eq "Computer") {

            Disable-ADAccount @params @whatIf

            $params.Add("Description", $description)

            Set-ADComputer @params @WhatIf

            $params.Remove('Description')
            $params.Add("TargetPath", 'OU=Disabled Computers,DC=test,DC=local')

            Move-ADObject @params @WhatIf
            # Somehow Export $account.DistinghuisedName and $OU.Distinguished name to .csv???

            $objectProperty = @{}
            $objectProperty.Add('Account',$accountDistinguishedName)
            $objectProperty.Add('OU',$ouDistinguishedName)
            $object = New-Object -TypeName psobject -Property $objectProperty
            $object | Export-Csv "$csvPath\$accountName.csv" -NoTypeInformation
        }
    }
}
...