SamAccountName от csv с employeeid - PullRequest
       84

SamAccountName от csv с employeeid

0 голосов
/ 14 апреля 2020

У меня есть этот рабочий скрипт:

    Import-CSV -Path "$home\desktop\Script\fi13.04.20.csv" | ForEach-Object {

    Get-ADUser -Filter "employeeid -like '*$($_.employeeid)*'"  -Properties employeeid | select employeeid,name,SamAccountName

} | Export-CSV "$home\desktop\Script\fi-san-out.csv" -Encoding UTF8 -NoTypeInformation

Я даю ему CSV-файл с employeeid и возвращаю файл с SamAccountName ... Я получаю файл с employeeid и получаю обратно файл с определенными параметрами.

И это улучшенная версия -

$csv = Import-CSV -Path "$home\desktop\Script\fi13.04.20.csv"

$csvOutput = "$home\desktop\Script\fi-san-out.csv"

$object = @()

foreach($employee in $csv){

    $ADUserObject = Get-ADUser -Filter "employeeID -eq '$($employee.employeeID)'" -Properties samAccountName, displayName ,employeeID  -ErrorAction SilentlyContinue

    if($ADUserObject){

        $object += New-Object psobject -Property @{

            displayName = $ADUserObject.displayName

            samAccountName = $ADUserObject.SamAccountName

            employeeID = $ADUserObject.employeeID

        }

    }else{

        Write-Host "No employee found for $($employee.employeeId)" -ForegroundColor Red

    }

}

if($object){

    $object | Select-Object displayName, samAccountName, employeeID | Export-Csv -Path $csvOutput -Delimiter "," -Encoding UTF8 -NoTypeInformation

}


Первая версия дает гораздо больше результатов, потому что, если employeeID содержит ошибку ", например, employeeID в CSV 12345 и employeeID в ActiveDirectory 123456 ", это дает результат. В улучшенной версии выдает ошибку с любым неточным идентификатором. Вопрос в том, как изменить улучшенную версию так, чтобы она давала результат даже с ошибкой (как в примере)? Я только начинаю изучать PS и с помощью нее написал улучшенную версию.

1 Ответ

0 голосов
/ 14 апреля 2020

Результат

$csv = Import-CSV -Path "$home\desktop\Script\ID.csv"

$csvOutput = "$home\desktop\Script\tz-san-out.csv"

$object = @()

foreach($employee in $csv){

    $ADUserObject = Get-ADUser -Filter "employeeID -like '*$($employee.employeeID)*'" -Properties samAccountName, displayName ,employeeID  -ErrorAction SilentlyContinue

    if($ADUserObject){

        $object += New-Object psobject -Property @{

            displayName = $ADUserObject.displayName

            samAccountName = $ADUserObject.SamAccountName

            employeeID = $ADUserObject.employeeID

        }

    }else{

        Write-Host "No employee found for $($employee.employeeId)" -ForegroundColor Red

    }

}

if($object){

    $object | Select-Object displayName, samAccountName, employeeID | Export-Csv -Path $csvOutput -Delimiter "," -Encoding UTF8 -NoTypeInformation

}
...