PowerShell-查找具有特定广告属性的广告用户

PowerShell-查找具有特定广告属性的广告用户,powershell,active-directory,Powershell,Active Directory,大家好,欢迎关注这篇文章的人。 一如既往,非常感谢您的时间和帮助,我不认为您的帮助是理所当然的。 你们是救生员 我有一个csv表单,里面填充了不同的值,这些值被设置为我的用户具有的特定自定义属性。我们将此值称为“costumattribute” 我使用csv中的一个属性值对PS行进行了测试: Get-ADUser -Filter 'costumattribute -like "+999999999"' | Select-Object samaccountname 运行这一

大家好,欢迎关注这篇文章的人。 一如既往,非常感谢您的时间和帮助,我不认为您的帮助是理所当然的。 你们是救生员

我有一个csv表单,里面填充了不同的值,这些值被设置为我的用户具有的特定自定义属性。我们将此值称为“costumattribute”

我使用csv中的一个属性值对PS行进行了测试:

Get-ADUser -Filter 'costumattribute -like "+999999999"' | Select-Object samaccountname

运行这一行确实给了我想要的结果,显示了用户的SamAccountName 在其拥有的“costumattribute”中设置了值“+99999999”

我希望根据以下要求继续执行命令脚本:

  • 应从csv(导入csv)读取值。Csv将包含以下内容: A列:列中列出的不同“costumattribute”值
通过此操作,我希望导出一个CSV文件,其中包含以下数据:

  • 每个用户的SamAccount名称,与每个特定行中找到的“costumattribute”匹配 在A列中,在导入的CSV文件上

  • 重要信息-我需要导出的文件,以便在导出的csv中为每个未找到的值添加空行。 并且不要跳过它,这样导出的csv文件将包含完全相同数量的 行作为导入的csv,以供以后比较


谢谢大家!

首先,不使用
-like
运算符将执行与
-eq
相同的操作

如果您的csv输入文件与以下内容类似:

ColumnA,ColumnB
-6666666,BlahBlah
+7777777,BlahBlahBlah
-8888888,BlahBlahBlahBlah
+9999999,BlahBlahBlahBlahBlah
然后,类似于下面的内容将生成我认为您需要的csv文件:

$attribute = 'costumattribute' 
Import-Csv -Path 'D:\Test\attributes.csv' | ForEach-Object {
    $attribValue = $_.ColumnA
    $accountName = (Get-ADUser -Filter "$attribute -eq '$attribValue'" -Properties $attribute).SamAccountName
    "" | Select-Object @{Name = 'SamAccountName'; Expression = {$accountName -join '; '}},
                       @{Name = $attribute; Expression = {$attribValue}}
} | Export-Csv -Path 'D:\Test\users_attributes.csv' -NoTypeInformation

至于最后一个重要的要求:如果多个用户具有该自定义属性值,该怎么办?是否所有这些用户都应在输出中的相同
SamAccountName
列中结束,还是在单独的记录行中结束?。如果是后者,则生成的CSV可能比原始输入文件有更多的行。.你好,Theo,我在输出CSV文件中没有得到任何结果。有一件事我没有提到,可能是因为与使用“+”值的EXCEL.CSV类型文件冲突吗?如前所述,我的属性包含“+”。另外,我正在考虑使用TXT文件尝试另一种方法,我们可以尝试使用TXT文件的get内容语法吗?关于重复问题,我能想到的唯一的副本是空白。/null。我现在不会担心那么多。如果我认为有必要处理此问题,我将进行更新。@sj1986您是否在
Get ADUser
上收到任何错误消息?。Excel可以在导入时使用
+999999
等值执行奇怪的操作。要强制Excel将其视为文本,您可以在其前面加上撇号
或制表符
“`t”
,对不起,我不太了解,但可能我不明白,我应该在哪里有值名,我在这一行的第一行“$attribute='costumattribute'”上做了更改,我刚刚插入了我实际上希望使用的属性名称,但是代码中还有其他地方我也应该更改为我自己的值吗?@sj1986当然,只有
导入Csv
导出Csv
的路径。然后,如果要获取的属性值的输入csv文件具有不同的列标题,则应相应地更改该列标题。(
ColumnA
只是一个例子,所以使用真实的列名)。此外,如果实际列标题中有空格,则需要将其引用为
$.'column A'
其工作状态。非常感谢。我将第一个列标题名称更改为“ColumnA”,并按照您的建议在每个值前面使用“'”字符,开头带有“+”。唯一的问题是,excel通过给出类似“9.72557E+11”的内容来表现“在输出文件的b列上。当我选择单元格时,我可以在公式框中看到实际的数字。无论如何,要修正的是,它将以正常方式显示实际值?