PowerShell - 导入 CSV、读取列值、使用列值查询 AD、使用查询的 AD 值添加新列
PowerShell - Import CSV, Read Column Value, Use Column Value to Query AD, Add New columns with Queried AD Values
我有一个包含以下 header 名称的 CSV 文件:
姓名、日期、所有者
我想使用 PowerShell
- 导入包含 header 值“名称”、“日期”、“所有者”、“额外”的 File1.csv
- 读取“所有者”列(包含 samaccountnames)并使用它来查询 AD 以查找与每个用户关联的“部门、分部”属性。
- 创建两个名为“部门”和“部门”的新列,然后将 CSV 导出到新的 CSV (file2.csv)
这是我目前的代码:
$file1 = Import-csv -path "C:\temp\File1.csv"
ForEach ($record in $file1) {
$getAttributes = Get-ADUser -Filter $record.Owner | Select-Object division,department
$record | Add-Member -MemberType NoteProperty -Name "Division" -Value $getAttributes.Division
$record | Add-Member -MemberType NoteProperty -Name "Department" -Value $getAttributes.Department
$record | Export-Csv -Path C:\temp\file2.csv -Encoding UTF8 -NoTypeInformation -Append
}
我尝试了不同的变体,但到目前为止没有任何效果。如有任何帮助,我们将不胜感激!
您的代码的两个主要问题是:
-Filter $record.Owner
不是 ActiveDirectory Filter. 的有效语法
Get-ADUser
不 return 具有属性 Department 和 Division 的对象,除非您特别要求查询它们 (-Properties Department, Division
).
Import-csv -Path "C:\temp\File1.csv" | ForEach-Object {
$usr = Get-ADUser -LDAPFilter "(samaccountname=$($_.Owner))" -Properties Department, Division
if(-not $usr) {
# if the user could not be found skip it
Write-Warning "'$($_.Owner)' could not be found..."
return
}
# recreate this object (`$_`) with 2 new properties, `Division` and `Department`
$_ | Select-Object *, @{N='Division';E={$usr.Division}}, @{N='Department';E={$usr.Department}}
} | Export-Csv -Path C:\temp\file2.csv -Encoding UTF8 -NoTypeInformation
我有一个包含以下 header 名称的 CSV 文件:
姓名、日期、所有者
我想使用 PowerShell
- 导入包含 header 值“名称”、“日期”、“所有者”、“额外”的 File1.csv
- 读取“所有者”列(包含 samaccountnames)并使用它来查询 AD 以查找与每个用户关联的“部门、分部”属性。
- 创建两个名为“部门”和“部门”的新列,然后将 CSV 导出到新的 CSV (file2.csv)
这是我目前的代码:
$file1 = Import-csv -path "C:\temp\File1.csv"
ForEach ($record in $file1) {
$getAttributes = Get-ADUser -Filter $record.Owner | Select-Object division,department
$record | Add-Member -MemberType NoteProperty -Name "Division" -Value $getAttributes.Division
$record | Add-Member -MemberType NoteProperty -Name "Department" -Value $getAttributes.Department
$record | Export-Csv -Path C:\temp\file2.csv -Encoding UTF8 -NoTypeInformation -Append
}
我尝试了不同的变体,但到目前为止没有任何效果。如有任何帮助,我们将不胜感激!
您的代码的两个主要问题是:
-Filter $record.Owner
不是 ActiveDirectory Filter. 的有效语法
Get-ADUser
不 return 具有属性 Department 和 Division 的对象,除非您特别要求查询它们 (-Properties Department, Division
).
Import-csv -Path "C:\temp\File1.csv" | ForEach-Object {
$usr = Get-ADUser -LDAPFilter "(samaccountname=$($_.Owner))" -Properties Department, Division
if(-not $usr) {
# if the user could not be found skip it
Write-Warning "'$($_.Owner)' could not be found..."
return
}
# recreate this object (`$_`) with 2 new properties, `Division` and `Department`
$_ | Select-Object *, @{N='Division';E={$usr.Division}}, @{N='Department';E={$usr.Department}}
} | Export-Csv -Path C:\temp\file2.csv -Encoding UTF8 -NoTypeInformation