我有来自两个不同域的用户列表。这些列表采用 CSV 格式,我只关心 SAMAccountName,这是这些 CSV 中的一个字段。
我正在使用的代码目前是:
$domain1 = Import-CSV C:\Scripts\Temp\domain1.xxx.org.csv | Select-Object SAMAccountName
$domain2 = Import-CSV C:\Scripts\Temp\domain2.xxx.org.csv | Select-Object SAMAccountName
Compare-Object ($domain1) ($domain2)
这仅以这种格式返回少数结果(不准确):
@{samaccountname=SomeUser} =>
显然,Compare-Object 不会将对象评估为字符串。我如何使这项工作?
给定示例 CSV 文件“domain1.xxx.org.csv”,其内容为:
我们可以看到如何
Import-Csv
使用标题将文本转换为 PSCustomObject:过滤
Select-Object SAMAccountName
结果如下:如果你想比较两个 PSCustomObjects 的 NoteProperty,因为我们不只是评估一个字符串,你只需要告诉
Compare-Object
你想要比较哪个属性:实现相同效果的另一种方法是在选择对象中使用 -ExpandProperty:
在几乎所有情况下,当我只是使用 Select-Object 选择一个属性时,-ExpandProperty 都会得到我真正想要的东西——在本例中,是原始字符串。