将列添加到现有文件

add columns to existing file

我从文件 ID 导入并基于此 ID 我正在尝试从 AD 获取信息...并将此信息作为原始文件中的列插入...这是代码:

$import = Import-Csv C:\Temp\coputerstatus.csv
Foreach ($item in $import) {
$user = Get-ADUSer -Identity $item.ID
#$item = New-Object psobject
$item | Add-Member -MemberType NoteProperty -Name "office" -Value $user.office
$item | Add-Member -MemberType NoteProperty -Name "title" -Value $user.title
$item | Add-Member -MemberType NoteProperty -Name "displayname" -Value $user.name
} #foreach
$import | Export-Csv C:\temp\my.csv

但效果不是很好..我成功插入 headers 但值为空(,)

我也想得到同样的帮助

谢谢

Get-ADUser 和其他活动目录 cmdlet 的操作有点滑稽。当您请求 ADUser object Get-ADuser 时,只有 returns 可用属性的一小部分。 Office 和 title 在此默认集中不可用。要得到你想要的东西,请将 -属性 参数添加到 Get-ADUser 并在通常 returns

的默认值之外询问 title 和 office
$user = Get-ADUSer -Identity $item.ID -Property Title, Office

如果您想检索所有可能的属性,请使用星号

$user = Get-ADUSer -Identity $item.ID -Property *

听起来您可能没有从 Get-ADUser 返回任何用户对象。查看 csv 文件中 ID 列中的内容。手动检查您从 import-csv 命令返回的内容

$import = Import-Csv C:\Temp\coputerstatus.csv
$import | gm

确保您在该列表中有一个 ID 属性。如果是这样,请继续检查您的对象是否具有您期望的 ID 值

$import.ID

如果一切正常,请尝试使用这些 ID 之一并手动 运行 Get-ADuser 命令将 $item.ID 替换为实际 ID 之一。

Get-ADUSer -Identity TESTID -Property Title, Office

你有什么回报吗?

两种方式...您可以像这样使用 splatting 将每个属性的所有属性转储到 CSV 中...

$import = Import-Csv C:\Temp\coputerstatus.csv
$myUsers = @()
Foreach ($item in $import) {
    $user = Get-ADUSer -Identity $item.ID -Properties *
    [pscustomobject]$MyItem = @{
        "userProps" = $user
    }
    $myUsers += $MyItem.Values
} #foreach
$myUsers | Export-Csv 'C:\temp\my.csv' -NoTypeInformation

或者您可以 select 您关心的特定属性,例如...

$import = Import-Csv C:\Temp\coputerstatus.csv
$myUsers = @()
Foreach ($item in $import) {
    $user = Get-ADUSer -Identity $item.ID -Properties *
    [pscustomobject]$MyItem = @{
        "DisplayName" = $user.Name
        "Office" = $user.office
        "Title" = $user.title
    }
    $myUsers += $MyItem.Values
} #foreach
$myUsers | Export-Csv 'C:\temp\my.csv' -NoTypeInformation