【问题标题】:SamAccountName from csv with employeeid来自 csv 的 SamAccountName 和employeeid
【发布时间】:2020-04-14 03:21:21
【问题描述】:

我有这个工作脚本:

    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

我给他一个带有employeeid 的CSV 文件,并有一个带有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 包含错误“例如,CSV 12345 中的employeeID 和ActiveDirectory 123456 中的employeeID”,它会给出结果。 在改进的版本中,任何不准确的 ID 都会引发错误。 问题是如何更改改进的版本,以便即使出现错误也能产生结果(如示例中所示)? 我刚开始学习 PS,在帮助下写了一个改进版。

【问题讨论】:

  • 是否有某些原因不能简单地将第二个代码示例中的 "employeeID -eq '$($employee.employeeID)'" 测试与第一个代码示例中的 "employeeid -like '*$($_.employeeid)*'" 测试交换?
  • 我试试这个。但问题没有解决。
  • 在第二个代码示例中的什么时候代码没有给出您期望的结果......以及实际结果与预期结果有何不同?

标签: powershell powershell-2.0 powershell-3.0 sysadmin


【解决方案1】:

结果

$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

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多