从 csv 文件创建对象数组的问题
Issue creating an array of objects from a csv file
我对 Powershell 还很陌生,所以这可能是一个菜鸟错误,但我正在尝试获取仅包含用户显示名称的 CSV 文档,查询 AD 以获取所需信息,并将该信息填充到对象属性中使用哈希 table。
这是我现在拥有的
$Path = "C:\Scripts\Generate-CSRSpreadsheets\Roster-Jpay.csv"
$Table = Import-csv -Path $Path -Header EmployeeDisplayName
$Array = @()
$ADUser = Get-ADUser -Properties DisplayName,Manager -Filter {DisplayName -eq $_.EmployeeDisplayname}
ForEach($User in $Table){
$Object = New-Object PSObject -Property @{
DisplayName = $ADUser.DisplayName
GivenName = $ADUser.GivenName
Surname = $ADUser.Surname
Email = $ADUser.Mail
}
$Array += $Object
}
在我看来它应该可以正常工作,但是当我检查我的输出时它看起来像这样:
Example Output Image
假设在这个例子中我有 9 个用户,但它只输出 csv 中最后一个用户的信息。我一直在研究这段代码,但我看不出它有什么问题。任何帮助将不胜感激。
谢谢
您需要将 Get-ADUser
移到循环内:
$Path = "C:\Scripts\Generate-CSRSpreadsheets\Roster-Jpay.csv"
$Table = Import-csv -Path $Path -Header EmployeeDisplayName
$Array = @()
ForEach($User in $Table){
$ADUser = Get-ADUser -Filter "DisplayName -eq '$($User.EmployeeDisplayName)'" -Properties DisplayName,Manager
$Object = New-Object PSObject -Property @{
DisplayName = $ADUser.DisplayName
GivenName = $ADUser.GivenName
Surname = $ADUser.Surname
Email = $ADUser.Mail
}
$Array += $Object
}
我对 Powershell 还很陌生,所以这可能是一个菜鸟错误,但我正在尝试获取仅包含用户显示名称的 CSV 文档,查询 AD 以获取所需信息,并将该信息填充到对象属性中使用哈希 table。
这是我现在拥有的
$Path = "C:\Scripts\Generate-CSRSpreadsheets\Roster-Jpay.csv"
$Table = Import-csv -Path $Path -Header EmployeeDisplayName
$Array = @()
$ADUser = Get-ADUser -Properties DisplayName,Manager -Filter {DisplayName -eq $_.EmployeeDisplayname}
ForEach($User in $Table){
$Object = New-Object PSObject -Property @{
DisplayName = $ADUser.DisplayName
GivenName = $ADUser.GivenName
Surname = $ADUser.Surname
Email = $ADUser.Mail
}
$Array += $Object
}
在我看来它应该可以正常工作,但是当我检查我的输出时它看起来像这样:
Example Output Image
假设在这个例子中我有 9 个用户,但它只输出 csv 中最后一个用户的信息。我一直在研究这段代码,但我看不出它有什么问题。任何帮助将不胜感激。
谢谢
您需要将 Get-ADUser
移到循环内:
$Path = "C:\Scripts\Generate-CSRSpreadsheets\Roster-Jpay.csv"
$Table = Import-csv -Path $Path -Header EmployeeDisplayName
$Array = @()
ForEach($User in $Table){
$ADUser = Get-ADUser -Filter "DisplayName -eq '$($User.EmployeeDisplayName)'" -Properties DisplayName,Manager
$Object = New-Object PSObject -Property @{
DisplayName = $ADUser.DisplayName
GivenName = $ADUser.GivenName
Surname = $ADUser.Surname
Email = $ADUser.Mail
}
$Array += $Object
}