gpt4 book ai didi

PowerShell 计数不适用于单个匹配项

转载 作者:行者123 更新时间:2023-12-02 20:25:31 24 4
gpt4 key购买 nike

我正在运行以下 PowerShell 代码来检索收件箱中的匹配项,并想知道为什么我的过滤器在只有一个匹配项的情况下不起作用。这是查找和过滤匹配项的代码;

 Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null 
$olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type]
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace("MAPI")
$inbox = $namespace.getDefaultFolder($olFolders::olFolderInBox)
$filter = (%{$inbox.items | Where {$_.SenderName -match ‘JoeUser’ -and
$_.UnRead -eq $true}})

...当我通过运行 $filter.count 询问匹配项计数时,只要有多个匹配项,我就会得到正确的答案。因此,对于收件箱中只有一条匹配消息的情况,$filter.count 不会返回任何内容,并且后续代码无法处理该消息 - 而且我知道match 选取了匹配的消息,因为我可以从 $filter 中查看它

谁能弄清楚为什么这个计数对 $filter 中的单个匹配不起作用?

最佳答案

当赋值的右侧仅返回一个值时,变量不会被转换为数组。

之前有很多与此相关的问题:

可以通过添加“@”来修复,如下所示:

$filter = @(%{$inbox.items | Where {$_.SenderName -match ‘JoeUser’ -and $_.UnRead -eq $true}})

显然,这种行为在 PowerShell v3 中发生了变化:http://arstechnica.com/civis/viewtopic.php?t=1235149

关于PowerShell 计数不适用于单个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38274479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com