【发布时间】:2020-11-22 07:07:50
【问题描述】:
好的,我遇到了另一个问题,可能与无法正确存储值有关。最初的想法是获取用户列表并将他们的姓名分成两个值 - givenName 和 sn,以便 Get-ADUser cmdlet 能够通过 -Filter 选项使用它们。
虽然一个好主意并解决了,但我可能忽略了这样一个事实,即当人们有 2 个姓名或姓氏时,这并不是一个真正的选择,因为您无法轻松地将其预测为代码。我发现的另一个选项是属性displayName。由于我们的 displayNames 等于用户的全名,这将是最简单的选择。但是,我似乎无法成功地将 txt 文件中的值存储到变量中以使其工作。
我的代码目前如下所示:
Import-Csv -Path C:\temp\users.txt -header "displayName" |
ForEach-Object{ Get-ADUser -Filter "displayName -like '$($_.displayName)'" -Properties givenName, Surname, SamAccountName
} |
Select-Object givenName, Surname, SamAccountName |
Export-CSV C:\Temp\usersexport.csv -NoTypeInformation -Encoding UTF8
- txt 文件的结构如下:
John Smith Jones
Paula Ridley
Veronica Anne Downing
etc...
所以我们并不是真的在谈论 CSV 文件,而且用户的名字都在单独的一行中。
-
导入工作正常,我认为问题在于从文件中引入拾取值,它既不是实际的字符串,也不是
-Filter选项注册的原因。 -
在上面的代码中,我删除了一个用于存储值的变量,因为即使它存在也没有变化。
-
我也尝试指定
-Delimiter"`n" 以在新的每一行上指定 txt 文件中的值的分隔,但要么我没有使用写入符号,要么它不起作用。 编辑:
运行代码后发生的问题是我导出的 CSV 文件只有以下条目:。我不知道为什么要说实话,无论如何它都不会改变,但是就像我说的那样,txt文件中名称的格式完全有可能是错误的。
如果我理解正确,-Filter 无论如何都会将给定的值运行到一个字符串中,所以我认为 txt 文件名在手之前没有被特别格式化的问题不是什么原因造成的。
【问题讨论】:
标签: database powershell csv active-directory