arrays - 比较对象返回无效结果

标签 arrays powershell compare compareobject

如果我错过了一项社会规范,则首先在stackoverflow上发表文章,以便提前道歉。

我在PowerShell中有一个数组,其中包含数千个对象。每个对象具有属性(例如用户名,登录时间,他们登录的计算机等)的标准内容。然后,我用名称以A开头的用户从第一个数组中分离出少量对象:

$Array2 = $Array1 | where-object Username -like '*\a*'

这按预期工作。

我想建立一个仅包含$ Array1中不在$ Array2中的对象的第三个数组。换句话说,只有用户名不以A开头的用户组成的数组。
这似乎是要走的路:
$Array3 = compare-object $Array1 $Array2 | select-object -expandproperty InputObject

期望:
$Array3 | where-object Username -like '*\a*'

结果一无所获

我得到的是很多结果。奇怪的是,如果我查看每个数组的.count,则数学计算出结果。 Array1减去Array2等于Array3。因此,它正在删除正确数量的对象,而不是预期的对象。我在这里做错了什么?由于我正在从要比较的确切数组中提取数据,因此我想不出其他任何条件,因此搜索该条件将返回意外的匹配。在比较之前,我还尝试按相同的属性对每个数组进行排序,因为我掌握了,但是按预期无法解决问题。

提前致谢!

最佳答案

简单的方法是执行相同的-like分配,但使用相反的运算符-notlike例如:

$Array2 = $Array1 | where-object Username -like 'a*'
$Array3 = $Array1 | where-object Username -notlike 'a*'

注意:

(不确定匹配问题是否为错字:'*\a*'),匹配项应为a*,并且在“a”字符后仅加一个星号。您想将所有以“a”和“*”开头的内容都匹配(例如,仅匹配“Alex”,而不匹配“Brad”)。

关于arrays - 比较对象返回无效结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61392605/

相关文章:

c - 缓冲区在堆栈上是什么样子

powershell - Powershell-读取csv并写入SharePoint 2010项目。 1百万个项目…慢

将服务器重启划分为每周一次的算法

Python:比较两个字符串并返回它们共有的最长段

c++ - 成员函数可以通过哪些方式相互比较?

perl - 如何比较两个文本文件并删除匹配的内容并传递到 perl 中的输出?

c - 结构体数组替换其自身的值

c - 在结构中初始化 typedef 数组

javascript - 是否可以在 javascript/jquery 中创建一个空的多维数组?

wpf - PowerShell 和 WPF GUI 卡住