我有以下问题:
我有一个与Get-ADUser的查询,并且有要获取的特定字段(仅测试查询)
$AllADUsers = get-aduser -Identity m.mustermann -Properties * | select mail, title, l, GivenName, Surname, company, department, mobile
另外,我必须添加一些静态字段,以便将语言或注释方式添加到CSV中,为此我需要一些变量:
$Language = "german"
$Comment = ""
$Link = ""
$gender = ""
$exportto = "C:\Temp\Export01.csv"
比我想用定界符“:”导出有序UTF8 CSV中的所有条目。我做了一个foreach,但总是会出错或列表不完整-我向您展示我的代码(但我有错误)
Foreach ($ADUser in $AllADUsers) {
$MailAddress = $ADUser.mail
$FullName = "$ADUser.GivenName" + "$ADUser.Surname"
$Title = $AdUser.Title
$Location = $ADUser.l
$Comment = $Comment
$Link = $Link
$MobilePhone = $ADUser.mobile
$Language = $Language
$Divison = $ADUser.Department
$GivenName = $ADUser.GivenName
$Surname = $ADUser.Surname
}
$ADUser | Export-CSV -Path $exportto -NoTypeInformation -Delimiter ":" -Encoding UTF8
你能帮助我吗?
导出必须具有排序列表,并且不包含“”,并且必须按此顺序。
谢谢。最高
您的代码不起作用,主要是因为您要创建一系列最终不使用的变量。
要输出为CSV,您需要收集具有属性而不是单个变量的对象。一种非常优雅的方法是使用[PsCustomObject]
语法创建那些对象,同时设置属性的顺序将弥补最终输出文件中的顺序。
使用冒号作为分隔符并不常见,当其他应用程序需要阅读和理解这一点时,可能会惹上麻烦,但这取决于您。
另一件事是,您似乎主要使用LDAP属性名,其中PowerShell将大多数属性映射到更友好的属性名(例如“ City”,它映射到LDAP“ l”)。
您的代码已修改:
# Get-ADUSer already returns these properties by default:
# DistinguishedName, Enabled, GivenName, Name, ObjectClass, ObjectGUID, SamAccountName, SID, Surname, UserPrincipalName
# your hardcoded static variables:
$Language = "german"
$Comment = ""
$Link = ""
$gender = ""
$exportto = "C:\Temp\Export01.csv"
# these are the extra properties you want to fetch
$userprops = 'EmailAddress','Title','Company','City','Department','MobilePhone'
# if you want this for all users, remove "-Identity 'm.mustermann'" and use "-Filter *" instead
$result = Get-ADUser -Identity 'm.mustermann' -Properties $userprops | ForEach-Object {
# output an object to be collected in variable $result
# the order in which you put them also determines the field order in the CSV
[PsCustomObject]@{
MailAddress = $_.EmailAddress
FullName = $_.DisplayName
Title = $_.Title
Company = $_.Company
Location = $_.City
Comment = $Comment # static field
Link = $Link # static field
MobilePhone = $_.MobilePhone
Language = $Language # static field
Department = $_.Department
GivenName = $_.GivenName
Surname = $_.Surname
}
}
$result | Export-CSV -Path $exportto -NoTypeInformation -Delimiter ":" -Encoding UTF8
关于Export-Csv
:
Export-Csv
将始终引用所有内容,无论是标题还是数据字段。
简单地尝试删除CSV文件中的所有引号会冒着在字段顺序中未对准的风险,并使csv无法使用。
在PowerShell版本7中,您可以选择使用parameter -UseQuotes AsNeeded
,但是对于较旧的版本,可以使用我的功能ConvertTo-CsvNoQuotes安全地执行此操作
由于此代码都是关于获取广告信息的,因此我看不到为什么要在此处构造FullName。只需使用在AD中设置的DisplayName属性,就像上面的代码一样
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句