CSV var as 表达式为空,显示为{}
CSV var as expression is empty, shown as {}
我遇到了一个小问题。我有一个带有一些名字的 CSV。我需要获取这些用户的电子邮件地址,因此我创建了一个小脚本,可以在 AD 中找到具有该名字和姓氏的用户。
在那之后,我想将它导出到一个新的 CSV 文件,但保留第一个 CSV 文件中的 phone-numbers,因此它也可以在新的 CSV 导出中使用。
最后一部分似乎不起作用。在输出中,该表达式显示为 {}.
有人可以帮助我吗?
$csv = import-csv -path C:\users\da6\desktop\UsersZonderEmail.csv
$output = @()
foreach ($i in $csv) {
$givenname = $i.Voornaam
$lastname = $i.Achternaam
$number = $i.IpPhone
$output += try {Get-ADUser -Filter {givenname -eq $givenname -and surname -eq $lastname} | select Name, UserPrincipalName, @{ name="ipphone"; expression=$number}} catch {}
}
基本上,您的代码有什么问题是您忘记了计算 属性.
的 expression
开头括号 {
另请注意 -Filter
应该是 字符串 ,而不是脚本块。
最后,使用 +=
添加到数组是一个坏习惯,因为 整个 数组需要在每次添加时在内存中重建。
最好让 PowerShell 从循环中收集值:
$csv = Import-Csv -Path 'C:\users\da6\desktop\UsersZonderEmail.csv'
$output = foreach ($item in $csv) {
Get-ADUser -Filter "GivenName -eq '$($item.Voornaam)' -and Surname -eq '$($item.Achternaam)'" -Properties EmailAddress |
Select-Object Name, UserPrincipalName, @{ Name="ipphone"; Expression = {$item.IpPhone}}, EmailAddress
}
# output to new CSV file
$output | Export-Csv -Path 'C:\users\da6\desktop\UsersMetEmail.csv' -NoTypeInformation
我遇到了一个小问题。我有一个带有一些名字的 CSV。我需要获取这些用户的电子邮件地址,因此我创建了一个小脚本,可以在 AD 中找到具有该名字和姓氏的用户。
在那之后,我想将它导出到一个新的 CSV 文件,但保留第一个 CSV 文件中的 phone-numbers,因此它也可以在新的 CSV 导出中使用。
最后一部分似乎不起作用。在输出中,该表达式显示为 {}.
有人可以帮助我吗?
$csv = import-csv -path C:\users\da6\desktop\UsersZonderEmail.csv
$output = @()
foreach ($i in $csv) {
$givenname = $i.Voornaam
$lastname = $i.Achternaam
$number = $i.IpPhone
$output += try {Get-ADUser -Filter {givenname -eq $givenname -and surname -eq $lastname} | select Name, UserPrincipalName, @{ name="ipphone"; expression=$number}} catch {}
}
基本上,您的代码有什么问题是您忘记了计算 属性.
的expression
开头括号 {
另请注意 -Filter
应该是 字符串 ,而不是脚本块。
最后,使用 +=
添加到数组是一个坏习惯,因为 整个 数组需要在每次添加时在内存中重建。
最好让 PowerShell 从循环中收集值:
$csv = Import-Csv -Path 'C:\users\da6\desktop\UsersZonderEmail.csv'
$output = foreach ($item in $csv) {
Get-ADUser -Filter "GivenName -eq '$($item.Voornaam)' -and Surname -eq '$($item.Achternaam)'" -Properties EmailAddress |
Select-Object Name, UserPrincipalName, @{ Name="ipphone"; Expression = {$item.IpPhone}}, EmailAddress
}
# output to new CSV file
$output | Export-Csv -Path 'C:\users\da6\desktop\UsersMetEmail.csv' -NoTypeInformation