Powershell 管道属性

Powershell 管道属性

我正在尝试阅读 Outlook 日程安排中的约会。
基本上,我想做的是选择某个日期范围内最常见的 4 个约会,主题为 DONE;然后删除第一个分号后的所有内容。
我已经取得了很大进展,但我有两个问题:

  1. 我无法过滤主题。日期过滤器可以工作;但只能保留包含 DONE 的约会;看来我遇到了问题?
  2. 我怎样才能删除 : (分号) 后面的所有内容?我以为我可以快速完成类似的事情,$_.subject.substring(0,$_.subject.IndexOf(':'))但我不知道将其放在哪里。
    $outlook = new-object -com Outlook.Application
    $calendar = $Outlook.session.GetDefaultFolder(9)

    $calendar.items | Where {$_.start -gt [datetime]'01/1/2020' -and $_.end -lt [datetime]'01/31/2020'  -and $_.Suject -like '*Done*'} | group-object -property subject -noelement | sort-object count -Descending | Where-object count -gt 1 

答案1

我没有外表,但我想您的过滤器问题是拼写错误……

$outlook = new-object -com Outlook.Application
$calendar = $Outlook.session.GetDefaultFolder(9)

$calendar.items |
   Where {$_.start -gt [datetime]'01/1/2020' -and 
          $_.end -lt [datetime]'01/31/2020'  -and 
          $_.Subject -like '*Done*'} |
Group -property subject -noelement |
   Where count -gt 1 |
      Sort Count -Descending

不确定要将文本尾随分号放到哪里...

选项:

$calendar.items | ForEach{
    $_.Subject = $_.Subject.Split(';')[0]
} |
    Where {$_.Start...

或者:

...
   Where count -gt 1 |
      Sort Count -Descending | ForEach{
          $_.Name = $_.Name.Split(';')[0]
}

相关内容